Module: Mailpeek::WebRouter
- Included in:
- WebApplication
- Defined in:
- lib/mailpeek/web/router.rb
Overview
Public: WebRouter
Constant Summary collapse
- GET =
'GET'
- DELETE =
'DELETE'
- POST =
'POST'
- PUT =
'PUT'
- PATCH =
'PATCH'
- HEAD =
'HEAD'
- ROUTE_PARAMS =
'rack.route_params'
- REQUEST_METHOD =
'REQUEST_METHOD'
- PATH_INFO =
'PATH_INFO'
Instance Method Summary collapse
- #delete(path, &block) ⇒ Object
- #get(path, &block) ⇒ Object
- #match(env) ⇒ Object
- #patch(path, &block) ⇒ Object
- #post(path, &block) ⇒ Object
- #put(path, &block) ⇒ Object
- #route(method, path, &block) ⇒ Object
Instance Method Details
#delete(path, &block) ⇒ Object
35 36 37 |
# File 'lib/mailpeek/web/router.rb', line 35 def delete(path, &block) route(DELETE, path, &block) end |
#get(path, &block) ⇒ Object
19 20 21 |
# File 'lib/mailpeek/web/router.rb', line 19 def get(path, &block) route(GET, path, &block) end |
#match(env) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/mailpeek/web/router.rb', line 48 def match(env) request_method = env[REQUEST_METHOD] path_info = ::Rack::Utils.unescape env[PATH_INFO] # There are servers which send an empty string when requesting the root. path_info = '/' if path_info == '' @routes[request_method].each do |route| params = route.match(request_method, path_info) next unless params env[ROUTE_PARAMS] = params return WebAction.new(env, route.block) end nil end |
#patch(path, &block) ⇒ Object
31 32 33 |
# File 'lib/mailpeek/web/router.rb', line 31 def patch(path, &block) route(PATCH, path, &block) end |
#post(path, &block) ⇒ Object
23 24 25 |
# File 'lib/mailpeek/web/router.rb', line 23 def post(path, &block) route(POST, path, &block) end |
#put(path, &block) ⇒ Object
27 28 29 |
# File 'lib/mailpeek/web/router.rb', line 27 def put(path, &block) route(PUT, path, &block) end |
#route(method, path, &block) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/mailpeek/web/router.rb', line 39 def route(method, path, &block) @routes ||= { GET => [], POST => [], PUT => [], PATCH => [], DELETE => [], HEAD => [] } @routes[method] << WebRoute.new(method, path, block) @routes[HEAD] << WebRoute.new(method, path, block) if method == GET end |