grape 1.2.4 → 1.2.5
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -4
- data/README.md +144 -4
- data/grape.gemspec +3 -1
- data/lib/grape.rb +94 -66
- data/lib/grape/api.rb +46 -4
- data/lib/grape/api/instance.rb +23 -12
- data/lib/grape/dsl/desc.rb +11 -2
- data/lib/grape/dsl/validations.rb +4 -3
- data/lib/grape/eager_load.rb +18 -0
- data/lib/grape/endpoint.rb +3 -3
- data/lib/grape/error_formatter.rb +1 -1
- data/lib/grape/exceptions/validation_errors.rb +4 -2
- data/lib/grape/formatter.rb +1 -1
- data/lib/grape/middleware/auth/base.rb +2 -4
- data/lib/grape/middleware/base.rb +2 -0
- data/lib/grape/middleware/helpers.rb +10 -0
- data/lib/grape/parser.rb +1 -1
- data/lib/grape/util/base_inheritable.rb +34 -0
- data/lib/grape/util/inheritable_values.rb +5 -25
- data/lib/grape/util/lazy_block.rb +25 -0
- data/lib/grape/util/lazy_value.rb +5 -0
- data/lib/grape/util/reverse_stackable_values.rb +7 -36
- data/lib/grape/util/stackable_values.rb +19 -22
- data/lib/grape/validations/attributes_iterator.rb +5 -3
- data/lib/grape/validations/multiple_attributes_iterator.rb +11 -0
- data/lib/grape/validations/params_scope.rb +12 -12
- data/lib/grape/validations/single_attribute_iterator.rb +13 -0
- data/lib/grape/validations/validator_factory.rb +6 -11
- data/lib/grape/validations/validators/all_or_none.rb +6 -13
- data/lib/grape/validations/validators/at_least_one_of.rb +5 -13
- data/lib/grape/validations/validators/base.rb +11 -10
- data/lib/grape/validations/validators/coerce.rb +4 -0
- data/lib/grape/validations/validators/default.rb +1 -1
- data/lib/grape/validations/validators/exactly_one_of.rb +6 -23
- data/lib/grape/validations/validators/multiple_params_base.rb +14 -10
- data/lib/grape/validations/validators/mutual_exclusion.rb +6 -18
- data/lib/grape/version.rb +1 -1
- data/spec/grape/api/defines_boolean_in_params_spec.rb +37 -0
- data/spec/grape/api_remount_spec.rb +158 -0
- data/spec/grape/api_spec.rb +72 -0
- data/spec/grape/endpoint_spec.rb +1 -1
- data/spec/grape/exceptions/base_spec.rb +4 -0
- data/spec/grape/exceptions/validation_errors_spec.rb +6 -4
- data/spec/grape/integration/rack_spec.rb +22 -6
- data/spec/grape/middleware/base_spec.rb +8 -0
- data/spec/grape/middleware/formatter_spec.rb +11 -1
- data/spec/grape/validations/multiple_attributes_iterator_spec.rb +29 -0
- data/spec/grape/validations/params_scope_spec.rb +13 -0
- data/spec/grape/validations/single_attribute_iterator_spec.rb +33 -0
- data/spec/grape/validations/validators/all_or_none_spec.rb +138 -30
- data/spec/grape/validations/validators/at_least_one_of_spec.rb +173 -29
- data/spec/grape/validations/validators/coerce_spec.rb +6 -2
- data/spec/grape/validations/validators/exactly_one_of_spec.rb +202 -38
- data/spec/grape/validations/validators/mutual_exclusion_spec.rb +184 -27
- data/spec/grape/validations_spec.rb +32 -20
- metadata +103 -115
- data/Appraisals +0 -28
- data/Dangerfile +0 -2
- data/Gemfile +0 -33
- data/Gemfile.lock +0 -231
- data/Guardfile +0 -10
- data/RELEASING.md +0 -111
- data/Rakefile +0 -25
- data/benchmark/simple.rb +0 -27
- data/benchmark/simple_with_type_coercer.rb +0 -22
- data/gemfiles/multi_json.gemfile +0 -35
- data/gemfiles/multi_xml.gemfile +0 -35
- data/gemfiles/rack_1.5.2.gemfile.lock +0 -232
- data/gemfiles/rack_edge.gemfile +0 -35
- data/gemfiles/rails_3.gemfile +0 -36
- data/gemfiles/rails_3.gemfile.lock +0 -288
- data/gemfiles/rails_4.gemfile +0 -35
- data/gemfiles/rails_4.gemfile.lock +0 -280
- data/gemfiles/rails_5.gemfile +0 -35
- data/gemfiles/rails_5.gemfile.lock +0 -312
- data/gemfiles/rails_edge.gemfile +0 -35
- data/pkg/grape-1.2.0.gem +0 -0
- data/pkg/grape-1.2.1.gem +0 -0
- data/pkg/grape-1.2.3.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8934b2070d7c44a7100315712c05ee9e76eff602290b30f475f6e2e324c5392c
|
4
|
+
data.tar.gz: 0d618a852be97bf103c7f783702342b030440834fedd725b4e6a90e03a8b0556
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f11c651eb7dea86dd45065c04cdebcbb2635cf8136536850b245d4ad94eac921a4218f191cc5f523968cdc4708ee7ede49fce17de21b97b96edcd82426c06795
|
7
|
+
data.tar.gz: 8266b0bf359c1ed96b7aacd9bbecacfe6ef5f406b94d54a1a9c6dfdbf18d95967f8c853f13dfab642631e261f81893bcc5323e83c0d27a04226bdc03d7b19381
|
data/CHANGELOG.md
CHANGED
@@ -1,18 +1,32 @@
|
|
1
|
-
### 1.2.5 (
|
1
|
+
### 1.2.5 (2019/12/01)
|
2
2
|
|
3
3
|
#### Features
|
4
4
|
|
5
|
-
*
|
5
|
+
* [#1931](https://github.com/ruby-grape/grape/pull/1931): Introduces LazyBlock to generate expressions that will executed at mount time - [@myxoh](https://github.com/myxoh).
|
6
|
+
* [#1918](https://github.com/ruby-grape/grape/pull/1918): Helper methods to access controller context from middleware - [@NikolayRys](https://github.com/NikolayRys).
|
7
|
+
* [#1915](https://github.com/ruby-grape/grape/pull/1915): Micro optimizations in allocating hashes and arrays - [@dnesteryuk](https://github.com/dnesteryuk).
|
8
|
+
* [#1904](https://github.com/ruby-grape/grape/pull/1904): Allows Grape to load files on startup rather than on the first call - [@myxoh](https://github.com/myxoh).
|
9
|
+
* [#1907](https://github.com/ruby-grape/grape/pull/1907): Adds outside configuration to Grape with `configure` - [@unleashy](https://github.com/unleashy).
|
10
|
+
* [#1914](https://github.com/ruby-grape/grape/pull/1914): Run specs in random order - [@splattael](https://github.com/splattael).
|
6
11
|
|
7
12
|
#### Fixes
|
8
13
|
|
9
|
-
*
|
14
|
+
* [#1917](https://github.com/ruby-grape/grape/pull/1917): Update access to rack constant - [@NikolayRys](https://github.com/NikolayRys).
|
15
|
+
* [#1916](https://github.com/ruby-grape/grape/pull/1916): Drop old appraisals - [@NikolayRys](https://github.com/NikolayRys).
|
16
|
+
* [#1911](https://github.com/ruby-grape/grape/pull/1911): Make sure `Grape::Valiations::AtLeastOneOfValidator` properly treats nested params in errors - [@dnesteryuk](https://github.com/dnesteryuk).
|
17
|
+
* [#1893](https://github.com/ruby-grape/grape/pull/1893): Allows `Grape::API` to behave like a Rack::app in some instances where it was misbehaving - [@myxoh](https://github.com/myxoh).
|
18
|
+
* [#1898](https://github.com/ruby-grape/grape/pull/1898): Refactor `ValidatorFactory` to improve memory allocation - [@Bhacaz](https://github.com/Bhacaz).
|
19
|
+
* [#1900](https://github.com/ruby-grape/grape/pull/1900): Define boolean for `Grape::Api::Instance` - [@Bhacaz](https://github.com/Bhacaz).
|
20
|
+
* [#1903](https://github.com/ruby-grape/grape/pull/1903): Allow nested params renaming (Hash/Array) - [@bikolya](https://github.com/bikolya).
|
21
|
+
* [#1913](https://github.com/ruby-grape/grape/pull/1913): Fix multiple params validators to return correct messages for nested params - [@bikolya](https://github.com/bikolya).
|
22
|
+
* [#1926](https://github.com/ruby-grape/grape/pull/1926): Fixes configuration within given or mounted blocks - [@myxoh](https://github.com/myxoh).
|
23
|
+
* [#1937](https://github.com/ruby-grape/grape/pull/1937): Fix bloat in released gem - [@dblock](https://github.com/dblock).
|
10
24
|
|
11
25
|
### 1.2.4 (2019/06/13)
|
12
26
|
|
13
27
|
#### Features
|
14
28
|
|
15
|
-
* [#1888](https://github.com/ruby-grape/grape/pull/1888): Makes the `configuration` hash
|
29
|
+
* [#1888](https://github.com/ruby-grape/grape/pull/1888): Makes the `configuration` hash widely available - [@myxoh](https://github.com/myxoh).
|
16
30
|
* [#1864](https://github.com/ruby-grape/grape/pull/1864): Adds `finally` on the API - [@myxoh](https://github.com/myxoh).
|
17
31
|
* [#1869](https://github.com/ruby-grape/grape/pull/1869): Fix issue with empty headers after `error!` method call - [@anaumov](https://github.com/anaumov).
|
18
32
|
|
data/README.md
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
- [Installation](#installation)
|
16
16
|
- [Basic Usage](#basic-usage)
|
17
17
|
- [Mounting](#mounting)
|
18
|
+
- [All](#all)
|
18
19
|
- [Rack](#rack)
|
19
20
|
- [ActiveRecord without Rails](#activerecord-without-rails)
|
20
21
|
- [Alongside Sinatra (or other frameworks)](#alongside-sinatra-or-other-frameworks)
|
@@ -153,9 +154,8 @@ content negotiation, versioning and much more.
|
|
153
154
|
|
154
155
|
## Stable Release
|
155
156
|
|
156
|
-
You're reading the documentation for the
|
157
|
+
You're reading the documentation for the stable release of Grape, **1.2.5**.
|
157
158
|
Please read [UPGRADING](UPGRADING.md) when upgrading from a previous version.
|
158
|
-
The current stable release is [1.2.4](https://github.com/ruby-grape/grape/blob/v1.2.4/README.md).
|
159
159
|
|
160
160
|
## Project Resources
|
161
161
|
|
@@ -213,7 +213,7 @@ module Twitter
|
|
213
213
|
|
214
214
|
desc 'Return a status.'
|
215
215
|
params do
|
216
|
-
requires :id, type: Integer, desc: 'Status
|
216
|
+
requires :id, type: Integer, desc: 'Status ID.'
|
217
217
|
end
|
218
218
|
route_param :id do
|
219
219
|
get do
|
@@ -261,6 +261,17 @@ end
|
|
261
261
|
|
262
262
|
## Mounting
|
263
263
|
|
264
|
+
### All
|
265
|
+
|
266
|
+
|
267
|
+
By default Grape will compile the routes on the first route, it is possible to pre-load routes using the `compile!` method.
|
268
|
+
|
269
|
+
```ruby
|
270
|
+
Twitter::API.compile!
|
271
|
+
```
|
272
|
+
|
273
|
+
This can be added to your `config.ru` (if using rackup), `application.rb` (if using rails), or any file that loads your server.
|
274
|
+
|
264
275
|
### Rack
|
265
276
|
|
266
277
|
The above sample creates a Rack application that can be run from a rackup `config.ru` file
|
@@ -270,6 +281,13 @@ with `rackup`:
|
|
270
281
|
run Twitter::API
|
271
282
|
```
|
272
283
|
|
284
|
+
(With pre-loading you can use)
|
285
|
+
|
286
|
+
```ruby
|
287
|
+
Twitter::API.compile!
|
288
|
+
run Twitter::API
|
289
|
+
```
|
290
|
+
|
273
291
|
And would respond to the following routes:
|
274
292
|
|
275
293
|
GET /api/statuses/public_timeline
|
@@ -437,6 +455,15 @@ class Comment::API < Grape::API
|
|
437
455
|
end
|
438
456
|
```
|
439
457
|
|
458
|
+
Note that if you're passing a hash as the first parameter to `mount`, you will need to explicitly put `()` around parameters:
|
459
|
+
```ruby
|
460
|
+
# good
|
461
|
+
mount({ ::Some::Api => '/some/api' }, with: { condition: true })
|
462
|
+
|
463
|
+
# bad
|
464
|
+
mount ::Some::Api => '/some/api', with: { condition: true }
|
465
|
+
```
|
466
|
+
|
440
467
|
You can access `configuration` on the class (to use as dynamic attributes), inside blocks (like namespace)
|
441
468
|
|
442
469
|
If you want logic happening given on an `configuration`, you can use the helper `given`.
|
@@ -466,6 +493,42 @@ class ConditionalEndpoint::API < Grape::API
|
|
466
493
|
end
|
467
494
|
```
|
468
495
|
|
496
|
+
More complex results can be achieved by using `mounted` as an expression within which the `configuration` is already evaluated as a Hash.
|
497
|
+
|
498
|
+
```ruby
|
499
|
+
class ExpressionEndpointAPI < Grape::API
|
500
|
+
get(mounted { configuration[:route_name] || 'default_name' }) do
|
501
|
+
# some logic
|
502
|
+
end
|
503
|
+
end
|
504
|
+
```
|
505
|
+
|
506
|
+
```ruby
|
507
|
+
class BasicAPI < Grape::API
|
508
|
+
desc 'Statuses index' do
|
509
|
+
params: mounted { configuration[:entity] || API::Entities::Status }.documentation
|
510
|
+
end
|
511
|
+
params do
|
512
|
+
requires :all, using: mounted { configuration[:entity] || API::Entities::Status }.documentation
|
513
|
+
end
|
514
|
+
get '/statuses' do
|
515
|
+
statuses = Status.all
|
516
|
+
type = current_user.admin? ? :full : :default
|
517
|
+
present statuses, with: mounted { configuration[:entity] || API::Entities::Status }, type: type
|
518
|
+
end
|
519
|
+
end
|
520
|
+
|
521
|
+
class V1 < Grape::API
|
522
|
+
version 'v1'
|
523
|
+
mount BasicAPI, with: { entity: mounted { configuration[:entity] || API::Enitities::Status } }
|
524
|
+
end
|
525
|
+
|
526
|
+
class V2 < Grape::API
|
527
|
+
version 'v2'
|
528
|
+
mount BasicAPI, with: { entity: mounted { configuration[:entity] || API::Enitities::V2::Status } }
|
529
|
+
end
|
530
|
+
```
|
531
|
+
|
469
532
|
## Versioning
|
470
533
|
|
471
534
|
There are four strategies in which clients can reach your API's endpoints: `:path`,
|
@@ -612,6 +675,17 @@ Grape.configure do |config|
|
|
612
675
|
end
|
613
676
|
```
|
614
677
|
|
678
|
+
You can also configure a single API:
|
679
|
+
|
680
|
+
```ruby
|
681
|
+
API.configure do |config|
|
682
|
+
config[key] = value
|
683
|
+
end
|
684
|
+
```
|
685
|
+
|
686
|
+
This will be available inside the API with `configuration`, as if it were
|
687
|
+
[mount configuration](#mount-configuration).
|
688
|
+
|
615
689
|
## Parameters
|
616
690
|
|
617
691
|
Request parameters are available through the `params` hash object. This includes `GET`, `POST`
|
@@ -1886,6 +1960,56 @@ error! 'Unauthorized', 401, 'X-Error-Detail' => 'Invalid token.'
|
|
1886
1960
|
|
1887
1961
|
## Routes
|
1888
1962
|
|
1963
|
+
To define routes you can use the `route` method or the shorthands for the HTTP verbs. To define a route that accepts any route set to `:any`.
|
1964
|
+
Parts of the path that are denoted with a colon will be interpreted as route parameters.
|
1965
|
+
|
1966
|
+
```ruby
|
1967
|
+
route :get, 'status' do
|
1968
|
+
end
|
1969
|
+
|
1970
|
+
# is the same as
|
1971
|
+
|
1972
|
+
get 'status' do
|
1973
|
+
end
|
1974
|
+
|
1975
|
+
# is the same as
|
1976
|
+
|
1977
|
+
get :status do
|
1978
|
+
end
|
1979
|
+
|
1980
|
+
# is NOT the same as
|
1981
|
+
|
1982
|
+
get ':status' do # this makes param[:status] available
|
1983
|
+
end
|
1984
|
+
|
1985
|
+
# This will make both param[:status_id] and param[:id] available
|
1986
|
+
|
1987
|
+
get 'statuses/:status_id/reviews/:id' do
|
1988
|
+
end
|
1989
|
+
```
|
1990
|
+
|
1991
|
+
To declare a namespace that prefixes all routes within, use the `namespace` method. `group`, `resource`, `resources` and `segment` are aliases to this method. Any endpoints within will share their parent context as well as any configuration done in the namespace context.
|
1992
|
+
|
1993
|
+
The `route_param` method is a convenient method for defining a parameter route segment. If you define a type, it will add a validation for this parameter.
|
1994
|
+
|
1995
|
+
```ruby
|
1996
|
+
route_param :id, type: Integer do
|
1997
|
+
get 'status' do
|
1998
|
+
end
|
1999
|
+
end
|
2000
|
+
|
2001
|
+
# is the same as
|
2002
|
+
|
2003
|
+
namespace ':id' do
|
2004
|
+
params do
|
2005
|
+
requires :id, type: Integer
|
2006
|
+
end
|
2007
|
+
|
2008
|
+
get 'status' do
|
2009
|
+
end
|
2010
|
+
end
|
2011
|
+
```
|
2012
|
+
|
1889
2013
|
Optionally, you can define requirements for your named route parameters using regular
|
1890
2014
|
expressions on namespace or endpoint. The route will match only if all requirements are met.
|
1891
2015
|
|
@@ -2467,6 +2591,17 @@ class Twitter::API < Grape::API
|
|
2467
2591
|
end
|
2468
2592
|
```
|
2469
2593
|
|
2594
|
+
Inside the `rescue_from` block, the environment of the original controller method(`.self` receiver) is accessible through the `#context` method.
|
2595
|
+
|
2596
|
+
```ruby
|
2597
|
+
class Twitter::API < Grape::API
|
2598
|
+
rescue_from :all do |e|
|
2599
|
+
user_id = context.params[:user_id]
|
2600
|
+
error!("error for #{user_id}")
|
2601
|
+
end
|
2602
|
+
end
|
2603
|
+
```
|
2604
|
+
|
2470
2605
|
#### Rescuing exceptions inside namespaces
|
2471
2606
|
|
2472
2607
|
You could put `rescue_from` clauses inside a namespace and they will take precedence over ones
|
@@ -2489,7 +2624,7 @@ class Twitter::API < Grape::API
|
|
2489
2624
|
end
|
2490
2625
|
```
|
2491
2626
|
|
2492
|
-
Here `'inner'` will be result of handling
|
2627
|
+
Here `'inner'` will be result of handling occurred `ArgumentError`.
|
2493
2628
|
|
2494
2629
|
#### Unrescuable Exceptions
|
2495
2630
|
|
@@ -3091,6 +3226,8 @@ end
|
|
3091
3226
|
|
3092
3227
|
Use [Doorkeeper](https://github.com/doorkeeper-gem/doorkeeper), [warden-oauth2](https://github.com/opperator/warden-oauth2) or [rack-oauth2](https://github.com/nov/rack-oauth2) for OAuth2 support.
|
3093
3228
|
|
3229
|
+
You can access the controller params, headers, and helpers through the context with the `#context` method inside any auth middleware inherited from `Grape::Middlware::Auth::Base`.
|
3230
|
+
|
3094
3231
|
## Describing and Inspecting an API
|
3095
3232
|
|
3096
3233
|
Grape routes can be reflected at runtime. This can notably be useful for generating documentation.
|
@@ -3403,6 +3540,8 @@ class API < Grape::API
|
|
3403
3540
|
end
|
3404
3541
|
```
|
3405
3542
|
|
3543
|
+
You can access the controller params, headers, and helpers through the context with the `#context` method inside any middleware inherited from `Grape::Middlware::Base`.
|
3544
|
+
|
3406
3545
|
### Rails Middleware
|
3407
3546
|
|
3408
3547
|
Note that when you're using Grape mounted on Rails you don't have to use Rails middleware because it's already included into your middleware stack.
|
@@ -3711,6 +3850,7 @@ Grape integrates with following third-party tools:
|
|
3711
3850
|
* **Librato Metrics** - [grape-librato](https://github.com/seanmoon/grape-librato) gem
|
3712
3851
|
* **[Skylight](https://www.skylight.io/)** - [skylight](https://github.com/skylightio/skylight-ruby) gem, [documentation](https://docs.skylight.io/grape/)
|
3713
3852
|
* **[AppSignal](https://www.appsignal.com)** - [appsignal-ruby](https://github.com/appsignal/appsignal-ruby) gem, [documentation](http://docs.appsignal.com/getting-started/supported-frameworks.html#grape)
|
3853
|
+
* **[ElasticAPM](https://www.elastic.co/products/apm) - [elastic-apm](https://github.com/elastic/apm-agent-ruby) gem, [documentation](https://www.elastic.co/guide/en/apm/agent/ruby/3.x/getting-started-rack.html#getting-started-grape)
|
3714
3854
|
|
3715
3855
|
## Contributing to Grape
|
3716
3856
|
|
data/grape.gemspec
CHANGED
@@ -19,7 +19,9 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_runtime_dependency 'rack-accept'
|
20
20
|
s.add_runtime_dependency 'virtus', '>= 1.0.0'
|
21
21
|
|
22
|
-
s.files =
|
22
|
+
s.files = %w[CHANGELOG.md CONTRIBUTING.md README.md grape.png UPGRADING.md LICENSE]
|
23
|
+
s.files += %w[grape.gemspec]
|
24
|
+
s.files += Dir['lib/**/*']
|
23
25
|
s.test_files = Dir['spec/**/*']
|
24
26
|
s.require_paths = ['lib']
|
25
27
|
end
|
data/lib/grape.rb
CHANGED
@@ -54,106 +54,125 @@ module Grape
|
|
54
54
|
|
55
55
|
module Exceptions
|
56
56
|
extend ::ActiveSupport::Autoload
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
57
|
+
eager_autoload do
|
58
|
+
autoload :Base
|
59
|
+
autoload :Validation
|
60
|
+
autoload :ValidationArrayErrors
|
61
|
+
autoload :ValidationErrors
|
62
|
+
autoload :MissingVendorOption
|
63
|
+
autoload :MissingMimeType
|
64
|
+
autoload :MissingOption
|
65
|
+
autoload :InvalidFormatter
|
66
|
+
autoload :InvalidVersionerOption
|
67
|
+
autoload :UnknownValidator
|
68
|
+
autoload :UnknownOptions
|
69
|
+
autoload :UnknownParameter
|
70
|
+
autoload :InvalidWithOptionForRepresent
|
71
|
+
autoload :IncompatibleOptionValues
|
72
|
+
autoload :MissingGroupTypeError, 'grape/exceptions/missing_group_type'
|
73
|
+
autoload :UnsupportedGroupTypeError, 'grape/exceptions/unsupported_group_type'
|
74
|
+
autoload :InvalidMessageBody
|
75
|
+
autoload :InvalidAcceptHeader
|
76
|
+
autoload :InvalidVersionHeader
|
77
|
+
autoload :MethodNotAllowed
|
78
|
+
autoload :InvalidResponse
|
79
|
+
end
|
78
80
|
end
|
79
81
|
|
80
82
|
module Extensions
|
81
83
|
extend ::ActiveSupport::Autoload
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
84
|
+
eager_autoload do
|
85
|
+
autoload :DeepMergeableHash
|
86
|
+
autoload :DeepSymbolizeHash
|
87
|
+
autoload :DeepHashWithIndifferentAccess
|
88
|
+
autoload :Hash
|
89
|
+
end
|
88
90
|
module ActiveSupport
|
89
91
|
extend ::ActiveSupport::Autoload
|
90
|
-
|
91
|
-
|
92
|
+
eager_autoload do
|
93
|
+
autoload :HashWithIndifferentAccess
|
94
|
+
end
|
92
95
|
end
|
93
96
|
|
94
97
|
module Hashie
|
95
98
|
extend ::ActiveSupport::Autoload
|
96
|
-
|
97
|
-
|
99
|
+
eager_autoload do
|
100
|
+
autoload :Mash
|
101
|
+
end
|
98
102
|
end
|
99
103
|
end
|
100
104
|
|
101
105
|
module Middleware
|
102
106
|
extend ::ActiveSupport::Autoload
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
107
|
+
eager_autoload do
|
108
|
+
autoload :Base
|
109
|
+
autoload :Versioner
|
110
|
+
autoload :Formatter
|
111
|
+
autoload :Error
|
112
|
+
autoload :Globals
|
113
|
+
autoload :Stack
|
114
|
+
autoload :Helpers
|
115
|
+
end
|
109
116
|
|
110
117
|
module Auth
|
111
118
|
extend ::ActiveSupport::Autoload
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
119
|
+
eager_autoload do
|
120
|
+
autoload :Base
|
121
|
+
autoload :DSL
|
122
|
+
autoload :StrategyInfo
|
123
|
+
autoload :Strategies
|
124
|
+
end
|
116
125
|
end
|
117
126
|
|
118
127
|
module Versioner
|
119
128
|
extend ::ActiveSupport::Autoload
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
129
|
+
eager_autoload do
|
130
|
+
autoload :Path
|
131
|
+
autoload :Header
|
132
|
+
autoload :Param
|
133
|
+
autoload :AcceptVersionHeader
|
134
|
+
end
|
124
135
|
end
|
125
136
|
end
|
126
137
|
|
127
138
|
module Util
|
128
139
|
extend ::ActiveSupport::Autoload
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
140
|
+
eager_autoload do
|
141
|
+
autoload :InheritableValues
|
142
|
+
autoload :StackableValues
|
143
|
+
autoload :ReverseStackableValues
|
144
|
+
autoload :InheritableSetting
|
145
|
+
autoload :StrictHashConfiguration
|
146
|
+
autoload :Registrable
|
147
|
+
end
|
135
148
|
end
|
136
149
|
|
137
150
|
module ErrorFormatter
|
138
151
|
extend ::ActiveSupport::Autoload
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
152
|
+
eager_autoload do
|
153
|
+
autoload :Base
|
154
|
+
autoload :Json
|
155
|
+
autoload :Txt
|
156
|
+
autoload :Xml
|
157
|
+
end
|
143
158
|
end
|
144
159
|
|
145
160
|
module Formatter
|
146
161
|
extend ::ActiveSupport::Autoload
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
162
|
+
eager_autoload do
|
163
|
+
autoload :Json
|
164
|
+
autoload :SerializableHash
|
165
|
+
autoload :Txt
|
166
|
+
autoload :Xml
|
167
|
+
end
|
151
168
|
end
|
152
169
|
|
153
170
|
module Parser
|
154
171
|
extend ::ActiveSupport::Autoload
|
155
|
-
|
156
|
-
|
172
|
+
eager_autoload do
|
173
|
+
autoload :Json
|
174
|
+
autoload :Xml
|
175
|
+
end
|
157
176
|
end
|
158
177
|
|
159
178
|
module DSL
|
@@ -177,29 +196,38 @@ module Grape
|
|
177
196
|
|
178
197
|
class API
|
179
198
|
extend ::ActiveSupport::Autoload
|
180
|
-
|
199
|
+
eager_autoload do
|
200
|
+
autoload :Helpers
|
201
|
+
end
|
181
202
|
end
|
182
203
|
|
183
204
|
module Presenters
|
184
205
|
extend ::ActiveSupport::Autoload
|
185
|
-
|
206
|
+
eager_autoload do
|
207
|
+
autoload :Presenter
|
208
|
+
end
|
186
209
|
end
|
187
210
|
|
188
211
|
module ServeFile
|
189
212
|
extend ::ActiveSupport::Autoload
|
190
|
-
|
191
|
-
|
192
|
-
|
213
|
+
eager_autoload do
|
214
|
+
autoload :FileResponse
|
215
|
+
autoload :FileBody
|
216
|
+
autoload :SendfileResponse
|
217
|
+
end
|
193
218
|
end
|
194
219
|
end
|
195
220
|
|
196
221
|
require 'grape/config'
|
197
222
|
require 'grape/util/content_types'
|
198
223
|
require 'grape/util/lazy_value'
|
224
|
+
require 'grape/util/lazy_block'
|
199
225
|
require 'grape/util/endpoint_configuration'
|
200
226
|
|
201
227
|
require 'grape/validations/validators/base'
|
202
228
|
require 'grape/validations/attributes_iterator'
|
229
|
+
require 'grape/validations/single_attribute_iterator'
|
230
|
+
require 'grape/validations/multiple_attributes_iterator'
|
203
231
|
require 'grape/validations/validators/allow_blank'
|
204
232
|
require 'grape/validations/validators/as'
|
205
233
|
require 'grape/validations/validators/at_least_one_of'
|