Module: Kjson::Roda

Defined in:
lib/kjson/roda.rb,
lib/kjson/roda/version.rb

Defined Under Namespace

Modules: RequestMethods, ResponseMethods

Constant Summary collapse

OPTS =
{}.freeze
JSON_PARAMS_KEY =
"roda.json_params".freeze
INPUT_KEY =
"rack.input".freeze
CONTENT_TYPE_MATCH =
/json/
ENDPOINT_SEPARATOR =
"."
JSON_ENCODER =
Oj.method(:dump)
JSON_DECODER =
Oj.method(:load)
JSON_OPTIONS =
{
  mode: :strict,
  quirks_mode: false
}.freeze
KJSON_REQUEST_KEY =
"kjson.request".freeze
KJSON_RESPONSE_KEY =
"kjson.response".freeze
REQUEST_ERROR =
"REQUEST_ERROR".freeze
SERVICE_ERROR =
"SERVICE_ERROR".freeze
RESPONSE_ERROR =
"RESPONSE_ERROR".freeze
TIMEOUT =
"TIMEOUT".freeze
CLOSED =
"CLOSED".freeze
TRANSPORT =
"TRANSPORT".freeze
UNAVAILABLE =
"UNAVAILABLE".freeze
BAD_REQUEST =
"BAD_REQUEST".freeze
INVALID_FORMAT =
"INVALID_FORMAT".freeze
UNIMPLEMENTED =
"UNIMPLEMENTED".freeze
UNAUTHENTICATED =
"UNAUTHENTICATED".freeze
NO_DATA =
"NO_DATA".freeze
INTERNAL =
"INTERNAL".freeze
PARSE_ERROR_HANDLER =
proc { |r| r.halt [400, {}, [Oj.dump({ data: nil, error: { type: REQUEST_ERROR, message: UNIMPLEMENTED } }, JSON_OPTIONS).freeze]] }
VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.configure(app, opts = OPTS) ⇒ Object

Handle options for the kjson plugin:



39
40
41
42
43
44
45
# File 'lib/kjson/roda.rb', line 39

def self.configure(app, opts = OPTS)
  app.opts[:kjson_error_handler] = opts[:error_handler] || app.opts[:kjson_error_handler] || PARSE_ERROR_HANDLER
  app.opts[:kjson_content_type] = opts[:content_type] || app.opts[:kjson_content_type] || CONTENT_TYPE_MATCH
  app.opts[:kjson_encoder] = opts[:json_encoder] || app.opts[:kjson_json_encoder] || JSON_ENCODER
  app.opts[:kjson_decoder] = opts[:json_decoder] || app.opts[:kjson_json_decoder] || JSON_DECODER
  app.opts[:kjson_options] = opts[:json_options] || app.opts[:kjson_json_options] || JSON_OPTIONS
end