grape 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -1
  3. data/README.md +362 -316
  4. data/UPGRADING.md +197 -7
  5. data/grape.gemspec +5 -6
  6. data/lib/grape/api/instance.rb +13 -10
  7. data/lib/grape/api.rb +17 -8
  8. data/lib/grape/content_types.rb +0 -2
  9. data/lib/grape/cookies.rb +2 -1
  10. data/lib/grape/dry_types.rb +0 -2
  11. data/lib/grape/dsl/desc.rb +22 -20
  12. data/lib/grape/dsl/headers.rb +1 -1
  13. data/lib/grape/dsl/inside_route.rb +38 -13
  14. data/lib/grape/dsl/parameters.rb +4 -3
  15. data/lib/grape/dsl/routing.rb +20 -4
  16. data/lib/grape/dsl/validations.rb +13 -0
  17. data/lib/grape/endpoint.rb +12 -15
  18. data/lib/grape/{util/env.rb → env.rb} +0 -5
  19. data/lib/grape/error_formatter/txt.rb +11 -10
  20. data/lib/grape/exceptions/base.rb +3 -3
  21. data/lib/grape/exceptions/validation.rb +0 -2
  22. data/lib/grape/exceptions/validation_array_errors.rb +1 -0
  23. data/lib/grape/exceptions/validation_errors.rb +1 -3
  24. data/lib/grape/extensions/hash.rb +5 -1
  25. data/lib/grape/http/headers.rb +18 -34
  26. data/lib/grape/{util/json.rb → json.rb} +1 -3
  27. data/lib/grape/locale/en.yml +3 -0
  28. data/lib/grape/middleware/auth/base.rb +0 -2
  29. data/lib/grape/middleware/auth/dsl.rb +0 -2
  30. data/lib/grape/middleware/base.rb +0 -2
  31. data/lib/grape/middleware/error.rb +55 -50
  32. data/lib/grape/middleware/formatter.rb +16 -13
  33. data/lib/grape/middleware/globals.rb +1 -3
  34. data/lib/grape/middleware/stack.rb +2 -3
  35. data/lib/grape/middleware/versioner/accept_version_header.rb +0 -2
  36. data/lib/grape/middleware/versioner/header.rb +17 -163
  37. data/lib/grape/middleware/versioner/param.rb +2 -4
  38. data/lib/grape/middleware/versioner/path.rb +1 -3
  39. data/lib/grape/namespace.rb +3 -4
  40. data/lib/grape/path.rb +24 -29
  41. data/lib/grape/request.rb +4 -12
  42. data/lib/grape/router/base_route.rb +39 -0
  43. data/lib/grape/router/greedy_route.rb +20 -0
  44. data/lib/grape/router/pattern.rb +39 -30
  45. data/lib/grape/router/route.rb +22 -59
  46. data/lib/grape/router.rb +30 -36
  47. data/lib/grape/util/accept/header.rb +19 -0
  48. data/lib/grape/util/accept_header_handler.rb +105 -0
  49. data/lib/grape/util/base_inheritable.rb +4 -4
  50. data/lib/grape/util/cache.rb +0 -3
  51. data/lib/grape/util/endpoint_configuration.rb +1 -1
  52. data/lib/grape/util/header.rb +13 -0
  53. data/lib/grape/util/inheritable_values.rb +0 -2
  54. data/lib/grape/util/lazy/block.rb +29 -0
  55. data/lib/grape/util/lazy/object.rb +45 -0
  56. data/lib/grape/util/lazy/value.rb +38 -0
  57. data/lib/grape/util/lazy/value_array.rb +21 -0
  58. data/lib/grape/util/lazy/value_enumerable.rb +34 -0
  59. data/lib/grape/util/lazy/value_hash.rb +21 -0
  60. data/lib/grape/util/media_type.rb +70 -0
  61. data/lib/grape/util/reverse_stackable_values.rb +1 -6
  62. data/lib/grape/util/stackable_values.rb +1 -6
  63. data/lib/grape/util/strict_hash_configuration.rb +3 -3
  64. data/lib/grape/validations/attributes_doc.rb +38 -36
  65. data/lib/grape/validations/contract_scope.rb +71 -0
  66. data/lib/grape/validations/params_scope.rb +10 -9
  67. data/lib/grape/validations/types/array_coercer.rb +0 -2
  68. data/lib/grape/validations/types/build_coercer.rb +69 -71
  69. data/lib/grape/validations/types/dry_type_coercer.rb +1 -11
  70. data/lib/grape/validations/types/json.rb +0 -2
  71. data/lib/grape/validations/types/primitive_coercer.rb +0 -2
  72. data/lib/grape/validations/types/set_coercer.rb +0 -3
  73. data/lib/grape/validations/types.rb +0 -3
  74. data/lib/grape/validations/validators/base.rb +1 -0
  75. data/lib/grape/validations/validators/default_validator.rb +5 -1
  76. data/lib/grape/validations/validators/length_validator.rb +42 -0
  77. data/lib/grape/validations/validators/values_validator.rb +6 -1
  78. data/lib/grape/validations.rb +3 -7
  79. data/lib/grape/version.rb +1 -1
  80. data/lib/grape/{util/xml.rb → xml.rb} +1 -1
  81. data/lib/grape.rb +30 -274
  82. metadata +31 -37
  83. data/lib/grape/eager_load.rb +0 -20
  84. data/lib/grape/middleware/versioner/parse_media_type_patch.rb +0 -24
  85. data/lib/grape/router/attribute_translator.rb +0 -63
  86. data/lib/grape/util/lazy_block.rb +0 -27
  87. data/lib/grape/util/lazy_object.rb +0 -43
  88. data/lib/grape/util/lazy_value.rb +0 -91
