plays-hub/app/services/create_spotify_activity.rb

31 lines
888 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
counts = response["items"].size
Rails.logger.info("Saving #{counts} activities")
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