helmet 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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