mirror of https://github.com/mastodon/goldfinger
Goldfinger aborts if webfinger response mime type is an unexpected value it can't parse
This commit is contained in:
parent
b2b1b5c252
commit
f0a7a9baf3
|
@ -1,7 +1,7 @@
|
|||
PATH
|
||||
remote: .
|
||||
specs:
|
||||
goldfinger (1.0.0)
|
||||
goldfinger (1.0.2)
|
||||
addressable (~> 2.4)
|
||||
http (~> 1.0)
|
||||
nokogiri (~> 1.6)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Gem::Specification.new do |s|
|
||||
s.name = 'goldfinger'
|
||||
s.version = '1.0.1'
|
||||
s.version = '1.0.2'
|
||||
s.platform = Gem::Platform::RUBY
|
||||
s.required_ruby_version = '>= 2.0.0'
|
||||
s.date = '2016-02-17'
|
||||
|
|
|
@ -24,6 +24,9 @@ module Goldfinger
|
|||
end
|
||||
|
||||
headers, body = perform_get(url_from_template(template))
|
||||
|
||||
raise Goldfinger::Error, "Invalid response mime type: #{headers.get(HTTP::Headers::CONTENT_TYPE).first}" unless ['application/jrd+json', 'application/xrd+xml'].include?(headers.get(HTTP::Headers::CONTENT_TYPE).first)
|
||||
|
||||
Goldfinger::Result.new(headers, body)
|
||||
rescue HTTP::Error
|
||||
raise Goldfinger::NotFoundError
|
||||
|
@ -43,8 +46,7 @@ module Goldfinger
|
|||
|
||||
raise Goldfinger::NotFoundError if links.empty?
|
||||
|
||||
url = Addressable::Template.new(links.first.attribute('template').value)
|
||||
url.expand({ uri: @uri }).to_s
|
||||
links.first.attribute('template').value.gsub('{uri}', @uri)
|
||||
end
|
||||
|
||||
def domain
|
||||
|
|
|
@ -2,8 +2,8 @@ describe Goldfinger::Client do
|
|||
context 'with HTTPS available' do
|
||||
describe '#finger' do
|
||||
before do
|
||||
stub_request(:get, 'https://quitter.no/.well-known/host-meta').to_return(body: fixture('quitter.no_.well-known_host-meta'))
|
||||
stub_request(:get, 'https://quitter.no/.well-known/webfinger?resource=acct:gargron@quitter.no').to_return(body: fixture('quitter.no_.well-known_webfinger.json'))
|
||||
stub_request(:get, 'https://quitter.no/.well-known/host-meta').to_return(body: fixture('quitter.no_.well-known_host-meta'), headers: { content_type: 'application/xrd+xml' })
|
||||
stub_request(:get, 'https://quitter.no/.well-known/webfinger?resource=acct:gargron@quitter.no').to_return(body: fixture('quitter.no_.well-known_webfinger.json'), headers: { content_type: 'application/jrd+json' })
|
||||
end
|
||||
|
||||
subject { Goldfinger::Client.new('acct:gargron@quitter.no') }
|
||||
|
@ -18,8 +18,8 @@ describe Goldfinger::Client do
|
|||
describe '#finger' do
|
||||
before do
|
||||
stub_request(:get, 'https://quitter.no/.well-known/host-meta').to_raise(HTTP::Error)
|
||||
stub_request(:get, 'http://quitter.no/.well-known/host-meta').to_return(body: fixture('quitter.no_.well-known_host-meta'))
|
||||
stub_request(:get, 'https://quitter.no/.well-known/webfinger?resource=acct:gargron@quitter.no').to_return(body: fixture('quitter.no_.well-known_webfinger.json'))
|
||||
stub_request(:get, 'http://quitter.no/.well-known/host-meta').to_return(body: fixture('quitter.no_.well-known_host-meta'), headers: { content_type: 'application/xrd+xml' })
|
||||
stub_request(:get, 'https://quitter.no/.well-known/webfinger?resource=acct:gargron@quitter.no').to_return(body: fixture('quitter.no_.well-known_webfinger.json'), headers: { content_type: 'application/jrd+json' })
|
||||
end
|
||||
|
||||
subject { Goldfinger::Client.new('acct:gargron@quitter.no') }
|
||||
|
|
Loading…
Reference in New Issue