grape 0.3.0 → 0.7.0

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.

Potentially problematic release.


This version of grape might be problematic. Click here for more details.

Files changed (101) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +8 -0
  3. data/.rubocop.yml +70 -0
  4. data/.travis.yml +7 -6
  5. data/CHANGELOG.md +134 -4
  6. data/CONTRIBUTING.md +118 -0
  7. data/Gemfile +5 -2
  8. data/README.md +551 -116
  9. data/RELEASING.md +105 -0
  10. data/Rakefile +29 -8
  11. data/UPGRADING.md +124 -0
  12. data/grape.gemspec +3 -3
  13. data/lib/grape/api.rb +207 -88
  14. data/lib/grape/cookies.rb +4 -8
  15. data/lib/grape/endpoint.rb +198 -144
  16. data/lib/grape/error_formatter/base.rb +5 -7
  17. data/lib/grape/error_formatter/json.rb +3 -5
  18. data/lib/grape/error_formatter/txt.rb +1 -3
  19. data/lib/grape/error_formatter/xml.rb +4 -6
  20. data/lib/grape/exceptions/base.rb +9 -9
  21. data/lib/grape/exceptions/incompatible_option_values.rb +10 -0
  22. data/lib/grape/exceptions/invalid_formatter.rb +1 -4
  23. data/lib/grape/exceptions/invalid_versioner_option.rb +1 -5
  24. data/lib/grape/exceptions/invalid_with_option_for_represent.rb +1 -6
  25. data/lib/grape/exceptions/missing_mime_type.rb +1 -5
  26. data/lib/grape/exceptions/missing_option.rb +1 -4
  27. data/lib/grape/exceptions/missing_vendor_option.rb +1 -4
  28. data/lib/grape/exceptions/unknown_options.rb +1 -5
  29. data/lib/grape/exceptions/unknown_validator.rb +1 -3
  30. data/lib/grape/exceptions/validation.rb +13 -3
  31. data/lib/grape/exceptions/validation_errors.rb +43 -0
  32. data/lib/grape/formatter/base.rb +5 -7
  33. data/lib/grape/formatter/json.rb +0 -3
  34. data/lib/grape/formatter/serializable_hash.rb +15 -15
  35. data/lib/grape/formatter/txt.rb +0 -2
  36. data/lib/grape/formatter/xml.rb +0 -2
  37. data/lib/grape/http/request.rb +26 -0
  38. data/lib/grape/locale/en.yml +8 -5
  39. data/lib/grape/middleware/auth/base.rb +30 -0
  40. data/lib/grape/middleware/auth/basic.rb +3 -20
  41. data/lib/grape/middleware/auth/digest.rb +2 -19
  42. data/lib/grape/middleware/auth/oauth2.rb +31 -24
  43. data/lib/grape/middleware/base.rb +7 -7
  44. data/lib/grape/middleware/error.rb +36 -22
  45. data/lib/grape/middleware/filter.rb +3 -3
  46. data/lib/grape/middleware/formatter.rb +99 -61
  47. data/lib/grape/middleware/globals.rb +13 -0
  48. data/lib/grape/middleware/versioner/accept_version_header.rb +67 -0
  49. data/lib/grape/middleware/versioner/header.rb +22 -16
  50. data/lib/grape/middleware/versioner/param.rb +9 -11
  51. data/lib/grape/middleware/versioner/path.rb +10 -13
  52. data/lib/grape/middleware/versioner.rb +3 -1
  53. data/lib/grape/namespace.rb +23 -0
  54. data/lib/grape/parser/base.rb +3 -5
  55. data/lib/grape/parser/json.rb +0 -2
  56. data/lib/grape/parser/xml.rb +0 -2
  57. data/lib/grape/path.rb +70 -0
  58. data/lib/grape/route.rb +10 -6
  59. data/lib/grape/util/content_types.rb +2 -1
  60. data/lib/grape/util/deep_merge.rb +5 -5
  61. data/lib/grape/util/hash_stack.rb +13 -2
  62. data/lib/grape/validations/coerce.rb +11 -10
  63. data/lib/grape/validations/default.rb +25 -0
  64. data/lib/grape/validations/presence.rb +7 -3
  65. data/lib/grape/validations/regexp.rb +2 -5
  66. data/lib/grape/validations/values.rb +17 -0
  67. data/lib/grape/validations.rb +161 -54
  68. data/lib/grape/version.rb +1 -1
  69. data/lib/grape.rb +19 -4
  70. data/spec/grape/api_spec.rb +897 -268
  71. data/spec/grape/endpoint_spec.rb +283 -66
  72. data/spec/grape/entity_spec.rb +132 -29
  73. data/spec/grape/exceptions/missing_mime_type_spec.rb +3 -9
  74. data/spec/grape/exceptions/validation_errors_spec.rb +19 -0
  75. data/spec/grape/middleware/auth/basic_spec.rb +8 -8
  76. data/spec/grape/middleware/auth/digest_spec.rb +5 -5
  77. data/spec/grape/middleware/auth/oauth2_spec.rb +81 -36
  78. data/spec/grape/middleware/base_spec.rb +8 -13
  79. data/spec/grape/middleware/error_spec.rb +13 -17
  80. data/spec/grape/middleware/exception_spec.rb +47 -27
  81. data/spec/grape/middleware/formatter_spec.rb +103 -41
  82. data/spec/grape/middleware/versioner/accept_version_header_spec.rb +121 -0
  83. data/spec/grape/middleware/versioner/header_spec.rb +76 -51
  84. data/spec/grape/middleware/versioner/param_spec.rb +18 -18
  85. data/spec/grape/middleware/versioner/path_spec.rb +6 -6
  86. data/spec/grape/middleware/versioner_spec.rb +5 -2
  87. data/spec/grape/path_spec.rb +229 -0
  88. data/spec/grape/util/hash_stack_spec.rb +31 -32
  89. data/spec/grape/validations/coerce_spec.rb +116 -51
  90. data/spec/grape/validations/default_spec.rb +123 -0
  91. data/spec/grape/validations/presence_spec.rb +42 -44
  92. data/spec/grape/validations/regexp_spec.rb +9 -9
  93. data/spec/grape/validations/values_spec.rb +138 -0
  94. data/spec/grape/validations/zh-CN.yml +4 -3
  95. data/spec/grape/validations_spec.rb +681 -48
  96. data/spec/shared/versioning_examples.rb +22 -6
  97. data/spec/spec_helper.rb +3 -2
  98. data/spec/support/basic_auth_encode_helpers.rb +0 -1
  99. data/spec/support/content_type_helpers.rb +11 -0
  100. data/spec/support/versioned_helpers.rb +13 -5
  101. metadata +34 -84
