Files
redux-scraper/app/helpers/domain_source_helper.rb
Dylan Knutson 5c71fc6b15 Add avatar downloading to Bluesky scan user job
- Modified process_user_avatar method to enqueue Domain::UserAvatarJob for avatar downloads
- Made Domain::UserAvatarJob concrete (removed abstract!) with generic HTTP client
- Added smart avatar management: handles new avatars, URL changes, and pending re-enqueues
- Added comprehensive test coverage for all avatar scenarios
- Updated HTTP mocking in specs to use HttpClientMockHelpers pattern
- Fixed caused_by_entry handling for chained HTTP requests
- Updated .cursorrules with proper HTTP mocking documentation including caused_by_entry: :any

The job now automatically downloads user avatars when scanning Bluesky users.
2025-08-09 01:23:16 +00:00

30 lines
782 B
Ruby

# typed: strict
module DomainSourceHelper
extend T::Sig
sig { returns(T::Hash[String, String]) }
def self.source_name_to_class_name
{
"furaffinity" => "Domain::Post::FaPost",
"e621" => "Domain::Post::E621Post",
"inkbunny" => "Domain::Post::InkbunnyPost",
"bluesky" => "Domain::Post::BlueskyPost",
}
end
sig { returns(T::Array[String]) }
def self.all_source_names
source_name_to_class_name.keys
end
sig { params(list: T::Array[String]).returns(T::Array[String]) }
def self.source_names_to_class_names(list)
list.map { |source| source_name_to_class_name[source] }.compact
end
sig { params(list: T::Array[String]).returns(T::Boolean) }
def self.has_all_sources?(list)
list.sort == all_source_names.sort
end
end