class MdNotes::OAuthAuthorizationController

OAuthAuthorizationController

Public Class Methods

new(config, http_call_back: nil) click to toggle source
Calls superclass method 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

refresh_token(authorization, refresh_token, scope: nil, _field_parameters: nil) click to toggle source

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
request_token(authorization, username, password, scope: nil, _field_parameters: nil) click to toggle source

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