@@ -1,20 +1,22 @@
1
1
  shared_examples_for 'versioning' do
2
2
  it 'sets the API version' do
3
+ subject.format :txt
3
4
  subject.version 'v1', macro_options
4
5
  subject.get :hello do
5
- "Version: #{request.env['api.version']}"
6
+ "Version: #{request.env['api.version'] }"
6
7
  end
7
8
  versioned_get '/hello', 'v1', macro_options
8
9
  last_response.body.should eql "Version: v1"
9
10
  end
10
11
 
11
12
  it 'adds the prefix before the API version' do
13
+ subject.format :txt
12
14
  subject.prefix 'api'
13
15
  subject.version 'v1', macro_options
14
16
  subject.get :hello do
15
- "Version: #{request.env['api.version']}"
17
+ "Version: #{request.env['api.version'] }"
16
18
  end
17
- versioned_get '/hello', 'v1', macro_options.merge(:prefix => 'api')
19
+ versioned_get '/hello', 'v1', macro_options.merge(prefix: 'api')
18
20
  last_response.body.should eql "Version: v1"
19
21
  end
20
22
 
@@ -58,6 +60,7 @@ shared_examples_for 'versioning' do
58
60
  context 'with different versions for the same endpoint' do
59
61
  context 'without a prefix' do
60
62
  it 'allows the same endpoint to be implemented' do
63
+ subject.format :txt
61
64
  subject.version 'v2', macro_options
62
65
  subject.get 'version' do
63
66
  request.env['api.version']
@@ -79,7 +82,8 @@ shared_examples_for 'versioning' do
79
82
  end
80
83
 
81
84
  context 'with a prefix' do
82
- it 'allows the same endpoint to be implemented' do
85
+ it 'allows the same endpoint to be implemented' do
86
+ subject.format :txt
83
87
  subject.prefix 'api'
84
88
  subject.version 'v2', macro_options
85
89
  subject.get 'version' do
