Class: Angus::RequestHandler
- Inherits:
-
Object
- Object
- Angus::RequestHandler
- Includes:
- Responses
- Defined in:
- lib/angus/request_handler.rb
Direct Known Subclasses
Constant Summary collapse
- DEFAULT_RENDER =
:json
Constants included from Responses
Angus::Responses::HTTP_STATUS_CODE_CONFLICT, Angus::Responses::HTTP_STATUS_CODE_FORBIDDEN, Angus::Responses::HTTP_STATUS_CODE_INTERNAL_SERVER_ERROR, Angus::Responses::HTTP_STATUS_CODE_NOT_FOUND, Angus::Responses::HTTP_STATUS_CODE_OK, Angus::Responses::HTTP_STATUS_CODE_UNPROCESSABLE_ENTITY
Instance Attribute Summary collapse
-
#env ⇒ Object
readonly
Returns the value of attribute env.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#response ⇒ Object
readonly
Returns the value of attribute response.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize ⇒ RequestHandler
constructor
A new instance of RequestHandler.
-
#render(content, options = {}) ⇒ Object
TODO ver multiples formatos en el futuro.
- #router ⇒ Object
-
#use(middleware, *args, &block) ⇒ Object
TODO ver esto en el futuro Use the specified Rack middleware.
Methods included from Responses
#build_data_response, #build_error_response, #build_message, #build_messages, #build_no_data_response, #build_success_response, #build_warning_response, #get_error_definition, #get_error_status_code, #get_message_definition, #json
Constructor Details
#initialize ⇒ RequestHandler
Returns a new instance of RequestHandler.
15 16 17 |
# File 'lib/angus/request_handler.rb', line 15 def initialize @router = Angus::Router.new end |
Instance Attribute Details
#env ⇒ Object (readonly)
Returns the value of attribute env.
13 14 15 |
# File 'lib/angus/request_handler.rb', line 13 def env @env end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
13 14 15 |
# File 'lib/angus/request_handler.rb', line 13 def params @params end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
13 14 15 |
# File 'lib/angus/request_handler.rb', line 13 def request @request end |
#response ⇒ Object (readonly)
Returns the value of attribute response.
13 14 15 |
# File 'lib/angus/request_handler.rb', line 13 def response @response end |
Instance Method Details
#call(env) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/angus/request_handler.rb', line 23 def call(env) begin @env = env @response = Response.new router.route(env) rescue Angus::Router::NotImplementedError @response.status = HTTP_STATUS_CODE_NOT_FOUND render({ 'status' => 'error', 'messages' => [{ 'level' => 'error', 'key' => 'RouteNotFound', 'dsc' => 'Invalid route' }] }, {format: :json}) end @response.finish end |
#render(content, options = {}) ⇒ Object
TODO ver multiples formatos en el futuro
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/angus/request_handler.rb', line 42 def render(content, = {}) format = [:format] || DEFAULT_RENDER case(format) when :html HtmlRender.render(@response, content) when :json JsonRender.render(@response, content) else raise 'Unknown render format' end end |
#router ⇒ Object
19 20 21 |
# File 'lib/angus/request_handler.rb', line 19 def router @router end |
#use(middleware, *args, &block) ⇒ Object
TODO ver esto en el futuro Use the specified Rack middleware
56 57 58 59 |
# File 'lib/angus/request_handler.rb', line 56 def use(middleware, *args, &block) @prototype = nil @middleware << [middleware, args, block] end |