data/lib/grape.rb CHANGED
@@ -1,13 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'logger'
4
- require 'rack'
5
- require 'rack/builder'
6
- require 'rack/accept'
7
- require 'rack/auth/basic'
8
- require 'set'
9
- require 'bigdecimal'
10
- require 'date'
11
3
  require 'active_support'
12
4
  require 'active_support/concern'
13
5
  require 'active_support/configurable'
@@ -24,295 +16,59 @@ require 'active_support/core_ext/hash/indifferent_access'
24
16
  require 'active_support/core_ext/hash/keys'
25
17
  require 'active_support/core_ext/hash/reverse_merge'
26
18
  require 'active_support/core_ext/hash/slice'
19
+ require 'active_support/core_ext/module/delegation'
27
20
  require 'active_support/core_ext/object/blank'
28
21
  require 'active_support/core_ext/object/deep_dup'
29
22
  require 'active_support/core_ext/object/duplicable'
23
+ require 'active_support/core_ext/string/output_safety'
30
24
  require 'active_support/core_ext/string/exclude'
31
- require 'active_support/dependencies/autoload'
32
25
  require 'active_support/deprecation'
33
26
  require 'active_support/inflector'
27
+ require 'active_support/ordered_options'
34
28
  require 'active_support/notifications'
35
- require 'i18n'
29
+
30
+ require 'English'
31
+ require 'bigdecimal'
32
+ require 'date'
33
+ require 'dry-types'
34
+ require 'forwardable'
35
+ require 'json'
36
+ require 'logger'
37
+ require 'mustermann/grape'
38
+ require 'pathname'
39
+ require 'rack'
40
+ require 'rack/auth/basic'
41
+ require 'rack/builder'
42
+ require 'rack/head'
43
+ require 'set'
44
+ require 'singleton'
45
+ require 'zeitwerk'
46
+
47
+ loader = Zeitwerk::Loader.for_gem
48
+ loader.inflector.inflect(
49
+ 'api' => 'API',
50
+ 'dsl' => 'DSL'
51
+ )
52
+ railtie = "#{__dir__}/grape/railtie.rb"
53
+ loader.do_not_eager_load(railtie)
54
+ loader.setup
36
55
 
