Module: Rsodx::RouterDSL::ClassMethods
- Defined in:
- lib/rsodx/router_dsl.rb
Instance Method Summary collapse
- #define_route(method, path, *args, &block) ⇒ Object
- #namespace(prefix, &block) ⇒ Object
- #route(verb, path, handler_class, options = {}) ⇒ Object
Instance Method Details
#define_route(method, path, *args, &block) ⇒ Object
44 45 46 47 48 |
# File 'lib/rsodx/router_dsl.rb', line 44 def define_route(method, path, *args, &block) route_block = block || args.pop full_path = (@namespace_prefix || "") + path Sinatra::Base.send(method.downcase, full_path, *args, &route_block) end |
#namespace(prefix, &block) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/rsodx/router_dsl.rb', line 36 def namespace(prefix, &block) raise ArgumentError, "Block required for namespace" unless block_given? previous = @namespace_prefix || "" @namespace_prefix = previous + prefix class_eval(&block) @namespace_prefix = previous end |
#route(verb, path, handler_class, options = {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/rsodx/router_dsl.rb', line 10 def route(verb, path, handler_class, = {}) define_route(verb, path) do req = Request.new(verb: verb, path: path, request: request) result = Action.call(request: req, handler_class: handler_class, options: ) content_type :json status(result.error_code || result.code || 200) if result.success? result.json_response else { success: false, error: result.error }.to_json end end end |