module Elmas::OAuth

rubocop:disable Metrics/ModuleLength

Public Instance Methods

authorize_division() click to toggle source
# File lib/elmas/oauth.rb, line 27
def authorize_division
  get("/Current/Me", no_division: true).results.first.current_division
end
authorize_url(options = {}) click to toggle source

Return URL for OAuth authorization

# File lib/elmas/oauth.rb, line 32
def authorize_url(options = {})
  options[:response_type] ||= "code"
  options[:redirect_uri] ||= redirect_uri
  params = authorization_params.merge(options)
  uri = URI("#{base_url}/api/oauth2/auth/")
  uri.query = URI.encode_www_form(params)
  uri.to_s
end
authorized?() click to toggle source
# File lib/elmas/oauth.rb, line 18
def authorized?
  # Do a test call, return false if 401 or any error code
  response = Elmas.get("/Current/Me", no_division: true)
  response.results.first.present?
rescue BadRequestException
  Elmas.error "Not yet authorized"
  return false
end
get_access_token(code, _options = {}) click to toggle source

Return an access token from authorization

# File lib/elmas/oauth.rb, line 42
def get_access_token(code, _options = {})
  conn = Faraday.new(url: base_url) do |faraday|
    faraday.request :url_encoded
    faraday.adapter Faraday.default_adapter
  end
  params = access_token_params(code)
  conn.post do |req|
    req.url "/api/oauth2/token"
    req.body = params
    req.headers["Accept"] = "application/json"
  end
end
get_refresh_token(refresh_token) click to toggle source

Return an access token from authorization via refresh token

# File lib/elmas/oauth.rb, line 56
def get_refresh_token(refresh_token)
  conn = Faraday.new(url: config[:base_url]) do |faraday|
    faraday.request :url_encoded
    faraday.adapter Faraday.default_adapter
  end

  params = refresh_access_token_params(refresh_token)

  conn.post do |req|
    req.url "/api/oauth2/token"
    req.body = params
    req.headers["Accept"] = "application/json"
    req.headers["Content-Type"] = "application/x-www-form-urlencoded"
  end
end

Private Instance Methods

access_token_params(code) click to toggle source
# File lib/elmas/oauth.rb, line 80
def access_token_params(code)
  {
    client_id: client_id,
    client_secret: client_secret,
    grant_type: "authorization_code",
    code: code,
    redirect_uri: redirect_uri
  }
end
authorization_params() click to toggle source
# File lib/elmas/oauth.rb, line 74
def authorization_params
  {
    client_id: client_id
  }
end
refresh_access_token_params(code) click to toggle source
# File lib/elmas/oauth.rb, line 90
def refresh_access_token_params(code)
  {
    client_id: client_id,
    client_secret: client_secret,
    grant_type: "refresh_token",
    refresh_token: code
  }
end