37
56
  I18n.load_path << File.expand_path('grape/locale/en.yml', __dir__)
38
57
 
39
58
  module Grape
40
59
  include ActiveSupport::Configurable
41
- extend ::ActiveSupport::Autoload
42
60
 
43
61
  def self.deprecator
44
62
  @deprecator ||= ActiveSupport::Deprecation.new('2.0', 'Grape')
45
63
  end
46
64
 
47
- def self.lowercase_headers?
48
- Rack::CONTENT_TYPE == 'content-type'
49
- end
50
-
51
- eager_autoload do
52
- autoload :API
53
- autoload :Endpoint
54
-
55
- autoload :Namespace
56
-
57
- autoload :Path
58
- autoload :Cookies
59
- autoload :Validations
60
- autoload :ErrorFormatter
61
- autoload :Formatter
62
- autoload :Parser
63
- autoload :Request
64
- autoload :Env, 'grape/util/env'
65
- autoload :Json, 'grape/util/json'
66
- autoload :Xml, 'grape/util/xml'
67
- autoload :DryTypes
68
- end
69
-
70
- module Http
71
- extend ::ActiveSupport::Autoload
72
- eager_autoload do
73
- autoload :Headers
74
- end
75
- end
76
-
77
- module Exceptions
78
- extend ::ActiveSupport::Autoload
79
- eager_autoload do
80
- autoload :Base
81
- autoload :Validation
82
- autoload :ValidationArrayErrors
83
- autoload :ValidationErrors
84
- autoload :MissingVendorOption
85
- autoload :MissingMimeType
86
- autoload :MissingOption
87
- autoload :InvalidFormatter
88
- autoload :InvalidVersionerOption
89
- autoload :UnknownValidator
90
- autoload :UnknownOptions
91
- autoload :UnknownParameter
92
- autoload :InvalidWithOptionForRepresent
93
- autoload :IncompatibleOptionValues
94
- autoload :MissingGroupType
95
- autoload :UnsupportedGroupType
96
- autoload :InvalidMessageBody
97
- autoload :InvalidAcceptHeader
98
- autoload :InvalidVersionHeader
99
- autoload :MethodNotAllowed
100
- autoload :InvalidResponse
101
- autoload :EmptyMessageBody
102
- autoload :TooManyMultipartFiles
103
- autoload :MissingGroupTypeError, 'grape/exceptions/missing_group_type'
104
- autoload :UnsupportedGroupTypeError, 'grape/exceptions/unsupported_group_type'
105
- end
106
- end
107
-
108
- module Extensions
109
- extend ::ActiveSupport::Autoload
110
- eager_autoload do
111
- autoload :Hash
112
- end
113
- module ActiveSupport
114
- extend ::ActiveSupport::Autoload
115
- eager_autoload do
116
- autoload :HashWithIndifferentAccess
117
- end
118
- end
119
-
120
- module Hashie
121
- extend ::ActiveSupport::Autoload
122
- eager_autoload do
123
- autoload :Mash
124
- end
125
- end
126
- end
127
-
128
- module Middleware
129
- extend ::ActiveSupport::Autoload
130
- eager_autoload do
131
- autoload :Base
132
- autoload :Versioner
133
- autoload :Formatter
134
- autoload :Error
135
- autoload :Globals
136
- autoload :Stack
137
- autoload :Helpers
138
- end
139
-
140
- module Auth
141
- extend ::ActiveSupport::Autoload
142
- eager_autoload do
143
- autoload :Base
144
- autoload :DSL
145
- autoload :StrategyInfo
146
- autoload :Strategies
147
- end
148
- end
149
-
150
- module Versioner
151
- extend ::ActiveSupport::Autoload
152
- eager_autoload do
153
- autoload :Path
154
- autoload :Header
155
- autoload :Param
156
- autoload :AcceptVersionHeader
157
- end
158
- end
159
- end
160
-
161
- module Util
162
- extend ::ActiveSupport::Autoload
163
- eager_autoload do
164
- autoload :InheritableValues
165
- autoload :StackableValues
166
- autoload :ReverseStackableValues
167
- autoload :InheritableSetting
168
- autoload :StrictHashConfiguration
169
- autoload :Registrable
170
- end
171
- end
172
-
173
- module ErrorFormatter
174
- extend ::ActiveSupport::Autoload
175
- eager_autoload do
176
- autoload :Base
177
- autoload :Json
178
- autoload :Txt
179
- autoload :Xml
180
- end
181
- end
182
-
183
- module Formatter
184
- extend ::ActiveSupport::Autoload
185
- eager_autoload do
186
- autoload :Json
187
- autoload :SerializableHash
188
- autoload :Txt
189
- autoload :Xml
190
- end
191
- end
192
-
193
- module Parser
194
- extend ::ActiveSupport::Autoload
195
- eager_autoload do
196
- autoload :Json
197
- autoload :Xml
198
- end
199
- end
200
-
201
- module DSL
202
- extend ::ActiveSupport::Autoload
203
- eager_autoload do
204
- autoload :API
205
- autoload :Callbacks
206
- autoload :Settings
207
- autoload :Configuration
208
- autoload :InsideRoute
209
- autoload :Helpers
210
- autoload :Middleware
211
- autoload :Parameters
212
- autoload :RequestResponse
213
- autoload :Routing
214
- autoload :Validations
215
- autoload :Logger
216
- autoload :Desc
217
- end
218
- end
219
-
220
- class API
221
- extend ::ActiveSupport::Autoload
222
- eager_autoload do
223
- autoload :Helpers
224
- end
225
- end
226
-
227
- module Presenters
228
- extend ::ActiveSupport::Autoload
229
- eager_autoload do
230
- autoload :Presenter
231
- end
232
- end
233
-
234
- module ServeStream
235
- extend ::ActiveSupport::Autoload
236
- eager_autoload do
237
- autoload :FileBody
238
- autoload :SendfileResponse
239
- autoload :StreamResponse
240
- end
241
- end
242
-
243
- module Validations
244
- extend ::ActiveSupport::Autoload
245
-
246
- eager_autoload do
247
- autoload :AttributesIterator
248
- autoload :MultipleAttributesIterator
249
- autoload :SingleAttributeIterator
250
- autoload :Types
251
- autoload :ParamsScope
252
- autoload :ValidatorFactory
253
- autoload :Base, 'grape/validations/validators/base'
254
- end
255
-
256
- module Types
257
- extend ::ActiveSupport::Autoload
258
-
259
- eager_autoload do
260
- autoload :InvalidValue
261
- autoload :DryTypeCoercer
262
- autoload :ArrayCoercer
263
- autoload :SetCoercer
264
- autoload :PrimitiveCoercer
265
- autoload :CustomTypeCoercer
266
- autoload :CustomTypeCollectionCoercer
267
- autoload :MultipleTypeCoercer
268
- autoload :VariantCollectionCoercer
269
- end
270
- end
271
-
272
- module Validators
273
- extend ::ActiveSupport::Autoload
274
-
275
- eager_autoload do
276
- autoload :Base
277
- autoload :MultipleParamsBase
278
- autoload :AllOrNoneOfValidator
279
- autoload :AllowBlankValidator
280
- autoload :AsValidator
281
- autoload :AtLeastOneOfValidator
282
- autoload :CoerceValidator
283
- autoload :DefaultValidator
284
- autoload :ExactlyOneOfValidator
285
- autoload :ExceptValuesValidator
286
- autoload :MutualExclusionValidator
287
- autoload :PresenceValidator
288
- autoload :RegexpValidator
289
- autoload :SameAsValidator
290
- autoload :ValuesValidator
291
- end
292
- end
293
- end
294
-
295
- module Types
296
- extend ::ActiveSupport::Autoload
297
-
298
- eager_autoload do
299
- autoload :InvalidValue
300
- end
301
- end
302
-
303
65
  configure do |config|
