autoreject check before fetching link preview cards & feeds

staging
multiple creatures 2019-07-22 21:37:11 -05:00
parent 2822fbc443
commit c2e47f5871
3 changed files with 19 additions and 0 deletions

View File

@ -2,9 +2,11 @@
class FetchAtomService < BaseService
include JsonLdHelper
include AutorejectHelper
def call(url)
return if url.blank?
return if autoreject?(url)
result = process(url)
rescue OpenSSL::SSL::SSLError => e
@ -77,4 +79,8 @@ class FetchAtomService < BaseService
def parse_link_header(response)
LinkHeader.parse(response['Link'].is_a?(Array) ? response['Link'].first : response['Link'])
end
def object_uri
nil
end
end

View File

@ -2,6 +2,7 @@
class FetchLinkCardService < BaseService
include UrlHelper
include AutorejectHelper
URL_PATTERN = %r{
( # $1 URL
@ -21,6 +22,7 @@ class FetchLinkCardService < BaseService
@url = sanitize_query_string(@url.to_s)
return if @url.nil?
return if autoreject?(url)
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
@ -174,4 +176,8 @@ class FetchLinkCardService < BaseService
def lock_options
{ redis: Redis.current, key: "fetch:#{@url}" }
end
def object_uri
nil
end
end

View File

@ -1,12 +1,15 @@
# frozen_string_literal: true
class FetchOEmbedService
include AutorejectHelper
attr_reader :url, :options, :format, :endpoint_url
def call(url, options = {})
@url = url
@options = options
return if autoreject?(url)
discover_endpoint!
fetch!
end
@ -68,4 +71,8 @@ class FetchOEmbedService
res.code != 200 || res.mime_type != 'text/html' ? nil : res.body_with_limit
end
end
def object_uri
nil
end
end