module Zaikio::Directory

Constants

VERSION

Attributes

configuration[RW]

Public Class Methods

configure() { |configuration| ... } click to toggle source
# File lib/zaikio/directory.rb, line 36
def configure
  self.connection = nil
  self.configuration ||= Configuration.new
  yield(configuration)

  Base.connection = create_connection
end
create_connection() click to toggle source
# File lib/zaikio/directory.rb, line 66
def create_connection
  self.connection = Faraday.new(url: "#{configuration.host}/api/v1",
                                ssl: { verify: configuration.environment != :test }) do |c|
    c.request     :json
    c.response    :logger, configuration&.logger
    c.use         JSONParser
    c.use         AuthorizationMiddleware
    c.use         BasicAuthMiddleware
    c.adapter     Faraday.default_adapter
  end
end
current_token_data() click to toggle source
# File lib/zaikio/directory.rb, line 58
def current_token_data
  return unless AuthorizationMiddleware.token

  payload = JWT.decode(AuthorizationMiddleware.token, nil, false).first

  create_token_data(payload)
end
with_basic_auth(login, password) { || ... } click to toggle source
# File lib/zaikio/directory.rb, line 51
def with_basic_auth(login, password)
  BasicAuthMiddleware.credentials = [login, password]
  yield
ensure
  BasicAuthMiddleware.reset_credentials
end
with_token(token) { || ... } click to toggle source
# File lib/zaikio/directory.rb, line 44
def with_token(token)
  AuthorizationMiddleware.token = token
  yield
ensure
  AuthorizationMiddleware.reset_token
end

Private Class Methods

create_token_data(payload) click to toggle source
# File lib/zaikio/directory.rb, line 80
def create_token_data(payload)
  subjects = payload["sub"].split(">")

  OpenStruct.new(
    audience: payload["aud"].first,
    on_behalf_of_id: subjects.first.split("/").last,
    subject_id: subjects.last.split("/").last,
    subject_type: subjects.last.split("/").first,
    scopes: payload["scope"]
  )
end