304
66
  config.param_builder = Grape::Extensions::ActiveSupport::HashWithIndifferentAccess::ParamBuilder
305
67
  config.compile_methods!
306
68
  end
307
69
  end
308
70
 
309
- require 'grape/content_types'
310
-
311
- require 'grape/util/lazy_value'
312
- require 'grape/util/lazy_block'
313
- require 'grape/util/endpoint_configuration'
314
- require 'grape/version'
315
-
316
71
  # https://api.rubyonrails.org/classes/ActiveSupport/Deprecation.html
317
72
  # adding Grape.deprecator to Rails App if any
318
73
  require 'grape/railtie' if defined?(Rails::Railtie) && ActiveSupport.gem_version >= Gem::Version.new('7.1')
74
+ loader.eager_load
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-11 00:00:00.000000000 Z
11
+ date: 2024-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5'
19
+ version: '6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5'
27
- - !ruby/object:Gem::Dependency
28
- name: builder
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: '6'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: dry-types
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,30 +44,30 @@ dependencies:
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: 1.0.0
47
+ version: 1.1.0
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: 1.0.0
54
+ version: 1.1.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rack
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: 1.3.0
61
+ version: '2'
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: 1.3.0
68
+ version: '2'
83
69
  - !ruby/object:Gem::Dependency
