class Himeko::App

Constants

CONTEXT_RACK_ENV_NAME
USER_RACK_ENV_NAME

Public Class Methods

initialize_context(config) click to toggle source
# File lib/himeko/app.rb, line 23
def self.initialize_context(config)
  {
    config: config,
  }
end
rack(config={}) click to toggle source
# File lib/himeko/app.rb, line 29
def self.rack(config={})
  klass = App

  context = initialize_context(config)
  lambda { |env|
    env[CONTEXT_RACK_ENV_NAME] = context
    klass.call(env)
  }
end

Public Instance Methods

conf() click to toggle source
# File lib/himeko/app.rb, line 54
def conf
  context[:config]
end
console_session_duration() click to toggle source
# File lib/himeko/app.rb, line 86
def console_session_duration
  conf.fetch(:session_duration, 3600)
end
context() click to toggle source
# File lib/himeko/app.rb, line 50
def context
  request.env[CONTEXT_RACK_ENV_NAME]
end
current_username() click to toggle source
# File lib/himeko/app.rb, line 58
def current_username
  name = request.env[USER_RACK_ENV_NAME]
  halt 401, "request.env[#{USER_RACK_ENV_NAME}] is missing (maybe a configuration bug!)" unless name
  name
end
dynamodb_table() click to toggle source
# File lib/himeko/app.rb, line 72
def dynamodb_table
  @dynamodb_table ||= context[:dynamodb_table] ||= conf[:dynamodb_table] ||= Aws::DynamoDB::Resource.new().table(conf.fetch(:dynamodb_table_name))
end
iam() click to toggle source
# File lib/himeko/app.rb, line 68
def iam
  @iam ||= context[:iam] ||= conf[:iam] || Aws::IAM::Client.new(logger: env['rack.logger'])
end
render_no_user_error() click to toggle source
# File lib/himeko/app.rb, line 90
def render_no_user_error
  status 403
  erb :no_user_error
end
role_manager() click to toggle source
# File lib/himeko/app.rb, line 76
def role_manager
  @role_manager ||= context[:role_manager] ||= RoleManager.new(
    iam: iam,
    prefix: conf.fetch(:role_prefix),
    path: conf.fetch(:role_path),
    ttl: conf.fetch(:role_ttl, 86400),
    dynamodb_table: dynamodb_table,
  )
end
sts() click to toggle source
# File lib/himeko/app.rb, line 64
def sts
  @sts ||= context[:sts] ||= conf[:sts] || Aws::STS::Client.new(logger: env['rack.logger'])
end