@@ -5,12 +5,11 @@ module Grape
5
5
# from inside a `get`, `post`, etc.
6
6
class Endpoint
7
7
include Grape ::DSL ::Settings
8
+ include Grape ::DSL ::InsideRoute
8
9
9
10
attr_accessor :block , :source , :options
10
11
attr_reader :env , :request , :headers , :params
11
12
12
- include Grape ::DSL ::InsideRoute
13
-
14
13
class << self
15
14
def new ( *args , &block )
16
15
if self == Endpoint
@@ -115,7 +114,7 @@ def routes
115
114
end
116
115
117
116
def reset_routes!
118
- endpoints . map ( &:reset_routes! ) if endpoints
117
+ endpoints . each ( &:reset_routes! ) if endpoints
119
118
@namespace = nil
120
119
@routes = nil
121
120
end
@@ -126,7 +125,7 @@ def mount_in(route_set)
126
125
e . mount_in ( route_set )
127
126
end
128
127
else
129
- @routes = nil
128
+ reset_routes!
130
129
131
130
routes . each do |route |
132
131
methods = [ route . route_method ]
@@ -243,20 +242,7 @@ def run
243
242
244
243
run_filters before_validations , :before_validation
245
244
246
- # Retrieve validations from this namespace and all parent namespaces.
247
- validation_errors = [ ]
248
-
249
- route_setting ( :saved_validations ) . each do |validator |
250
- begin
251
- validator . validate ( @request )
252
- rescue Grape ::Exceptions ::Validation => e
253
- validation_errors << e
254
- end
255
- end
256
-
257
- if validation_errors . any?
258
- fail Grape ::Exceptions ::ValidationErrors , errors : validation_errors , headers : header
259
- end
245
+ run_validators validations , request
260
246
261
247
run_filters after_validations , :after_validation
262
248
@@ -346,6 +332,20 @@ def lazy_initialize!
346
332
end
347
333
end
348
334
335
+ def run_validators ( validators , request )
336
+ validation_errors = [ ]
337
+
338
+ validators . each do |validator |
339
+ begin
340
+ validator . validate ( request )
341
+ rescue Grape ::Exceptions ::Validation => e
342
+ validation_errors << e
343
+ end
344
+ end
345
+
346
+ validation_errors . any? && fail ( Grape ::Exceptions ::ValidationErrors , errors : validation_errors , headers : header )
347
+ end
348
+
349
349
def run_filters ( filters , type = :other )
350
350
ActiveSupport ::Notifications . instrument ( 'endpoint_run_filters.grape' , endpoint : self , filters : filters , type : type ) do
351
351
( filters || [ ] ) . each do |filter |
@@ -371,5 +371,9 @@ def after_validations
371
371
def afters
372
372
namespace_stackable ( :afters ) || [ ]
373
373
end
374
+
375
+ def validations
376
+ route_setting ( :saved_validations ) || [ ]
377
+ end
374
378
end
375
379
end
0 commit comments