Files
redux-scraper/app/jobs/domain/fa/job/user_page_job.rb
2025-01-01 03:29:53 +00:00

56 lines
1.3 KiB
Ruby

# typed: true
class Domain::Fa::Job::UserPageJob < Domain::Fa::Job::Base
queue_as :fa_user_page
def perform(args)
init_from_args!(args)
# buggy (sentinal) user
return if @user.id == 117_552 && @user.url_name == "click here"
if !@user.due_for_page_scan? && !@force_scan
logger.warn(
"scanned #{time_ago_in_words(@user.scanned_page_at)}, skipping",
)
return
end
response =
http_client.get(
"https://www.furaffinity.net/user/#{@user.url_name}/",
caused_by_entry: @caused_by_entry,
)
ret, opts =
Domain::Fa::Job::ScanUserUtils.check_disabled_or_not_found(
@user,
response,
)
case ret
when :ok
page = opts[:page]
when :stop
logger.error(opts[:message])
return
when :fatal
fatal_error(opts[:message])
end
Domain::Fa::Job::ScanUserUtils.update_user_fields_from_page(
@user,
page,
response,
)
@user.scanned_page_at = Time.now
@user.save!
logger.info "completed page scan"
ensure
if response && response.status_code == 200
enqueue_jobs_from_found_links(
response.log_entry,
suppress_jobs: [{ job: self.class, url_name: @user.url_name }],
)
end
end
end