84
- name: rack-accept
70
+ name: zeitwerk
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
@@ -129,8 +115,8 @@ files:
129
115
  - lib/grape/dsl/routing.rb
130
116
  - lib/grape/dsl/settings.rb
131
117
  - lib/grape/dsl/validations.rb
132
- - lib/grape/eager_load.rb
133
118
  - lib/grape/endpoint.rb
119
+ - lib/grape/env.rb
134
120
  - lib/grape/error_formatter.rb
135
121
  - lib/grape/error_formatter/base.rb
136
122
  - lib/grape/error_formatter/json.rb
@@ -168,6 +154,7 @@ files:
168
154
  - lib/grape/formatter/txt.rb
169
155
  - lib/grape/formatter/xml.rb
170
156
  - lib/grape/http/headers.rb
157
+ - lib/grape/json.rb
171
158
  - lib/grape/locale/en.yml
172
159
  - lib/grape/middleware/auth/base.rb
173
160
  - lib/grape/middleware/auth/dsl.rb
@@ -184,7 +171,6 @@ files:
184
171
  - lib/grape/middleware/versioner/accept_version_header.rb
185
172
  - lib/grape/middleware/versioner/header.rb
186
173
  - lib/grape/middleware/versioner/param.rb
187
- - lib/grape/middleware/versioner/parse_media_type_patch.rb
188
174
  - lib/grape/middleware/versioner/path.rb
189
175
  - lib/grape/namespace.rb
190
176
  - lib/grape/parser.rb
@@ -195,31 +181,37 @@ files:
195
181
  - lib/grape/railtie.rb
196
182
  - lib/grape/request.rb
197
183
  - lib/grape/router.rb
198
- - lib/grape/router/attribute_translator.rb
184
+ - lib/grape/router/base_route.rb
185
+ - lib/grape/router/greedy_route.rb
199
186
  - lib/grape/router/pattern.rb
200
187
  - lib/grape/router/route.rb
201
188
  - lib/grape/serve_stream/file_body.rb
202
189
  - lib/grape/serve_stream/sendfile_response.rb
203
190
  - lib/grape/serve_stream/stream_response.rb
204
191
  - lib/grape/types/invalid_value.rb
192
+ - lib/grape/util/accept/header.rb
193
+ - lib/grape/util/accept_header_handler.rb
205
194
  - lib/grape/util/base_inheritable.rb
