56 lines
1.3 KiB
Ruby
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
|