plays-hub/app/services/create_spotify_activity.rb

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