X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=3rdparty%2Fmodules%2Faviator%2Flib%2Fpuppet%2Ffeature%2Ffaraday%2Frequest%2Fauthorization.rb;fp=3rdparty%2Fmodules%2Faviator%2Flib%2Fpuppet%2Ffeature%2Ffaraday%2Frequest%2Fauthorization.rb;h=43b452880146d2b0924ab03287d4daae73ce4ed1;hb=b7626cbcbb2fb8e7ce3dc5ac60e80a981175f9d3;hp=0000000000000000000000000000000000000000;hpb=8132e6bb1199463f5e334326659c974d4772b3e3;p=dsa-puppet.git diff --git a/3rdparty/modules/aviator/lib/puppet/feature/faraday/request/authorization.rb b/3rdparty/modules/aviator/lib/puppet/feature/faraday/request/authorization.rb new file mode 100644 index 00000000..43b45288 --- /dev/null +++ b/3rdparty/modules/aviator/lib/puppet/feature/faraday/request/authorization.rb @@ -0,0 +1,42 @@ +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 +