From 5b67f2ad9ae4b0809bffd734933318338fe97a1b Mon Sep 17 00:00:00 2001 From: Dylan Knutson Date: Fri, 25 Jul 2025 00:41:28 +0000 Subject: [PATCH] show tor hle in ui, test thumbnail enqueue --- .devcontainer/docker-compose.yml | 1 - .../job/fa_post_fur_archiver_post_file_job.rb | 8 +++++++- app/models/domain/post/fa_post.rb | 17 +++++++++++++++++ .../posts/fa/_section_title_details.html.erb | 10 ++++++++-- .../fa_post_fur_archiver_post_file_job_spec.rb | 8 ++++++++ 5 files changed, 40 insertions(+), 4 deletions(-) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 69613894..a19b026e 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -100,7 +100,6 @@ services: tor: image: dockurr/tor - container_name: tor volumes: - devcontainer-redux-tor-config:/etc/tor - devcontainer-redux-tor-data:/var/lib/tor diff --git a/app/jobs/job/fa_post_fur_archiver_post_file_job.rb b/app/jobs/job/fa_post_fur_archiver_post_file_job.rb index 872a0c34..da52d681 100644 --- a/app/jobs/job/fa_post_fur_archiver_post_file_job.rb +++ b/app/jobs/job/fa_post_fur_archiver_post_file_job.rb @@ -13,7 +13,13 @@ class Job::FaPostFurArchiverPostFileJob < Scraper::JobBase sig { override.params(args: T::Hash[Symbol, T.untyped]).returns(T.untyped) } def perform(args) - post = T.cast(args[:post], Domain::Post::FaPost) + post = T.cast(args[:post], T.nilable(Domain::Post::FaPost)) + if post.nil? + post_file = T.cast(args[:post_file], T.nilable(Domain::PostFile)) + fatal_error("no post or post file found, skipping") if post_file.nil? + post = T.cast(post_file.post, T.nilable(Domain::Post::FaPost)) + fatal_error("no post found, skipping") if post.nil? + end # todo - try multiple post files? post_file = diff --git a/app/models/domain/post/fa_post.rb b/app/models/domain/post/fa_post.rb index d4f101ea..58bc46b7 100644 --- a/app/models/domain/post/fa_post.rb +++ b/app/models/domain/post/fa_post.rb @@ -205,4 +205,21 @@ class Domain::Post::FaPost < Domain::Post def tags_for_view keywords.map { |value| TagForView.new(category: :general, value:) } end + + sig { returns(T.nilable(Domain::PostFile)) } + def fur_archiver_post_file + files.to_a.find do |file| + uri = Addressable::URI.parse(file.url_str) + uri.host == "furarchiver.net" + end + end + + sig { returns(T.nilable(Domain::PostFile)) } + def tor_post_file + files.to_a.find do |file| + uri = Addressable::URI.parse(file.url_str) + uri.host == + "g6jy5jkx466lrqojcngbnksugrcfxsl562bzuikrka5rv7srgguqbjid.onion" + end + end end diff --git a/app/views/domain/posts/fa/_section_title_details.html.erb b/app/views/domain/posts/fa/_section_title_details.html.erb index f602ed28..332044bc 100644 --- a/app/views/domain/posts/fa/_section_title_details.html.erb +++ b/app/views/domain/posts/fa/_section_title_details.html.erb @@ -9,10 +9,16 @@ <%= link_to "FuzzySearch", log_entry_path(hle), title: post.fuzzysearch_checked_at&.strftime("%Y-%m-%d %H:%M:%S"), class: "text-blue-600" %> <% end %> - <% if post.tried_from_fur_archiver? %> + <% if (hle = post.fur_archiver_post_file&.log_entry) %> - FurArchiver + <%= link_to "FurArchiver", log_entry_path(hle), title: hle.requested_at&.strftime("%Y-%m-%d %H:%M:%S"), class: "text-blue-600" %> + + <% end %> + <% if (hle = post.tor_post_file&.log_entry) %> + + + <%= link_to "Tor", log_entry_path(hle), title: hle.requested_at&.strftime("%Y-%m-%d %H:%M:%S"), class: "text-blue-600" %> <% end %> <% end %> diff --git a/spec/jobs/fa_post_fur_archiver_post_file_job_spec.rb b/spec/jobs/fa_post_fur_archiver_post_file_job_spec.rb index 0b50643d..65378553 100644 --- a/spec/jobs/fa_post_fur_archiver_post_file_job_spec.rb +++ b/spec/jobs/fa_post_fur_archiver_post_file_job_spec.rb @@ -173,6 +173,14 @@ RSpec.describe Job::FaPostFurArchiverPostFileJob do post.reload expect(post.files.length).to eq(3) end + + it "enqueues the thumbnail job" do + perform_now({ post: post }) + job_args = SpecUtil.enqueued_job_args(Domain::PostFileThumbnailJob) + expect(job_args).to eq( + [{ post_file: post.files.last, caused_by_entry: @log_entries[0] }], + ) + end end end end