@@ -92,14 +96,26 @@ shared_examples_for 'versioning' do
92
96
  end
93
97
  end
94
98
 
95
- versioned_get '/version', 'v1', macro_options.merge(:prefix => subject.prefix)
99
+ versioned_get '/version', 'v1', macro_options.merge(prefix: subject.prefix)
96
100
  last_response.status.should == 200
97
101
  last_response.body.should == 'version v1'
98
102
 
99
- versioned_get '/version', 'v2', macro_options.merge(:prefix => subject.prefix)
103
+ versioned_get '/version', 'v2', macro_options.merge(prefix: subject.prefix)
100
104
  last_response.status.should == 200
101
105
  last_response.body.should == 'v2'
102
106
  end
103
107
  end
104
108
  end
109
+
110
+ it 'does not overwrite version parameter with API version' do
111
+ subject.format :txt
112
+ subject.version 'v1', macro_options
113
+ subject.params { requires :version }
114
+ subject.get :api_version_with_version_param do
115
+ params[:version]
116
+ end
117
+ versioned_get '/api_version_with_version_param?version=1', 'v1', macro_options
118
+ last_response.body.should eql '1'
119
+ end
120
+
105
121
  end
data/spec/spec_helper.rb CHANGED
@@ -4,8 +4,6 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'support'))
4
4
 
5
5
  require 'grape'
6
6
 
7
- # require 'grape-entity'
8
-
9
7
  require 'rubygems'
10
8
  require 'bundler'
11
9
  Bundler.setup :default, :test
@@ -14,11 +12,14 @@ require 'rack/test'
14
12
  require 'pry'
15
13
  require 'base64'
16
14
  require 'cookiejar'
15
+ require 'json'
17
16
 
18
17
  Dir["#{File.dirname(__FILE__)}/support/*.rb"].each do |file|
19
18
  require file
20
19
  end
21
20
 
21
+ I18n.enforce_available_locales = false
22
+
22
23
  RSpec.configure do |config|
23
24
  config.include Rack::Test::Methods
24
25
  end
@@ -1,4 +1,3 @@
1
1
  def encode_basic_auth(username, password)
2
2
  "Basic " + Base64.encode64("#{username}:#{password}")
3
3
  end
4
-
@@ -0,0 +1,11 @@
1
+ module ContentTypeHelpers
2
+ %w(put patch post delete).each do |method|
3
+ define_method :"#{method}_with_json" do |uri, params = {}, env = {}, &block|
4
+ params = params.to_json
5
+ env["CONTENT_TYPE"] ||= "application/json"
6
+ send(method, uri, params, env, &block)
7
+ end
8
+ end
9
+ end
10
+
11
+ include(ContentTypeHelpers)
@@ -10,6 +10,8 @@ def versioned_path(options = {})
10
10
  File.join('/', options[:prefix] || '', options[:path])
11
11
  when :header
12
12
  File.join('/', options[:prefix] || '', options[:path])
13
+ when :accept_version_header
14
+ File.join('/', options[:prefix] || '', options[:path])
13
15
  else
14
16
  raise ArgumentError.new("unknown versioning strategy: #{options[:using]}")
15
17
  end
@@ -23,7 +25,14 @@ def versioned_headers(options)
23
25
  {} # no-op
24
26
  when :header
25
27
  {
26
- 'HTTP_ACCEPT' => "application/vnd.#{options[:vendor]}-#{options[:version]}+#{options[:format]}"
28
+ 'HTTP_ACCEPT' => [
29
+ "application/vnd.#{options[:vendor] }-#{options[:version] }",
30
+ options[:format]
31
+ ].compact.join("+")
32
+ }
33
+ when :accept_version_header
34
+ {
35
+ 'HTTP_ACCEPT_VERSION' => "#{options[:version] }"
27
36
  }
28
37
  else
29
38
  raise ArgumentError.new("unknown versioning strategy: #{options[:using]}")
@@ -31,12 +40,11 @@ def versioned_headers(options)
31
40
  end
32
41
 
33
42
  def versioned_get(path, version_name, version_options = {})
34
- path = versioned_path(version_options.merge(:version => version_name, :path => path))
35
- headers = versioned_headers(version_options.merge(:version => version_name))
43
+ path = versioned_path(version_options.merge(version: version_name, path: path))
44
+ headers = versioned_headers(version_options.merge(version: version_name))
36
45
  params = {}
