This module covers Brightbox's partial implementation of OAuth 2.0 and enables fog clients to implement several authentictication strategies
This builds the simplest form of requesting an access token based on the arguments passed in
@param [Fog::Core::Connection] connection @param [CredentialSet] credentials
@return [Excon::Response]
# File lib/fog/brightbox/oauth2.rb, line 15 def request_access_token(connection, credentials) token_strategy = credentials.best_grant_strategy header_content = "#{credentials.client_id}:#{credentials.client_secret}" encoded_credentials = Base64.encode64(header_content).chomp connection.request( :path => "/token", :expects => 200, :headers => { 'Authorization' => "Basic #{encoded_credentials}", 'Content-Type' => 'application/json' }, :method => 'POST', :body => Fog::JSON.encode(token_strategy.authorization_body_data) ) end
This updates the current credentials if passed a valid response
@param [CredentialSet] credentials Credentials to update @param [Excon::Response] response Response object to parse value from
# File lib/fog/brightbox/oauth2.rb, line 162 def update_credentials_from_response(credentials, response) response_data = Fog::JSON.decode(response.body) credentials.update_tokens(response_data["access_token"], response_data["refresh_token"], response_data["expires_in"]) end