+++ /dev/null
-module Faraday
- class Request::Authorization < Faraday::Middleware
- KEY = "Authorization".freeze unless defined? KEY
-
- # Public
- def self.header(type, token)
- case token
- when String, Symbol
- "#{type} #{token}"
- when Hash
- build_hash(type.to_s, token)
- else
- raise ArgumentError, "Can't build an Authorization #{type} header from #{token.inspect}"
- end
- end
-
- # Internal
- def self.build_hash(type, hash)
- offset = KEY.size + type.size + 3
- comma = ",\n#{' ' * offset}"
- values = []
- hash.each do |key, value|
- values << "#{key}=#{value.to_s.inspect}"
- end
- "#{type} #{values * comma}"
- end
-
- def initialize(app, type, token)
- @header_value = self.class.header(type, token)
- super(app)
- end
-
- # Public
- def call(env)
- unless env.request_headers[KEY]
- env.request_headers[KEY] = @header_value
- end
- @app.call(env)
- end
- end
-end
-