37
46
  if version_options[:using] == :param
38
- params = { version_options[:parameter] => version_name }
47
+ params = { version_options[:parameter] => version_name }
39
48
  end
40
49
  get path, params, headers
41
50
  end
42
-
metadata CHANGED
@@ -1,36 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Bleigh
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-21 00:00:00.000000000 Z
11
+ date: 2014-04-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rack
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 1.3.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: 1.3.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rack-mount
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rack-accept
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: activesupport
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: multi_json
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ! '>='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: multi_xml
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ! '>='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - ! '>='
108
95
  - !ruby/object:Gem::Version
@@ -110,39 +97,34 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: hashie
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ~>
101
+ - - ! '>='
116
102
  - !ruby/object:Gem::Version
117
- version: '1.2'
103
+ version: 1.2.0
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ~>
108
+ - - ! '>='
124
109
  - !ruby/object:Gem::Version
125
- version: '1.2'
110
+ version: 1.2.0
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: virtus
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - ! '>='
132
116
  - !ruby/object:Gem::Version
133
- version: '0'
117
+ version: 1.0.0
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - ! '>='
140
123
  - !ruby/object:Gem::Version
141
- version: '0'
124
+ version: 1.0.0
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: builder
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - ! '>='
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - ! '>='
156
137
  - !ruby/object:Gem::Version
@@ -158,7 +139,6 @@ dependencies:
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: grape-entity
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
143
  - - ! '>='
164
144
  - !ruby/object:Gem::Version
@@ -166,7 +146,6 @@ dependencies:
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
150
  - - ! '>='
172
151
  - !ruby/object:Gem::Version
@@ -174,7 +153,6 @@ dependencies:
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: rake
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
157
  - - ! '>='
180
158
  - !ruby/object:Gem::Version
@@ -182,7 +160,6 @@ dependencies:
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
164
  - - ! '>='
188
165
  - !ruby/object:Gem::Version
@@ -190,7 +167,6 @@ dependencies:
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: maruku
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
171
  - - ! '>='
196
172
  - !ruby/object:Gem::Version
@@ -198,7 +174,6 @@ dependencies:
198
174
  type: :development
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
178
  - - ! '>='
204
179
  - !ruby/object:Gem::Version
@@ -206,7 +181,6 @@ dependencies:
206
181
  - !ruby/object:Gem::Dependency
207
182
  name: yard
208
183
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
184
  requirements:
211
185
  - - ! '>='
212
186
  - !ruby/object:Gem::Version
@@ -214,7 +188,6 @@ dependencies:
214
188
  type: :development
215
189
  prerelease: false
216
190
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
191
  requirements:
219
192
  - - ! '>='
220
193
  - !ruby/object:Gem::Version
@@ -222,7 +195,6 @@ dependencies:
222
195
  - !ruby/object:Gem::Dependency
223
196
  name: rack-test
224
197
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
198
  requirements:
227
199
  - - ! '>='
228
200
  - !ruby/object:Gem::Version
@@ -230,7 +202,6 @@ dependencies:
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
205
  requirements:
235
206
  - - ! '>='
236
207
  - !ruby/object:Gem::Version
@@ -238,7 +209,6 @@ dependencies:
238
209
  - !ruby/object:Gem::Dependency
239
210
  name: rspec
240
211
  requirement: !ruby/object:Gem::Requirement
241
- none: false
242
212
  requirements:
243
213
  - - ~>
244
214
  - !ruby/object:Gem::Version
@@ -246,7 +216,6 @@ dependencies:
246
216
  type: :development
247
217
  prerelease: false
248
218
  version_requirements: !ruby/object:Gem::Requirement
249
- none: false
250
219
  requirements:
251
220
  - - ~>
252
221
  - !ruby/object:Gem::Version
@@ -254,7 +223,6 @@ dependencies:
254
223
  - !ruby/object:Gem::Dependency
255
224
  name: bundler
256
225
  requirement: !ruby/object:Gem::Requirement
257
- none: false
258
226
  requirements:
259
227
  - - ! '>='
260
228
  - !ruby/object:Gem::Version
@@ -262,7 +230,6 @@ dependencies:
262
230
  type: :development
263
231
  prerelease: false
264
232
  version_requirements: !ruby/object:Gem::Requirement
265
- none: false
266
233
  requirements:
267
234
  - - ! '>='
268
235
  - !ruby/object:Gem::Version
@@ -276,14 +243,18 @@ extra_rdoc_files: []
276
243
  files:
277
244
  - .gitignore
278
245
  - .rspec
246
+ - .rubocop.yml
279
247
  - .travis.yml
280
248
  - .yardopts
281
249
  - CHANGELOG.md
250
+ - CONTRIBUTING.md
282
251
  - Gemfile
283
252
  - Guardfile
284
253
  - LICENSE
285
254
  - README.md
255
+ - RELEASING.md
286
256
  - Rakefile
257
+ - UPGRADING.md
287
258
  - grape.gemspec
288
259
  - lib/grape.rb
289
260
  - lib/grape/api.rb
@@ -294,6 +265,7 @@ files:
294
265
  - lib/grape/error_formatter/txt.rb
295
266
  - lib/grape/error_formatter/xml.rb
296
267
  - lib/grape/exceptions/base.rb
268
+ - lib/grape/exceptions/incompatible_option_values.rb
297
269
  - lib/grape/exceptions/invalid_formatter.rb
298
270
  - lib/grape/exceptions/invalid_versioner_option.rb
299
271
  - lib/grape/exceptions/invalid_with_option_for_represent.rb
@@ -303,12 +275,15 @@ files:
303
275
  - lib/grape/exceptions/unknown_options.rb
304
276
  - lib/grape/exceptions/unknown_validator.rb
305
277
  - lib/grape/exceptions/validation.rb
278
+ - lib/grape/exceptions/validation_errors.rb
306
279
  - lib/grape/formatter/base.rb
307
280
  - lib/grape/formatter/json.rb
308
281
  - lib/grape/formatter/serializable_hash.rb
309
282
  - lib/grape/formatter/txt.rb
310
283
  - lib/grape/formatter/xml.rb
284
+ - lib/grape/http/request.rb
311
285
  - lib/grape/locale/en.yml
286
+ - lib/grape/middleware/auth/base.rb
312
287
  - lib/grape/middleware/auth/basic.rb
313
288
  - lib/grape/middleware/auth/digest.rb
314
289
  - lib/grape/middleware/auth/oauth2.rb
@@ -316,21 +291,27 @@ files:
316
291
  - lib/grape/middleware/error.rb
317
292
  - lib/grape/middleware/filter.rb
318
293
  - lib/grape/middleware/formatter.rb
294
+ - lib/grape/middleware/globals.rb
319
295
  - lib/grape/middleware/versioner.rb
296
+ - lib/grape/middleware/versioner/accept_version_header.rb
320
297
  - lib/grape/middleware/versioner/header.rb
321
298
  - lib/grape/middleware/versioner/param.rb
322
299
  - lib/grape/middleware/versioner/path.rb
300
+ - lib/grape/namespace.rb
323
301
  - lib/grape/parser/base.rb
324
302
  - lib/grape/parser/json.rb
325
303
  - lib/grape/parser/xml.rb
304
+ - lib/grape/path.rb
326
305
  - lib/grape/route.rb
327
306
  - lib/grape/util/content_types.rb
328
307
  - lib/grape/util/deep_merge.rb
329
308
  - lib/grape/util/hash_stack.rb
330
309
  - lib/grape/validations.rb
331
310
  - lib/grape/validations/coerce.rb
311
+ - lib/grape/validations/default.rb
332
312
  - lib/grape/validations/presence.rb
333
313
  - lib/grape/validations/regexp.rb
314
+ - lib/grape/validations/values.rb
334
315
  - lib/grape/version.rb
335
316
  - spec/grape/api_spec.rb
336
317
  - spec/grape/endpoint_spec.rb
@@ -341,6 +322,7 @@ files:
341
322
  - spec/grape/exceptions/missing_option_spec.rb
342
323
  - spec/grape/exceptions/unknown_options_spec.rb
343
324
  - spec/grape/exceptions/unknown_validator_spec.rb
325
+ - spec/grape/exceptions/validation_errors_spec.rb
344
326
  - spec/grape/middleware/auth/basic_spec.rb
345
327
  - spec/grape/middleware/auth/digest_spec.rb
346
328
  - spec/grape/middleware/auth/oauth2_spec.rb
@@ -348,80 +330,48 @@ files:
348
330
  - spec/grape/middleware/error_spec.rb
