class MdNotes::OAuthAuthorizationController
Public Class Methods
MdNotes::BaseController::new
# File lib/md_notes/controllers/o_auth_authorization_controller.rb, line 9 def initialize(config, http_call_back: nil) super(config, http_call_back: http_call_back) end
Public Instance Methods
Obtain a new access token using a refresh token @param [String] authorization Required parameter: Authorization header in Basic auth format @param [String] refresh_token
Required parameter: Refresh token @param [String] scope Optional parameter: Requested scopes as a space-delimited list. @param [Hash] _field_parameters Additional optional form parameters are supported by this endpoint. @return [OAuthToken] response from the API call
# File lib/md_notes/controllers/o_auth_authorization_controller.rb, line 87 def refresh_token(authorization, refresh_token, scope: nil, _field_parameters: nil) # Prepare query url. _query_builder = config.get_base_uri _query_builder << '/oauth/token' _query_url = APIHelper.clean_url _query_builder # Prepare headers. _headers = { 'accept' => 'application/json', 'Authorization' => authorization } # Prepare form parameters. _parameters = { 'grant_type' => 'refresh_token', 'refresh_token' => refresh_token, 'scope' => scope } if !_parameters.nil? && !_field_parameters.nil? _parameters.merge!(_field_parameters) end _parameters = APIHelper.form_encode_parameters(_parameters) # Prepare and execute HttpRequest. _request = config.http_client.post( _query_url, headers: _headers, parameters: _parameters ) _response = execute_request(_request) # Validate response against endpoint and global error codes. if _response.status_code == 400 raise OAuthProviderException.new( 'OAuth 2 provider returned an error.', _response ) elsif _response.status_code == 401 raise OAuthProviderException.new( 'OAuth 2 provider says client authentication failed.', _response ) end validate_response(_response) # Return appropriate response type. decoded = APIHelper.json_deserialize(_response.raw_body) OAuthToken.from_hash(decoded) end
Create a new OAuth 2 token. @param [String] authorization Required parameter: Authorization header in Basic auth format @param [String] username Required parameter: Resource owner username @param [String] password Required parameter: Resource owner password @param [String] scope Optional parameter: Requested scopes as a space-delimited list. @param [Hash] _field_parameters Additional optional form parameters are supported by this endpoint. @return [OAuthToken] response from the API call
# File lib/md_notes/controllers/o_auth_authorization_controller.rb, line 23 def request_token(authorization, username, password, scope: nil, _field_parameters: nil) # Prepare query url. _query_builder = config.get_base_uri _query_builder << '/oauth/token' _query_url = APIHelper.clean_url _query_builder # Prepare headers. _headers = { 'accept' => 'application/json', 'Authorization' => authorization } # Prepare form parameters. _parameters = { 'grant_type' => 'password', 'username' => username, 'password' => password, 'scope' => scope } if !_parameters.nil? && !_field_parameters.nil? _parameters.merge!(_field_parameters) end _parameters = APIHelper.form_encode_parameters(_parameters) # Prepare and execute HttpRequest. _request = config.http_client.post( _query_url, headers: _headers, parameters: _parameters ) _response = execute_request(_request) # Validate response against endpoint and global error codes. if _response.status_code == 400 raise OAuthProviderException.new( 'OAuth 2 provider returned an error.', _response ) elsif _response.status_code == 401 raise OAuthProviderException.new( 'OAuth 2 provider says client authentication failed.', _response ) end validate_response(_response) # Return appropriate response type. decoded = APIHelper.json_deserialize(_response.raw_body) OAuthToken.from_hash(decoded) end