206
195
  - lib/grape/util/cache.rb
207
196
  - lib/grape/util/endpoint_configuration.rb
208
- - lib/grape/util/env.rb
197
+ - lib/grape/util/header.rb
209
198
  - lib/grape/util/inheritable_setting.rb
210
199
  - lib/grape/util/inheritable_values.rb
211
- - lib/grape/util/json.rb
212
- - lib/grape/util/lazy_block.rb
213
- - lib/grape/util/lazy_object.rb
214
- - lib/grape/util/lazy_value.rb
200
+ - lib/grape/util/lazy/block.rb
201
+ - lib/grape/util/lazy/object.rb
202
+ - lib/grape/util/lazy/value.rb
203
+ - lib/grape/util/lazy/value_array.rb
204
+ - lib/grape/util/lazy/value_enumerable.rb
205
+ - lib/grape/util/lazy/value_hash.rb
206
+ - lib/grape/util/media_type.rb
215
207
  - lib/grape/util/registrable.rb
216
208
  - lib/grape/util/reverse_stackable_values.rb
217
209
  - lib/grape/util/stackable_values.rb
218
210
  - lib/grape/util/strict_hash_configuration.rb
219
- - lib/grape/util/xml.rb
220
211
  - lib/grape/validations.rb
221
212
  - lib/grape/validations/attributes_doc.rb
222
213
  - lib/grape/validations/attributes_iterator.rb
214
+ - lib/grape/validations/contract_scope.rb
223
215
  - lib/grape/validations/multiple_attributes_iterator.rb
224
216
  - lib/grape/validations/params_scope.rb
225
217
  - lib/grape/validations/single_attribute_iterator.rb
@@ -246,6 +238,7 @@ files:
246
238
  - lib/grape/validations/validators/default_validator.rb
247
239
  - lib/grape/validations/validators/exactly_one_of_validator.rb
248
240
  - lib/grape/validations/validators/except_values_validator.rb
241
+ - lib/grape/validations/validators/length_validator.rb
249
242
  - lib/grape/validations/validators/multiple_params_base.rb
250
243
  - lib/grape/validations/validators/mutual_exclusion_validator.rb
251
244
  - lib/grape/validations/validators/presence_validator.rb
@@ -253,14 +246,15 @@ files:
253
246
  - lib/grape/validations/validators/same_as_validator.rb
254
247
  - lib/grape/validations/validators/values_validator.rb
255
248
  - lib/grape/version.rb
249
+ - lib/grape/xml.rb
256
250
  homepage: https://github.com/ruby-grape/grape
257
251
  licenses:
258
252
  - MIT
259
253
  metadata:
260
254
  bug_tracker_uri: https://github.com/ruby-grape/grape/issues
261
- changelog_uri: https://github.com/ruby-grape/grape/blob/v2.0.0/CHANGELOG.md
262
- documentation_uri: https://www.rubydoc.info/gems/grape/2.0.0
263
- source_code_uri: https://github.com/ruby-grape/grape/tree/v2.0.0
255
+ changelog_uri: https://github.com/ruby-grape/grape/blob/v2.1.0/CHANGELOG.md
256
+ documentation_uri: https://www.rubydoc.info/gems/grape/2.1.0
257
+ source_code_uri: https://github.com/ruby-grape/grape/tree/v2.1.0
264
258
  post_install_message:
265
259
  rdoc_options: []
266
260
  require_paths:
@@ -269,14 +263,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
269
263
  requirements:
270
264
  - - ">="
271
265
  - !ruby/object:Gem::Version
272
- version: 2.6.0
266
+ version: 2.7.0
273
267
  required_rubygems_version: !ruby/object:Gem::Requirement
274
268
  requirements:
275
269
  - - ">="
276
270
  - !ruby/object:Gem::Version
277
271
  version: '0'
278
272
  requirements: []
