class PUNK::App

Constants

INDEX
PUBLIC
PUNK_CONTENT_TYPE_LOOKUP
REMOTE

Public Instance Methods

args() click to toggle source
# File lib/punk/core/app.rb, line 117
def args
  params.transform_keys(&:to_sym)
end
current_identity() click to toggle source
# File lib/punk/core/app.rb, line 125
def current_identity
  @_current_session&.identity
end
current_session() click to toggle source
# File lib/punk/core/app.rb, line 121
def current_session
  @_current_session
end
current_tenant() click to toggle source
# File lib/punk/core/app.rb, line 133
def current_tenant
  @_current_tenant
end
current_user() click to toggle source
# File lib/punk/core/app.rb, line 129
def current_user
  @_current_session&.user
end
perform(action_class, **kwargs) click to toggle source
# File lib/punk/core/app.rb, line 137
def perform(action_class, **kwargs)
  raise InternalServerError, "Not an action: #{action_class}" unless action_class < Action
  render action_class.perform(**kwargs)
end
present(view_class, **kwargs) click to toggle source
# File lib/punk/core/app.rb, line 142
def present(view_class, **kwargs)
  raise InternalServerError, "Not a view: #{view_class}" unless view_class < View
  render view_class.present(**kwargs)
end
render(view) click to toggle source
# File lib/punk/core/app.rb, line 153
def render(view)
  raise InternalServerError, "Not a view: #{view}" unless view.is_a?(View)
  format = request.requested_type
  view.profile_info("render", format: format) do
    response.status = view.status if view.is_a?(Fail)
    response["Content-Type"] = PUNK_CONTENT_TYPE_LOOKUP[format]
    view.render(format)
  end
end
require_anonymous!() click to toggle source
# File lib/punk/core/app.rb, line 106
def require_anonymous!
  raise BadRequest, "Session already exists" if request.session.present?
  PUNK.logger.info "require_anonymous!"
end
require_session!() click to toggle source
# File lib/punk/core/app.rb, line 89
def require_session!
  begin
    @_current_session = Session[request.session["session_id"]]
    if @_current_session&.active?
      @_current_session.touch
    else
      clear_session
      @_current_session = nil
    end
  rescue => e
    exception(e)
    raise Unauthorized, e.message
  end
  raise Unauthorized, "Session does not exist" if @_current_session.nil?
  PUNK.logger.info "require_session!", {current_session: current_session.inspect, current_identity: current_identity.inspect, current_user: current_user.inspect}.inspect
end
require_tenant!() click to toggle source
# File lib/punk/core/app.rb, line 111
def require_tenant!
  raise Unauthorized, "Session does not exist" if @_current_session.nil?
  @_current_tenant = current_user.tenants_dataset[id: params[:tenant_id]]
  PUNK.logger.info "require_tenant!", {current_tenant: @_current_tenant.inspect}.inspect
end

Private Instance Methods