Class: Helmet::API
- Inherits:
-
Goliath::API
- Object
- Goliath::API
- Helmet::API
- Defined in:
- lib/helmet/api.rb
Class Attribute Summary collapse
-
.settings ⇒ Object
Returns the value of attribute settings.
Class Method Summary collapse
- .before(route, opts = {}, &block) ⇒ Object
- .before_filters ⇒ Object
- .connect(route, opts = {}, &block) ⇒ Object
- .delete(route, opts = {}, &block) ⇒ Object
- .get(route, opts = {}, &block) ⇒ Object
- .get_helpers ⇒ Object
-
.helpers(&block) ⇒ Object
include methods to the helper.
- .inherited(klass) ⇒ Object
- .init ⇒ Object
-
.post(route, opts = {}, &block) ⇒ Object
def head(route, opts = {}, &block) register_route(:HEAD, route, opts, &block); end def options(route, opts = {}, &block) register_route(:OPTIONS, route, opts, &block); end.
- .put(route, opts = {}, &block) ⇒ Object
- .register_route(method, route, opts = {}, &block) ⇒ Object
- .routes ⇒ Object
Instance Method Summary collapse
Class Attribute Details
.settings ⇒ Object
Returns the value of attribute settings.
12 13 14 |
# File 'lib/helmet/api.rb', line 12 def settings @settings end |
Class Method Details
.before(route, opts = {}, &block) ⇒ Object
14 15 16 |
# File 'lib/helmet/api.rb', line 14 def before(route, opts = {}, &block) @before_filters.add(route, opts, &block) end |
.before_filters ⇒ Object
22 23 24 |
# File 'lib/helmet/api.rb', line 22 def before_filters @before_filters end |
.connect(route, opts = {}, &block) ⇒ Object
41 |
# File 'lib/helmet/api.rb', line 41 def connect(route, opts = {}, &block) register_route(:CONNECT, route, opts, &block); end |
.delete(route, opts = {}, &block) ⇒ Object
42 |
# File 'lib/helmet/api.rb', line 42 def delete(route, opts = {}, &block) register_route(:DELETE, route, opts, &block); end |
.get(route, opts = {}, &block) ⇒ Object
35 36 37 38 39 |
# File 'lib/helmet/api.rb', line 35 def get(route, opts = {}, &block) register_route(:GET, route, opts, &block); # HttpRouter already include head # register_route('HEAD', route, opts, &block); end |
.get_helpers ⇒ Object
31 32 33 |
# File 'lib/helmet/api.rb', line 31 def get_helpers @helpers end |
.helpers(&block) ⇒ Object
include methods to the helper
27 28 29 |
# File 'lib/helmet/api.rb', line 27 def helpers(&block) @helpers.module_exec(&block) end |
.inherited(klass) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/helmet/api.rb', line 65 def inherited(klass) klass.init # setup basic middlewares setup_middlewares klass # compute public/ views folder base = File.(File.dirname(caller.first[/^[^:]*/])) klass.settings[:public_folder] = File.join(base, 'public') klass.settings[:views_folder] = File.join(base, 'views') super # update Goliath::Application.app_class end |
.init ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/helmet/api.rb', line 80 def init # Handle application routes @routes = HttpRouter.new # Handle before filters @before_filters = HttpRouter.new @settings = {} @helpers = Module.new end |
.post(route, opts = {}, &block) ⇒ Object
def head(route, opts = {}, &block) register_route(:HEAD, route, opts, &block); end def options(route, opts = {}, &block) register_route(:OPTIONS, route, opts, &block); end
45 |
# File 'lib/helmet/api.rb', line 45 def post(route, opts = {}, &block) register_route(:POST, route, opts, &block); end |
.put(route, opts = {}, &block) ⇒ Object
46 |
# File 'lib/helmet/api.rb', line 46 def put(route, opts = {}, &block) register_route(:PUT, route, opts, &block); end |
.register_route(method, route, opts = {}, &block) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/helmet/api.rb', line 48 def register_route(method, route, opts = {}, &block) case method when :GET @routes.get(route, opts, &block) when :CONNECT @routes.connect(route, opts, &block) when :DELETE @routes.delete(route, opts, &block) when :OPTIONS @routes.(route, opts, &block) when :POST @routes.post(route, opts, &block) when :PUT @routes.put(route, opts, &block) end end |
.routes ⇒ Object
18 19 20 |
# File 'lib/helmet/api.rb', line 18 def routes @routes end |
Instance Method Details
#response(env) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/helmet/api.rb', line 100 def response(env) # request handler handler = Handler.new(env, self.class) # include Helpers handler.extend(self.class.get_helpers) catch(:halt) do # evaluate any route match filters = self.class.before_filters.recognize(env).first filters.each do |f| # include route params into env route_params = f.params env.params.merge! route_params handler.handle! &f.route.dest # remove after usage env.params.delete_if {|k,v| route_params[k] == v} end if filters routes_recognized = self.class.routes.recognize(env).first if routes_recognized # Use the first matched route http_router_response = routes_recognized.first # Bind params to the env env.params.merge! http_router_response.params handler.handle! &http_router_response.route.dest else handler.handle! do status 404 'not found!' end end end handler.response.format_response end |