@ -29,7 +29,7 @@ class FetchAtomService < BaseService
def perform_request ( & block )
def perform_request ( & block )
accept = 'text/html'
accept = 'text/html'
accept = 'application/activity+json, application/ld+json , application/atom+xml, ' + accept unless @unsupported_activity
accept = 'application/activity+json, application/ld+json ; profile="https://www.w3.org/ns/activitystreams" , application/atom+xml, ' + accept unless @unsupported_activity
Request . new ( :get , @url ) . add_headers ( 'Accept' = > accept ) . perform ( & block )
Request . new ( :get , @url ) . add_headers ( 'Accept' = > accept ) . perform ( & block )
end
end
@ -37,9 +37,11 @@ class FetchAtomService < BaseService
def process_response ( response , terminal = false )
def process_response ( response , terminal = false )
return nil if response . code != 200
return nil if response . code != 200
if response . mime_type == 'application/atom+xml'
response_type = response . headers [ 'Content-type' ]
if response_type == 'application/atom+xml'
[ @url , { prefetched_body : response . body_with_limit } , :ostatus ]
[ @url , { prefetched_body : response . body_with_limit } , :ostatus ]
elsif [ 'application/activity+json' , 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' ] . include? ( response . mime_type )
elsif [ 'application/activity+json' , 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' ] . include? ( response _type)
body = response . body_with_limit
body = response . body_with_limit
json = body_to_json ( body )
json = body_to_json ( body )
if supported_context? ( json ) && equals_or_includes_any? ( json [ 'type' ] , ActivityPub :: FetchRemoteAccountService :: SUPPORTED_TYPES ) && json [ 'inbox' ] . present?
if supported_context? ( json ) && equals_or_includes_any? ( json [ 'type' ] , ActivityPub :: FetchRemoteAccountService :: SUPPORTED_TYPES ) && json [ 'inbox' ] . present?
@ -55,7 +57,7 @@ class FetchAtomService < BaseService
if link_header & . find_link ( %w( rel alternate ) )
if link_header & . find_link ( %w( rel alternate ) )
process_link_headers ( link_header )
process_link_headers ( link_header )
elsif response . mime _type == 'text/html'
elsif response _type == 'text/html'
process_html ( response )
process_html ( response )
end
end
end
end