Skip to content
Extraits de code Groupes Projets
Non vérifiée Valider ce2ee68b rédigé par Eugen Rochko's avatar Eugen Rochko Validation de GitHub
Parcourir les fichiers

Revert "Fix FetchAtomService content type handling (#9132)" (#9171)

This reverts commit c36a4a16.
parent 50ce347e
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -29,7 +29,7 @@ class FetchAtomService < BaseService
def perform_request(&block)
accept = 'text/html'
accept = 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams", application/atom+xml, ' + accept unless @unsupported_activity
accept = 'application/activity+json, application/ld+json, application/atom+xml, ' + accept unless @unsupported_activity
Request.new(:get, @url).add_headers('Accept' => accept).perform(&block)
end
......@@ -37,11 +37,9 @@ class FetchAtomService < BaseService
def process_response(response, terminal = false)
return nil if response.code != 200
response_type = response.headers['Content-type']
if response_type == 'application/atom+xml'
if response.mime_type == 'application/atom+xml'
[@url, { prefetched_body: response.body_with_limit }, :ostatus]
elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response_type)
elsif ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(response.mime_type)
body = response.body_with_limit
json = body_to_json(body)
if supported_context?(json) && equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && json['inbox'].present?
......@@ -57,7 +55,7 @@ class FetchAtomService < BaseService
if link_header&.find_link(%w(rel alternate))
process_link_headers(link_header)
elsif response_type == 'text/html'
elsif response.mime_type == 'text/html'
process_html(response)
end
end
......
......@@ -60,20 +60,13 @@ RSpec.describe FetchAtomService, type: :service do
it { is_expected.to eq [url, { :prefetched_body => "" }, :ostatus] }
end
context 'content_type is activity+json' do
context 'content_type is json' do
let(:content_type) { 'application/activity+json' }
let(:body) { json }
it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] }
end
context 'content_type is ld+json with profile' do
let(:content_type) { 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' }
let(:body) { json }
it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] }
end
before do
WebMock.stub_request(:get, url).to_return(status: 200, body: body, headers: headers)
WebMock.stub_request(:get, 'http://example.com/foo').to_return(status: 200, body: json, headers: { 'Content-Type' => 'application/activity+json' })
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter