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