279
- rubygems_version: 3.4.6
273
+ rubygems_version: 3.5.7
280
274
  signing_key:
281
275
  specification_version: 4
282
276
  summary: A simple Ruby framework for building REST-like APIs.
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Grape.eager_load!
4
- Grape::Http.eager_load!
5
- Grape::Exceptions.eager_load!
6
- Grape::Extensions.eager_load!
7
- Grape::Extensions::ActiveSupport.eager_load!
8
- Grape::Extensions::Hashie.eager_load!
9
- Grape::Middleware.eager_load!
10
- Grape::Middleware::Auth.eager_load!
11
- Grape::Middleware::Versioner.eager_load!
12
- Grape::Util.eager_load!
13
- Grape::ErrorFormatter.eager_load!
14
- Grape::Formatter.eager_load!
15
- Grape::Parser.eager_load!
16
- Grape::DSL.eager_load!
17
- Grape::API.eager_load!
18
- Grape::Presenters.eager_load!
19
- Grape::ServeStream.eager_load!
20
- Rack::Head # AutoLoads the Rack::Head
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'English'
4
- module Rack
5
- module Accept
6
- module Header
7
- ALLOWED_CHARACTERS = %r{^([a-z*]+)/([a-z0-9*&\^\-_#{$ERROR_INFO}.+]+)(?:;([a-z0-9=;]+))?$}.freeze
8
- class << self
9
- # Corrected version of https://github.com/mjackson/rack-accept/blob/master/lib/rack/accept/header.rb#L40-L44
10
- def parse_media_type(media_type)
11
- # see http://tools.ietf.org/html/rfc6838#section-4.2 for allowed characters in media type names
12
- m = media_type&.match(ALLOWED_CHARACTERS)
13
- m ? [m[1], m[2], m[3] || ''] : []
14
- end
15
- end
16
- end
17
-
18
- class MediaType
19
- def parse_media_type(media_type)
20
- Header.parse_media_type(media_type)
21
- end
22
- end
23
- end
24
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Grape
4
- class Router
5
- # this could be an OpenStruct, but doesn't work in Ruby 2.3.0, see https://bugs.ruby-lang.org/issues/12251
6
- class AttributeTranslator
7
- attr_reader :attributes
8
-
9
- ROUTE_ATTRIBUTES = %i[
10
- prefix
11
- version
12
- settings
13
- format
14
- description
15
- http_codes
16
- headers
17
- entity
18
- details
19
- requirements
20
- request_method
21
- namespace
22
- ].freeze
23
-
24
- ROUTER_ATTRIBUTES = %i[pattern index].freeze
25
-
26
- def initialize(**attributes)
27
- @attributes = attributes
28
- end
29
-
30
- (ROUTER_ATTRIBUTES + ROUTE_ATTRIBUTES).each do |attr|
31
- define_method attr do
32
- attributes[attr]
33
- end
34
- end
35
-
36
- def to_h
37
- attributes
38
- end
39
-
40
- def method_missing(method_name, *args)
41
- if setter?(method_name[-1])
42
- attributes[method_name[0..]] = *args
43
- else
44
- attributes[method_name]
45
- end
46
- end
47
-
48
- def respond_to_missing?(method_name, _include_private = false)
49
- if setter?(method_name[-1])
50
- true
51
- else
52
- @attributes.key?(method_name)
53
- end
54
- end
55
-
56
- private
57
-
58
- def setter?(method_name)
59
- method_name[-1] == '='
60
- end
61
- end
62
- end
63
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Grape
4
- module Util
5
- class LazyBlock
6
- def initialize(&new_block)
7
- @block = new_block
8
- end
9
-
10
- def evaluate_from(configuration)
11
- @block.call(configuration)
12
- end
13
-
14
- def evaluate
15
- @block.call({})
16
- end
17
-
18
- def lazy?
19
- true
20
- end
21
-
22
- def to_s
23
- evaluate.to_s
24
- end
25
- end
26
- end
27
- end