plays-hub/app/services/load_plays.rb

54 lines
1.5 KiB
Ruby

class LoadPlays
attr_reader :user
def initialize(user)
@user = user
end
def perform
user.logins.alive.each do |login|
if login.spotify?
update_spotify(login)
elsif login.netflix?
update_netflix(login)
else
puts "login #{login.id}, #{login.type} unknown"
end
end
end
def update_spotify(login)
client = Spotify.new(login)
last_spotify_activity_at = latest_activity_iso(login.platform)
new_activities = client.load_since(last_spotify_activity_at)
create_action = CreateSpotifyActivity.new(user, new_activities)
create_action.perform
rescue StandardError => e
Rails.logger.error(e)
LogLoadFailedWorker.perform_async(login.id)
end
def update_netflix(login)
client = Netflix.new(login)
latest_netflix_activity = latest_activity(login.platform)
new_activites = client.viewingactivity
create_action = CreateNetflixActivity.new(user, latest_netflix_activity, new_activites)
create_action.perform
rescue StandardError => e
Rails.logger.error(e)
LogLoadFailedWorker.perform_async(login.id)
# Rails.logger.info("trying to update shakti")
# ReloadShaktiPath.new.perform
end
def latest_activity(platform)
latest = Activity.where(user: user, platform: platform).order(started_at: :desc).limit(1).last
latest.started_at&.to_datetime if latest.present?
end
def latest_activity_iso(platform)
latest = latest_activity(platform)
latest.strftime('%Q') if latest.present?
end
end