helmet 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/helmet/api.rb +29 -3
  2. metadata +1 -1
data/lib/helmet/api.rb CHANGED
@@ -4,8 +4,13 @@ require 'helmet/templates'
4
4
 
5
5
  module Helmet
6
6
  class API < Goliath::API
7
- @@routes = {}
8
7
 
8
+ # Handle application routes
9
+ @@routes = {}
10
+
11
+ # Handle before filters
12
+ @@before_filters = []
13
+
9
14
  class << self
10
15
  include Templates
11
16
 
@@ -24,7 +29,11 @@ module Helmet
24
29
  def views_folder
25
30
  @@views_folder
26
31
  end
27
-
32
+
33
+ def before(route, &block)
34
+ @@before_filters << [route, block]
35
+ end
36
+
28
37
  def get(route, &block)
29
38
  register_route('GET', route, &block);
30
39
  register_route('HEAD', route, &block);
@@ -66,7 +75,24 @@ module Helmet
66
75
  end
67
76
 
68
77
  def response(env)
69
- sig = API.signature(env['REQUEST_METHOD'], env['REQUEST_PATH'])
78
+ path = env['REQUEST_PATH']
79
+
80
+ # evaluate filters
81
+ resp = catch(:halt) do
82
+ @@before_filters.each do |route|
83
+ case route.first
84
+ when String
85
+ route[1].call if route.first == path
86
+ when Regexp
87
+ route[1].call if route.first =~ path
88
+ end
89
+ end
90
+ nil
91
+ end
92
+ p resp
93
+ return resp if resp
94
+
95
+ sig = API.signature(env['REQUEST_METHOD'], path)
70
96
  block = @@routes[sig]
71
97
  if block
72
98
  block.call env
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: helmet
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.3
5
+ version: 0.0.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Thiago Lewin