class CreateSpotifyActivity attr_accessor :response, :user def initialize(user, spotify_response) @response = spotify_response @user = user end # rubocop:disable Metrics/AbcSize def perform # log some info about the response with status and parts of the body Rails.logger.info("Response status: #{response["status"]}") Rails.logger.info("Response body: #{response["body"]}") 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