Sha256: 30cf0026de887392e961fc3603e93b42ede65bd5a2a25d4788e171217eb424d0

Contents?: true

Size: 1.43 KB

Versions: 23

Compression:

Stored size: 1.43 KB

Contents

module Fog
  module Brightbox
    module Storage
      class AuthenticationRequest
        attr_accessor :access_token, :management_url
        attr_accessor :user, :tenant

        def initialize(config)
          @config = config
        end

        def authenticate
          response = authentication_request

          self.access_token = response.headers["X-Auth-Token"]
          self.management_url = response.headers["X-Server-Management-Url"] || response.headers["X-Storage-Url"]
          self
        rescue Excon::Errors::Unauthorized => error
          raise Fog::Brightbox::Storage::AuthenticationRequired.slurp(error)
        end

        private

        def authentication_request
          authentication_url = URI.parse(@config.storage_url.to_s)
          connection = Fog::Core::Connection.new(authentication_url.to_s)
          request_settings = {
            :expects => [200, 204],
            :headers => auth_headers,
            :method => "GET",
            :path => "v1"
          }
          connection.request(request_settings)
        end

        def auth_headers
          if @config.user_credentials?
            {
              "X-Auth-User" => @config.username,
              "X-Auth-Key" => @config.password
            }
          else
            {
              "X-Auth-User" => @config.client_id,
              "X-Auth-Key" => @config.client_secret
            }
          end
        end
      end
    end
  end
end

Version data entries

23 entries across 21 versions & 3 rubygems

Version Path
fog-brightbox-1.0.0.rc1 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.16.1 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.16.0 lib/fog/brightbox/storage/authentication_request.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-brightbox-0.15.0/lib/fog/brightbox/storage/authentication_request.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-brightbox-0.15.0/lib/fog/brightbox/storage/authentication_request.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-brightbox-0.15.0/lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.15.0 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.14.0 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.13.0 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.12.0 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.11.0 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.10.1 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.10.0 lib/fog/brightbox/storage/authentication_request.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/fog-brightbox-0.9.0/lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.9.0 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.8.0 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.7.2 lib/fog/brightbox/storage/authentication_request.rb
vagrant-cloudstack-1.1.0 vendor/bundle/gems/fog-brightbox-0.7.1/lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.7.1 lib/fog/brightbox/storage/authentication_request.rb
fog-brightbox-0.7.0 lib/fog/brightbox/storage/authentication_request.rb