29 lines
798 B
Ruby
29 lines
798 B
Ruby
class CreateSpotifyActivity
|
|
attr_accessor :response, :user
|
|
|
|
def initialize(user, spotify_response)
|
|
@response = spotify_response
|
|
@user = user
|
|
end
|
|
|
|
# rubocop:disable Metrics/AbcSize
|
|
def perform
|
|
response['items'].reverse.each do |play|
|
|
activity = new_activity
|
|
activity.item_ref = play['track']['id']
|
|
artist_names = play['track']['artists'].map { |a| a['name'] }
|
|
artists = artist_names.join(', ')
|
|
title = "#{artists} - #{play['track']['name']}"
|
|
activity.item_title = title
|
|
activity.item_length = play['track']['duration'].to_s
|
|
activity.started_at = DateTime.parse(play['played_at'])
|
|
activity.save
|
|
end
|
|
end
|
|
# rubocop:enable Metrics/AbcSize
|
|
|
|
def new_activity
|
|
Activity.new(user: user, platform: 'spotify')
|
|
end
|
|
end
|