From cb3b52bf416456375679406c502bf190ac53cf0f Mon Sep 17 00:00:00 2001 From: Dylan Knutson Date: Mon, 18 Aug 2025 05:50:49 +0000 Subject: [PATCH] handle 400 response for users from bsky --- app/jobs/domain/bluesky/job/scan_posts_job.rb | 9 +++++++++ app/jobs/domain/bluesky/job/scan_user_job.rb | 17 +++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/jobs/domain/bluesky/job/scan_posts_job.rb b/app/jobs/domain/bluesky/job/scan_posts_job.rb index ec345e5c..8cb99c7e 100644 --- a/app/jobs/domain/bluesky/job/scan_posts_job.rb +++ b/app/jobs/domain/bluesky/job/scan_posts_job.rb @@ -114,6 +114,15 @@ class Domain::Bluesky::Job::ScanPostsJob < Domain::Bluesky::Job::Base posts_scan.update!(log_entry: response.log_entry) if num_pages == 0 num_pages += 1 + if response.status_code == 400 + error = JSON.parse(response.body)["error"] + if error == "InvalidRequest" + logger.error(format_tags("account is disabled / does not exist")) + user.state = "account_disabled" + return + end + end + if response.status_code != 200 fatal_error( format_tags( diff --git a/app/jobs/domain/bluesky/job/scan_user_job.rb b/app/jobs/domain/bluesky/job/scan_user_job.rb index f2db20fe..ce6fa9d6 100644 --- a/app/jobs/domain/bluesky/job/scan_user_job.rb +++ b/app/jobs/domain/bluesky/job/scan_user_job.rb @@ -8,6 +8,11 @@ class Domain::Bluesky::Job::ScanUserJob < Domain::Bluesky::Job::Base logger.push_tags(make_arg_tag(user)) logger.info(format_tags("starting profile scan")) + if user.state_account_disabled? && !force_scan? + logger.info(format_tags("account is disabled, skipping profile scan")) + return + end + if !user.profile_scan.due? && !force_scan? logger.info( format_tags( @@ -19,6 +24,7 @@ class Domain::Bluesky::Job::ScanUserJob < Domain::Bluesky::Job::Base end scan_user_profile(user) + user.scanned_profile_at = Time.zone.now logger.info(format_tags("completed profile scan")) ensure user.save! if user @@ -39,6 +45,15 @@ class Domain::Bluesky::Job::ScanUserJob < Domain::Bluesky::Job::Base user.last_scan_log_entry = response.log_entry profile_scan.update!(log_entry: response.log_entry) + if response.status_code == 400 + error = JSON.parse(response.body)["error"] + if error == "InvalidRequest" + logger.error(format_tags("account is disabled / does not exist")) + user.state = "account_disabled" + return + end + end + if response.status_code != 200 fatal_error( format_tags( @@ -90,8 +105,6 @@ class Domain::Bluesky::Job::ScanUserJob < Domain::Bluesky::Job::Base # Process avatar if present process_user_avatar_url(user, record["avatar"]) if record["avatar"] end - - user.scanned_profile_at = Time.zone.now end sig do