class SpotTracks::Feed

Constants

HOST

Attributes

username[R]

Public Class Methods

new(username) click to toggle source
# File lib/spot_tracks/feed.rb, line 9
def initialize(username)
  @username = username
end

Public Instance Methods

title() click to toggle source
# File lib/spot_tracks/feed.rb, line 13
def title
  return unless valid?
  client.title
end
to_json() click to toggle source
# File lib/spot_tracks/feed.rb, line 34
def to_json
  {
    title: title,
    url: url,
    tracks: tracks.map(&:to_h)
  }.to_json
end
tracks() click to toggle source
# File lib/spot_tracks/feed.rb, line 23
def tracks
  return [] unless valid?
  client.entries.map do |entry|
    SpotTracks::Track.search entry.title
  end.compact
end
url() click to toggle source
# File lib/spot_tracks/feed.rb, line 18
def url
  return unless valid?
  client.url
end
valid?() click to toggle source
# File lib/spot_tracks/feed.rb, line 30
def valid?
  !!client
end

Private Instance Methods

client() click to toggle source
# File lib/spot_tracks/feed.rb, line 44
def client
  @client ||= begin
    feed = Feedjira::Feed.fetch_and_parse(rss_url)
    feed.is_a?(Feedjira::Parser::RSS) ? feed : nil
  end
end
rss_url() click to toggle source
# File lib/spot_tracks/feed.rb, line 51
def rss_url
  "#{HOST}/1.0/user/#{username}/recenttracks.rss"
end