class Tanita::Api::Client::Auth

Public Class Methods

new(client_id: nil, client_secret: nil, redirect_uri: nil, scopes: nil) click to toggle source
# File lib/tanita/api/client.rb, line 27
def initialize(client_id: nil, client_secret: nil, redirect_uri: nil, scopes: nil)
  config = Tanita::Api::Client.configuration
  @client_id = client_id || config.client_id
  @client_secret = client_secret || config.client_secret
  @redirect_uri = redirect_uri || config.redirect_uri
  @scopes = scopes || config.scopes
  check_required_arguments
end

Public Instance Methods

auth_uri() click to toggle source
# File lib/tanita/api/client.rb, line 36
def auth_uri
  params = {
    client_id: @client_id,
    redirect_uri: @redirect_uri,
    scope: @scopes.join(','),
    response_type: 'code'
  }
  generate_uri(AUTH_URL_PATH, params)
end
exchange_token(auth_code:) click to toggle source
# File lib/tanita/api/client.rb, line 46
def exchange_token(auth_code:)
  params = {
    client_id: @client_id,
    client_secret: @client_secret,
    redirect_uri: DEFAULT_REDIRECT_URI,
    code: auth_code,
    grant_type: 'authorization_code'
  }
  res = request(TOKEN_URL_PATH, params)
  token = parse_json(res.body)

  raise Error.new("#{self.class}.#{__method__}: #{token[:error]}") if token.key? :error

  token
end

Private Instance Methods

check_required_arguments() click to toggle source
# File lib/tanita/api/client.rb, line 64
def check_required_arguments
  raise Error.new("param:'client_id' is required.'") if @client_id.nil?
  raise Error.new("param:'client_secret' is required.'") if @client_secret.nil?
  raise Error.new("param:'redirect_uri' is required.'") if @redirect_uri.nil?
  raise Error.new("param:'scopes' is required.'") if @scopes.nil?
end