Module: Ant::Server::GrapeDecorator
- Defined in:
- lib/ant/server/grape.rb
Constant Summary collapse
- HTTP_CODES =
{ success: 200, fail: 400, error: 500, fatal: 500 }.freeze
Class Method Summary collapse
- .configure_handlers(base) ⇒ Object
- .configure_logger(base) ⇒ Object
- .extract_http_code(exception, level) ⇒ Object
- .handler ⇒ Object
- .included(base) ⇒ Object
Class Method Details
.configure_handlers(base) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/ant/server/grape.rb', line 24 def self.configure_handlers(base) Server::Response.resources(:exceptions).each do |exception_class, level| base.rescue_from(exception_class) do |ex| response = Ant::Server::GrapeDecorator.handler.call(env, level, ex) http_code = Ant::Server::GrapeDecorator.extract_http_code(ex, level) error!(response, http_code) end end base.rescue_from(:all) do |ex| level = :fatal response = Ant::Server::GrapeDecorator.handler.call(env, level, ex) http_code = Ant::Server::GrapeDecorator.extract_http_code(ex, level) error!(response, http_code) end end |
.configure_logger(base) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/ant/server/grape.rb', line 50 def self.configure_logger(base) base.after do params = env['api.endpoint'].params request = env['api.endpoint'].request pkg = RequestResponse.new(request: request, params: params) Server::Response.logger.access(pkg) end end |
.extract_http_code(exception, level) ⇒ Object
19 20 21 22 |
# File 'lib/ant/server/grape.rb', line 19 def self.extract_http_code(exception, level) default = HTTP_CODES[level] || 500 exception.respond_to?(:http_code) ? exception.http_code : default end |
.handler ⇒ Object
4 5 6 7 8 9 10 11 12 13 |
# File 'lib/ant/server/grape.rb', line 4 def self.handler lambda do |env, level, ex| params = env['api.endpoint'].params request = env['api.endpoint'].request pkg = RequestResponse.new(request: request, params: params) pkg.exception = ex Server::Response.logger.send(level, pkg) Server::Response.format.send(level, pkg) end end |
.included(base) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/ant/server/grape.rb', line 40 def self.included(base) base.formatter(:json, lambda do |response, _| pkg = RequestResponse.new(request: {}, params: {}) pkg.result = response Server::Response.format.send(:success, pkg).to_json end) configure_logger(base) configure_handlers(base) end |