From 7aa7b66374a90bc33d4873376ec43211d1ff1224 Mon Sep 17 00:00:00 2001 From: mgabdev <> Date: Wed, 22 Jul 2020 13:51:08 -0500 Subject: [PATCH] Updated PreviewCard, FetchLinkCardService, FetchOEmbedService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Updated: - PreviewCard, FetchLinkCardService, FetchOEmbedService to work better --- app/models/preview_card.rb | 6 +++++- app/services/fetch_link_card_service.rb | 4 ++-- app/services/fetch_oembed_service.rb | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb index f26ea0c7..d774a31a 100644 --- a/app/models/preview_card.rb +++ b/app/models/preview_card.rb @@ -26,7 +26,7 @@ class PreviewCard < ApplicationRecord IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze - LIMIT = 1.megabytes + LIMIT = 4.megabytes self.inheritance_column = false @@ -45,6 +45,10 @@ class PreviewCard < ApplicationRecord before_save :extract_dimensions, if: :link? + def missing_image? + width.present? && height.present? && image_file_name.blank? + end + def save_with_optional_image! save! rescue ActiveRecord::RecordInvalid diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index b7bc997c..90514c38 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -30,7 +30,7 @@ class FetchLinkCardService < BaseService RedisLock.acquire(lock_options) do |lock| if lock.acquired? @card = PreviewCard.find_by(url: @url) - process_url if @card.nil? || @card.updated_at <= 2.weeks.ago + process_url if @card.nil? || @card.updated_at <= 1.weeks.ago || @card.missing_image? else raise GabSocial::RaceConditionError end @@ -47,7 +47,7 @@ class FetchLinkCardService < BaseService def process_url @card ||= PreviewCard.new(url: @url) - Request.new(:get, @url).perform do |res| + Request.new(:get, @url).add_headers('Accept' => 'text/html').perform do |res| if res.code == 200 && res.mime_type == 'text/html' @html = res.body_with_limit @html_charset = res.charset diff --git a/app/services/fetch_oembed_service.rb b/app/services/fetch_oembed_service.rb index 10176cfb..87f2dcf9 100644 --- a/app/services/fetch_oembed_service.rb +++ b/app/services/fetch_oembed_service.rb @@ -64,7 +64,7 @@ class FetchOEmbedService def html return @html if defined?(@html) - @html = @options[:html] || Request.new(:get, @url).perform do |res| + @html = @options[:html] || Request.new(:get, @url).add_headers('Accept' => 'text/html').perform do |res| res.code != 200 || res.mime_type != 'text/html' ? nil : res.body_with_limit end end