]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/aviator/lib/puppet/feature/faraday/request/authorization.rb
Revert "add stackforge/keystone to 3rdparty"
[dsa-puppet.git] / 3rdparty / modules / aviator / lib / puppet / feature / faraday / request / authorization.rb
1 module Faraday
2   class Request::Authorization < Faraday::Middleware
3     KEY = "Authorization".freeze unless defined? KEY
4
5     # Public
6     def self.header(type, token)
7       case token
8       when String, Symbol
9         "#{type} #{token}"
10       when Hash
11         build_hash(type.to_s, token)
12       else
13         raise ArgumentError, "Can't build an Authorization #{type} header from #{token.inspect}"
14       end
15     end
16
17     # Internal
18     def self.build_hash(type, hash)
19       offset = KEY.size + type.size + 3
20       comma = ",\n#{' ' * offset}"
21       values = []
22       hash.each do |key, value|
23         values << "#{key}=#{value.to_s.inspect}"
24       end
25       "#{type} #{values * comma}"
26     end
27
28     def initialize(app, type, token)
29       @header_value = self.class.header(type, token)
30       super(app)
31     end
32
33     # Public
34     def call(env)
35       unless env.request_headers[KEY]
36         env.request_headers[KEY] = @header_value
37       end
38       @app.call(env)
39     end
40   end
41 end
42