Class: Megalopolis::Subject

Inherits:
Array
  • Object
show all
Includes:
Essentials
Defined in:
lib/megalopolis/scheme.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Essentials

#param_serialize, #send_req

Constructor Details

#initialize(base_url, log) ⇒ Subject

Returns a new instance of Subject.



86
87
88
89
90
91
# File 'lib/megalopolis/scheme.rb', line 86

def initialize(base_url, log)
  @subject = fetch_subject(base_url, log)
  super(subject)
  @base_url = base_url
  @log = @subject.first.log
end

Instance Attribute Details

#base_urlObject (readonly)

Returns the value of attribute base_url.



84
85
86
# File 'lib/megalopolis/scheme.rb', line 84

def base_url
  @base_url
end

#logObject (readonly)

Returns the value of attribute log.



82
83
84
# File 'lib/megalopolis/scheme.rb', line 82

def log
  @log
end

#subjectObject (readonly)

Returns the value of attribute subject.



83
84
85
# File 'lib/megalopolis/scheme.rb', line 83

def subject
  @subject
end

Instance Method Details

#fetch_subject(base_url, log) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/megalopolis/scheme.rb', line 93

def fetch_subject(base_url, log)
  page = send_req(File.join(base_url, "#{log}.json"))
  obj = JSON.parse(page)["entries"]

  indexes = []
  obj.each do |index|
    index["url"] = URI.join(base_url, "#{log}/#{index["id"]}").to_s
    index["log"] = index["subject"]
    index.delete("subject")
    indexes << Index.new(base_url, index)
  end
  return indexes.reverse
end

#latest_logObject



118
119
120
121
# File 'lib/megalopolis/scheme.rb', line 118

def latest_log
  page = send_req(File.join(base_url, "0.json"))
  return JSON.parse(page)["entries"][0]["subject"]
end

#next_pageObject Also known as: next



107
108
109
110
# File 'lib/megalopolis/scheme.rb', line 107

def next_page
  return nil if @log-1 <= 0
  Subject.new(@base_url, @log-1)
end

#prev_pageObject Also known as: prev



113
114
115
# File 'lib/megalopolis/scheme.rb', line 113

def prev_page
  Subject.new(@base_url, @log+1)
end