mirror of
https://github.com/lostisland/faraday.git
synced 2025-08-30 00:03:09 -04:00
Add Faraday::Connection#basic_auth and Faraday::Connection#token_auth for specifying Authorization headers
This commit is contained in:
parent
031d5e1c56
commit
bbab11d606
@ -4,6 +4,11 @@ module Faraday
|
||||
class << self
|
||||
attr_accessor :default_adapter
|
||||
attr_writer :default_connection
|
||||
|
||||
private
|
||||
def method_missing(name, *args, &block)
|
||||
default_connection.send(name, *args, &block)
|
||||
end
|
||||
end
|
||||
|
||||
self.default_adapter = :net_http
|
||||
@ -12,51 +17,6 @@ module Faraday
|
||||
@default_connection ||= Connection.new
|
||||
end
|
||||
|
||||
# use the method signature from Faraday::Connection
|
||||
def self.build(options = {}, &block)
|
||||
default_connection.build(options, &block)
|
||||
end
|
||||
|
||||
def self.get(url = nil, headers = nil, &block)
|
||||
default_connection.get(url, headers, &block)
|
||||
end
|
||||
|
||||
def self.post(url = nil, body = nil, headers = nil, &block)
|
||||
default_connection.post(url, body, headers, &block)
|
||||
end
|
||||
|
||||
def self.put(url = nil, body = nil, headers = nil, &block)
|
||||
default_connection.put(url, body, headers, &block)
|
||||
end
|
||||
|
||||
def self.head(url = nil, headers = nil, &block)
|
||||
default_connection.head(url, headers, &block)
|
||||
end
|
||||
|
||||
def self.delete(url = nil, headers = nil, &block)
|
||||
default_connection.delete(url, headers, &block)
|
||||
end
|
||||
|
||||
def self.in_parallel?
|
||||
default_connection.in_parallel?
|
||||
end
|
||||
|
||||
def self.in_parallel(manager)
|
||||
default_connection.in_parallel(manager)
|
||||
end
|
||||
|
||||
def self.proxy(arg = nil)
|
||||
default_connection.proxy(arg)
|
||||
end
|
||||
|
||||
def self.url_prefix=(url)
|
||||
default_connection.url_prefix = url
|
||||
end
|
||||
|
||||
def self.path_prefix=(value)
|
||||
default_connection.path_prefix = value
|
||||
end
|
||||
|
||||
module AutoloadHelper
|
||||
def register_lookup_modules(mods)
|
||||
(@lookup_module_index ||= {}).update(mods)
|
||||
|
@ -1,5 +1,6 @@
|
||||
require 'addressable/uri'
|
||||
require 'set'
|
||||
require 'base64'
|
||||
|
||||
module Faraday
|
||||
class Connection
|
||||
@ -68,6 +69,20 @@ module Faraday
|
||||
run_request :delete, url, nil, headers, &block
|
||||
end
|
||||
|
||||
def basic_auth(login, pass)
|
||||
@headers['authorization'] = "Basic #{Base64.encode64("#{login}:#{pass}").strip}"
|
||||
end
|
||||
|
||||
def token_auth(token, options = {})
|
||||
values = ["token=#{token.to_s.inspect}"]
|
||||
options.each do |key, value|
|
||||
values << "#{key}=#{value.to_s.inspect}"
|
||||
end
|
||||
# 21 = "Authorization: Token ".size
|
||||
comma = ",\n#{' ' * 21}"
|
||||
@headers['authorization'] = "Token #{values * comma}"
|
||||
end
|
||||
|
||||
def in_parallel?
|
||||
!!@parallel_manager
|
||||
end
|
||||
|
@ -52,6 +52,25 @@ class TestConnection < Faraday::TestCase
|
||||
assert_equal '1', conn.headers['A']
|
||||
end
|
||||
|
||||
def test_basic_auth_sets_authorization_header
|
||||
conn = Faraday::Connection.new
|
||||
conn.basic_auth 'Aladdin', 'open sesame'
|
||||
assert_equal 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==', conn.headers['Authorization']
|
||||
end
|
||||
|
||||
def test_token_auth_sets_authorization_header
|
||||
conn = Faraday::Connection.new
|
||||
conn.token_auth 'abcdef'
|
||||
assert_equal 'Token token="abcdef"', conn.headers['Authorization']
|
||||
end
|
||||
|
||||
def test_token_auth_with_options_sets_authorization_header
|
||||
conn = Faraday::Connection.new
|
||||
conn.token_auth 'abcdef', :nonce => 'abc'
|
||||
assert_equal 'Token token="abcdef",
|
||||
nonce="abc"', conn.headers['Authorization']
|
||||
end
|
||||
|
||||
def test_build_url_uses_connection_host_as_default_uri_host
|
||||
conn = Faraday::Connection.new
|
||||
conn.host = 'sushi.com'
|
||||
|
Loading…
x
Reference in New Issue
Block a user