349
331
  - spec/grape/middleware/exception_spec.rb
350
332
  - spec/grape/middleware/formatter_spec.rb
333
+ - spec/grape/middleware/versioner/accept_version_header_spec.rb
351
334
  - spec/grape/middleware/versioner/header_spec.rb
352
335
  - spec/grape/middleware/versioner/param_spec.rb
353
336
  - spec/grape/middleware/versioner/path_spec.rb
354
337
  - spec/grape/middleware/versioner_spec.rb
338
+ - spec/grape/path_spec.rb
355
339
  - spec/grape/util/hash_stack_spec.rb
356
340
  - spec/grape/validations/coerce_spec.rb
341
+ - spec/grape/validations/default_spec.rb
357
342
  - spec/grape/validations/presence_spec.rb
358
343
  - spec/grape/validations/regexp_spec.rb
344
+ - spec/grape/validations/values_spec.rb
359
345
  - spec/grape/validations/zh-CN.yml
360
346
  - spec/grape/validations_spec.rb
361
347
  - spec/shared/versioning_examples.rb
362
348
  - spec/spec_helper.rb
363
349
  - spec/support/basic_auth_encode_helpers.rb
350
+ - spec/support/content_type_helpers.rb
364
351
  - spec/support/versioned_helpers.rb
365
352
  homepage: https://github.com/intridea/grape
366
353
  licenses:
367
354
  - MIT
355
+ metadata: {}
368
356
  post_install_message:
369
357
  rdoc_options: []
370
358
  require_paths:
371
359
  - lib
372
360
  required_ruby_version: !ruby/object:Gem::Requirement
373
- none: false
374
361
  requirements:
375
362
  - - ! '>='
376
363
  - !ruby/object:Gem::Version
377
364
  version: '0'
378
- segments:
379
- - 0
380
- hash: 1796003249167814741
381
365
  required_rubygems_version: !ruby/object:Gem::Requirement
382
- none: false
383
366
  requirements:
384
367
  - - ! '>='
385
368
  - !ruby/object:Gem::Version
386
369
  version: '0'
387
- segments:
388
- - 0
389
- hash: 1796003249167814741
390
370
  requirements: []
391
371
  rubyforge_project: grape
392
- rubygems_version: 1.8.25
372
+ rubygems_version: 2.2.2
393
373
  signing_key:
394
- specification_version: 3
374
+ specification_version: 4
395
375
  summary: A simple Ruby framework for building REST-like APIs.
396
- test_files:
397
- - spec/grape/api_spec.rb
398
- - spec/grape/endpoint_spec.rb
399
- - spec/grape/entity_spec.rb
400
- - spec/grape/exceptions/invalid_formatter_spec.rb
401
- - spec/grape/exceptions/invalid_versioner_option_spec.rb
402
- - spec/grape/exceptions/missing_mime_type_spec.rb
403
- - spec/grape/exceptions/missing_option_spec.rb
404
- - spec/grape/exceptions/unknown_options_spec.rb
405
- - spec/grape/exceptions/unknown_validator_spec.rb
406
- - spec/grape/middleware/auth/basic_spec.rb
407
- - spec/grape/middleware/auth/digest_spec.rb
408
- - spec/grape/middleware/auth/oauth2_spec.rb
409
- - spec/grape/middleware/base_spec.rb
410
- - spec/grape/middleware/error_spec.rb
411
- - spec/grape/middleware/exception_spec.rb
412
- - spec/grape/middleware/formatter_spec.rb
413
- - spec/grape/middleware/versioner/header_spec.rb
414
- - spec/grape/middleware/versioner/param_spec.rb
415
- - spec/grape/middleware/versioner/path_spec.rb
416
- - spec/grape/middleware/versioner_spec.rb
417
- - spec/grape/util/hash_stack_spec.rb
418
- - spec/grape/validations/coerce_spec.rb
419
- - spec/grape/validations/presence_spec.rb
420
- - spec/grape/validations/regexp_spec.rb
421
- - spec/grape/validations/zh-CN.yml
422
- - spec/grape/validations_spec.rb
423
- - spec/shared/versioning_examples.rb
424
- - spec/spec_helper.rb
425
- - spec/support/basic_auth_encode_helpers.rb
426
- - spec/support/versioned_helpers.rb
376
+ test_files: []
427
377
  has_rdoc: