Module: Notu::Listing

Includes:
Enumerable
Included in:
LovedTracks, MostPlayedTracks, PlayedTracks
Defined in:
lib/notu/listing.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#libraryObject (readonly)

Returns the value of attribute library.



7
8
9
# File 'lib/notu/listing.rb', line 7

def library
  @library
end

Instance Method Details

#initialize(library) ⇒ Object

Raises:

  • (ArgumentError)


9
10
11
12
# File 'lib/notu/listing.rb', line 9

def initialize(library)
  raise ArgumentError.new("#{self.class}#library must be a library, #{library.inspect} given") unless library.is_a?(Library)
  @library = library
end

#page_urlsObject



14
15
16
17
18
# File 'lib/notu/listing.rb', line 14

def page_urls
  (1..pages_count).map do |index|
    library.url(path: path, query: params.merge('page' => index))
  end
end

#pages_countObject



20
21
22
23
# File 'lib/notu/listing.rb', line 20

def pages_count
  document = HtmlDocument.get(library.url(path: path, query: params))
  [1, (document/'ul.pagination-list li.pagination-page').text.split(/\s+/).map(&:to_i)].flatten.compact.max
end

#paramsObject



25
26
27
28
# File 'lib/notu/listing.rb', line 25

def params
  # to be overriden
  {}
end