Sha256: aa0c6c61afd12020f39a3644475262b6e37862a8f20254f93dee7e1d72e4294b

Contents?: true

Size: 813 Bytes

Versions: 2

Compression:

Stored size: 813 Bytes

Contents

module Notu

  class LovedTracks

    include Enumerable

    attr_reader :user_api

    def initialize(user_api)
      raise ArgumentError.new("#{self.class}#user_api must be specified") unless user_api
      @user_api = user_api
    end

    def each
      return unless block_given?
      pages_count = nil
      page = 1
      loop do
        json = JsonDocument.get(user_api.url(limit: 50, method: 'user.getLovedTracks', page:))
        pages_count = json['lovedtracks']['@attr']['totalPages'].to_i
        json['lovedtracks']['track'].each do |track_json|
          artist = track_json['artist']['name'] || next
          title = track_json['name'] || next
          yield(Track.new(artist:, title:))
        end
        page += 1
        break if page > pages_count
      end
      nil
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
notu-5.0.1 lib/notu/loved_tracks.rb
notu-5.0.0 lib/notu/loved_tracks.rb