grape-swagger 0.33.0 → 0.34.2

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -7
  3. data/.rubocop_todo.yml +0 -6
  4. data/.travis.yml +10 -11
  5. data/CHANGELOG.md +72 -6
  6. data/Gemfile +4 -5
  7. data/README.md +68 -4
  8. data/grape-swagger.gemspec +2 -1
  9. data/lib/grape-swagger/doc_methods/build_model_definition.rb +0 -17
  10. data/lib/grape-swagger/doc_methods/extensions.rb +6 -1
  11. data/lib/grape-swagger/doc_methods/format_data.rb +51 -0
  12. data/lib/grape-swagger/doc_methods/move_params.rb +22 -49
  13. data/lib/grape-swagger/doc_methods/parse_params.rb +6 -0
  14. data/lib/grape-swagger/doc_methods.rb +2 -0
  15. data/lib/grape-swagger/endpoint/params_parser.rb +10 -17
  16. data/lib/grape-swagger/endpoint.rb +32 -13
  17. data/lib/grape-swagger/version.rb +1 -1
  18. data/lib/grape-swagger.rb +1 -1
  19. data/spec/issues/751_deeply_nested_objects_spec.rb +190 -0
  20. data/spec/lib/endpoint/params_parser_spec.rb +44 -20
  21. data/spec/lib/endpoint_spec.rb +3 -3
  22. data/spec/lib/extensions_spec.rb +10 -0
  23. data/spec/lib/format_data_spec.rb +91 -0
  24. data/spec/lib/move_params_spec.rb +4 -266
  25. data/spec/lib/optional_object_spec.rb +0 -1
  26. data/spec/spec_helper.rb +1 -1
  27. data/spec/swagger_v2/api_swagger_v2_hash_and_array_spec.rb +3 -1
  28. data/spec/swagger_v2/api_swagger_v2_response_with_root_spec.rb +153 -0
  29. data/spec/swagger_v2/description_not_initialized_spec.rb +39 -0
  30. data/spec/swagger_v2/endpoint_versioned_path_spec.rb +33 -0
  31. data/spec/swagger_v2/mounted_target_class_spec.rb +1 -1
  32. data/spec/swagger_v2/namespace_tags_prefix_spec.rb +15 -1
  33. data/spec/swagger_v2/params_array_spec.rb +2 -2
  34. data/spec/swagger_v2/parent_less_namespace_spec.rb +32 -0
  35. data/spec/swagger_v2/{reference_entity.rb → reference_entity_spec.rb} +17 -10
  36. metadata +36 -9
  37. data/spec/swagger_v2/description_not_initialized.rb +0 -39
  38. data/spec/swagger_v2/parent_less_namespace.rb +0 -49
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd05d00a2d4f16e3ecfa826aa0053928231d9e3f2e3316ea1f612c804284d858
4
- data.tar.gz: 7b6637a45c95035939be0a52312f6f16f62bf1f67d788c1d1e6884b1611f6322
3
+ metadata.gz: 1adc600f72fbf0b270ca597d538fc692ab1b06d96aec051dd5aac93b0d9541e4
4
+ data.tar.gz: 90b38eef4b8736e686c57b9ae3a0a047c3be752076a3c51fe81a2b2ace4534d7
5
5
  SHA512:
6
- metadata.gz: 05541a6f1670c730a7fb3c7c4acc422aeecdf562fc3f77477e0721628dac3aeec147ce0653d74a1a7560ddd36fc90075fae23ae58d1ed424445290e801d2856e
7
- data.tar.gz: ac5ce4eadc5bc9dd4ecdac8bd514a339c9157b77f661c8e696c6a527dfc0a2d6d09acc8527351ac1ba0cbbf0e8894959baa5daa7eb0cd41997ca1b9dd9ddb065
6
+ metadata.gz: becc52b89b55eaf20b8e17c39b2a2d53592fbe6a92feb1c50d6f1b80d4ee0b14edb16dbcb5e6168a5d7830b80f8d412af19c78fc0a645aabd1ca3570ed3e34fb
7
+ data.tar.gz: c6da9f8e4818368d67f525898d69b9d15fe46d429cb4223fb44ff1f4d2c52aefff99f8487cf8ecdf702153d1a3d7dbaed93756a0967bbdadd871fdc26f8af229
data/.rubocop.yml CHANGED
@@ -4,14 +4,19 @@ AllCops:
4
4
  Exclude:
5
5
  - vendor/**/*
6
6
  - example/**/*
7
- TargetRubyVersion: 2.6
7
+ TargetRubyVersion: 2.7
8
8
 
9
9
  Layout/EmptyLinesAroundArguments:
10
10
  Enabled: false
11
11
 
12
- Layout/IndentFirstHashElement:
12
+ Layout/FirstHashElementIndentation:
13
13
  EnforcedStyle: consistent
14
14
 
15
+ Layout/LineLength:
16
+ Max: 120
17
+ Exclude:
18
+ - spec/**/*
19
+
15
20
  Metrics/BlockLength:
16
21
  Exclude:
17
22
  - spec/**/*
@@ -19,11 +24,6 @@ Metrics/BlockLength:
19
24
  Metrics/ClassLength:
20
25
  Max: 300
21
26
 
22
- Metrics/LineLength:
23
- Max: 120
24
- Exclude:
25
- - spec/**/*
26
-
27
27
  Metrics/MethodLength:
28
28
  Exclude:
29
29
  - spec/**/*
data/.rubocop_todo.yml CHANGED
@@ -13,12 +13,6 @@ Gemspec/RequiredRubyVersion:
13
13
  Exclude:
14
14
  - 'grape-swagger.gemspec'
15
15
 
16
- # Offense count: 1
17
- # Cop supports --auto-correct.
18
- Lint/UnneededCopEnableDirective:
19
- Exclude:
20
- - 'spec/lib/optional_object_spec.rb'
21
-
22
16
  # Offense count: 30
23
17
  Metrics/AbcSize:
24
18
  Max: 59
data/.travis.yml CHANGED
@@ -7,28 +7,27 @@ after_success:
7
7
  - bundle exec danger
8
8
 
9
9
  rvm:
10
- - 2.4.6
11
- - 2.5.5
12
- - 2.6.3
10
+ - 2.5.7
11
+ - 2.6.5
12
+ - 2.7.0
13
13
  env:
14
- - MODEL_PARSER=grape-swagger-entity
15
- - MODEL_PARSER=grape-swagger-representable
14
+ - GRAPE_VERSION=1.2.5 MODEL_PARSER=grape-swagger-entity
15
+ - GRAPE_VERSION=1.2.5 MODEL_PARSER=grape-swagger-representable
16
16
  - GRAPE_VERSION=1.0.3
17
- - GRAPE_VERSION=1.2.4
18
- - GRAPE_VERSION=HEAD
17
+ - GRAPE_VERSION=1.2.5
19
18
 
20
19
  matrix:
21
20
  fast_finish: true
22
21
 
23
22
  include:
24
- - rvm: 2.3.8
25
- env:
23
+ - rvm: 2.4.9
24
+ env: GRAPE_VERSION=1.2.5
26
25
  - rvm: ruby-head
27
- env:
26
+ env: GRAPE_VERSION=HEAD
28
27
  - rvm: jruby-head
29
28
  env:
30
29
 
31
30
  allow_failures:
32
- - rvm: 2.3.8
31
+ - rvm: 2.4.9
33
32
  - rvm: ruby-head
34
33
  - rvm: jruby-head
data/CHANGELOG.md CHANGED
@@ -6,7 +6,28 @@
6
6
 
7
7
  #### Fixes
8
8
 
9
- * Your contribution here.
9
+ ### 0.34.2 (January 20, 2020)
10
+
11
+ #### Fixes
12
+
13
+ * [#773](https://github.com/ruby-grape/grape-swagger/pull/773): Freeze rack version to 2.0.8 - [@LeFnord](https://github.com/LeFnord).
14
+
15
+
16
+ ### 0.34.0 (January 11, 2020)
17
+
18
+ #### Features
19
+
20
+ * [#768](https://github.com/ruby-grape/grape-swagger/pull/768): Uses ruby 2.7, fixes grape to 1.2.5 (cause of dry-types) - [@LeFnord](https://github.com/LeFnord).
21
+ * [#761](https://github.com/ruby-grape/grape-swagger/pull/761): Add an option to configure root element for responses - [@bikolya](https://github.com/bikolya).
22
+ * [#749](https://github.com/ruby-grape/grape-swagger/pull/749): Drop support for Ruby 2.3 and below - [@LeFnord](https://github.com/LeFnord).
23
+
24
+ #### Fixes
25
+
26
+ * [#758](https://github.com/ruby-grape/grape-swagger/pull/758): Handle cases where a route's prefix is a nested URL - [@SimonKaluza](https://github.com/simonkaluza).
27
+ * [#757](https://github.com/ruby-grape/grape-swagger/pull/757): Fix `array_use_braces` for nested body params - [@bikolya](https://github.com/bikolya).
28
+ * [#756](https://github.com/ruby-grape/grape-swagger/pull/756): Fix reference creation when custom type for documentation is provided - [@bikolya](https://github.com/bikolya).
29
+ * [#764](https://github.com/ruby-grape/grape-swagger/pull/764): Fix root element for multi-word entities - [@bikolya](https://github.com/bikolya).
30
+
10
31
 
11
32
  ### 0.33.0 (June 21, 2019)
12
33
 
@@ -17,6 +38,11 @@
17
38
  * [#743](https://github.com/ruby-grape/grape-swagger/pull/743): CI: use 2.4.6, 2.5.5 - [@olleolleolle](https://github.com/olleolleolle).
18
39
  * [#737](https://github.com/ruby-grape/grape-swagger/pull/737): Add swagger endpoint guard to both doc endpoints - [@urkle](https://github.com/urkle).
19
40
 
41
+ #### Changes
42
+
43
+ * [#749](https://github.com/ruby-grape/grape-swagger/pull/749) Drop support for Ruby 2.3 and below - [@LeFnord](https://github.com/LeFnord).
44
+
45
+
20
46
  ### 0.32.1 (December 7, 2018)
21
47
 
22
48
  #### Fixes
@@ -24,6 +50,7 @@
24
50
  * [#731](https://github.com/ruby-grape/grape-swagger/pull/731): Skip empty parameters and tags arrays - [@fotos](https://github.com/fotos).
25
51
  * [#729](https://github.com/ruby-grape/grape-swagger/pull/729): Allow empty security array for endpoints - [@fotos](https://github.com/fotos).
26
52
 
53
+
27
54
  ### 0.32.0 (November 26, 2018)
28
55
 
29
56
  #### Features
@@ -34,13 +61,15 @@
34
61
 
35
62
  * [#720](https://github.com/ruby-grape/grape-swagger/pull/720): Fix: corrected `termsOfService` field name in additional info - [@dblock](https://github.com/dblock).
36
63
 
64
+
37
65
  ### 0.31.1 (October 23, 2018)
38
66
 
39
67
  #### Features
40
68
 
41
69
  * [#710](https://github.com/ruby-grape/grape-swagger/issues/710): Re-implement `api_documentation` and `specific_api_documentation` options - [@dblock](https://github.com/dblock).
42
70
 
43
- ### 0.31.0 (August 22, 2018)
71
+
72
+ ### 0.31.0 (August 22, 2018)
44
73
 
45
74
  #### Features
46
75
 
@@ -50,13 +79,15 @@
50
79
  * [#691](https://github.com/ruby-grape/grape-swagger/pull/691): Disregard order when parsing request params for arrays - [@jdmurphy](https://github.com/jdmurphy).
51
80
  * [#696](https://github.com/ruby-grape/grape-swagger/pull/696): Delegate required properties parsing to model parsers - [@Bugagazavr](https://github.com/Bugagazavr).
52
81
 
53
- ### 0.30.1 (July 19, 2018)
82
+
83
+ ### 0.30.1 (July 19, 2018)
54
84
 
55
85
  #### Features
56
86
 
57
87
  * [#686](https://github.com/ruby-grape/grape-swagger/pull/686): Allow response headers for responses with no content and for files - [@jdmurphy](https://github.com/jdmurphy).
58
88
 
59
- ### 0.30.0 (July 19, 2018)
89
+
90
+ ### 0.30.0 (July 19, 2018)
60
91
 
61
92
  #### Features
62
93
 
@@ -67,7 +98,8 @@
67
98
  * [#681](https://github.com/ruby-grape/grape-swagger/pull/681): Provide error schemas when an endpoint can return a 204 - [@adstratm](https://github.com/adstratm).
68
99
  * [#683](https://github.com/ruby-grape/grape-swagger/pull/683): Fix handling of arrays of complex entities in params so that valid OpenAPI spec is generated - [@jdmurphy](https://github.com/jdmurphy).
69
100
 
70
- ### 0.29.0 (May 22, 2018)
101
+
102
+ ### 0.29.0 (May 22, 2018)
71
103
 
72
104
  #### Features
73
105
 
@@ -81,6 +113,7 @@
81
113
  * [#669](https://github.com/ruby-grape/grape-swagger/pull/669): Fix handling of http status codes from routes - [@milgner](https://github.com/milgner).
82
114
  * [#672](https://github.com/ruby-grape/grape-swagger/pull/672): Rename 'notes' to 'detail' in README - [@kjleitz](https://github.com/kjleitz).
83
115
 
116
+
84
117
  ### 0.28.0 (February 3, 2018)
85
118
 
86
119
  #### Features
@@ -97,6 +130,7 @@
97
130
  * [#654](https://github.com/ruby-grape/grape-swagger/pull/654): Allow setting the consumes for PATCH methods - [@anakinj](https://github.com/anakinj).
98
131
  * [#656](https://github.com/ruby-grape/grape-swagger/pull/656): Fix `description` field may be null - [@soranoba](https://github.com/soranoba).
99
132
 
133
+
100
134
  ### 0.27.3 (July 11, 2017)
101
135
 
102
136
  #### Features
@@ -107,6 +141,7 @@
107
141
 
108
142
  * [#616](https://github.com/ruby-grape/grape-swagger/pull/616): Fix swagger to show root path ([#605](https://github.com/ruby-grape/grape-swagger/issue/605)) - [@NightWolf007](https://github.com/NightWolf007).
109
143
 
144
+
110
145
  ### 0.27.2 (May 11, 2017)
111
146
 
112
147
  #### Features
@@ -115,13 +150,15 @@
115
150
  * [#596](https://github.com/ruby-grape/grape-swagger/pull/596): Use route_settings for hidden and operations extensions - [@thogg4](https://github.com/thogg4).
116
151
  * [#607](https://github.com/ruby-grape/grape-swagger/pull/607): Allow body parameter name to be specified - [@tjwp](https://github.com/tjwp).
117
152
 
153
+
118
154
  ### 0.27.1 (April 28, 2017)
119
155
 
120
156
  #### Features
121
157
 
122
158
  * [#602](https://github.com/ruby-grape/grape-swagger/pull/602): Allow security object to be defined - [@markevich](https://github.com/markevich).
123
159
 
124
- ### 0.27.0 (March 27, 2017)
160
+
161
+ ### 0.27.0 (March 27, 2017)
125
162
 
126
163
  #### Features
127
164
 
@@ -136,6 +173,7 @@
136
173
  * [#586](https://github.com/ruby-grape/grape-swagger/pull/586): Issue #587: Parameters delimited by dash cause exception - [@risa](https://github.com/risa).
137
174
  * [#593](https://github.com/ruby-grape/grape-swagger/pull/593): Clarify hidden option in readme - [@thogg4](https://github.com/thogg4).
138
175
 
176
+
139
177
  ### 0.26.1 (February 3, 2017)
140
178
 
141
179
  #### Features
@@ -150,6 +188,7 @@
150
188
  * [#562](https://github.com/ruby-grape/grape-swagger/pull/562): The guard method should allow regular object methods as arguments - [@tim-vandecasteele](https://github.com/tim-vandecasteele).
151
189
  * [#574](https://github.com/ruby-grape/grape-swagger/pull/574): Fixes #572: `is_array` should only be applied to success - [@LeFnord](https://github.com/LeFnord).
152
190
 
191
+
153
192
  ### 0.26.0 (January 9, 2017)
154
193
 
155
194
  #### Features
@@ -162,6 +201,7 @@
162
201
 
163
202
  * [#561](https://github.com/ruby-grape/grape-swagger/pull/561): Rename failures to failure in readme - [@justincampbell](https://github.com/justincampbell).
164
203
 
204
+
165
205
  ### 0.25.3 (December 18, 2016)
166
206
 
167
207
  #### Features
@@ -175,12 +215,14 @@
175
215
  * [#548](https://github.com/ruby-grape/grape-swagger/pull/548): Remove dots from operation id - [@frodrigo](https://github.com/frodrigo).
176
216
  * [#553](https://github.com/ruby-grape/grape-swagger/pull/553): Align array params for post, put request - addition to [#540](https://github.com/ruby-grape/grape-swagger/pull/540) - [@LeFnord](https://github.com/LeFnord).
177
217
 
218
+
178
219
  ### 0.25.2 (November 30, 2016)
179
220
 
180
221
  #### Fixes
181
222
 
182
223
  * [#544](https://github.com/ruby-grape/grape-swagger/pull/544): Fixes #539 and #542; not all of 530 was commited - [@LeFnord](https://github.com/LeFnord).
183
224
 
225
+
184
226
  ### 0.25.1 (November 29, 2016)
185
227
 
186
228
  #### Features
@@ -193,6 +235,7 @@
193
235
  * [#540](https://github.com/ruby-grape/grape-swagger/pull/540): Corrects exposing of array in post body - [@LeFnord](https://github.com/LeFnord).
194
236
  * [#509](https://github.com/ruby-grape/grape-swagger/pull/509), [#529](https://github.com/ruby-grape/grape-swagger/pull/529): Making parent-less routes working - [@mur-wtag](https://github.com/mur-wtag).
195
237
 
238
+
196
239
  ### 0.25.0 (October 31, 2016)
197
240
 
198
241
  #### Features
@@ -208,6 +251,7 @@
208
251
  * [#515](https://github.com/ruby-grape/grape-swagger/pull/515): Removes limit on model names - [@LeFnord](https://github.com/LeFnord).
209
252
  * [#511](https://github.com/ruby-grape/grape-swagger/pull/511): Fix incorrect data type linking for request params of entity types - [@serggl](https://github.com/serggl).
210
253
 
254
+
211
255
  ### 0.24.0 (September 23, 2016)
212
256
 
213
257
  #### Features
@@ -226,6 +270,7 @@
226
270
  * [#494](https://github.com/ruby-grape/grape-swagger/pull/494): Header parametes are now included in documentation when body parameters have been defined - [@anakinj](https://github.com/anakinj).
227
271
  * [#505](https://github.com/ruby-grape/grape-swagger/pull/505): Combines namespaces with their mounted paths to allow APIs with specified mount_paths - [@KevinLiddle](https://github.com/KevinLiddle).
228
272
 
273
+
229
274
  ### 0.23.0 (August 5, 2016)
230
275
 
231
276
  #### Features
@@ -241,6 +286,7 @@
241
286
  * [#479](https://github.com/ruby-grape/grape-swagger/pull/479): Fix regex for Array and Multi Type in doc_methods. Parsing of "[APoint]" should return "APoint" - [@frodrigo](https://github.com/frodrigo).
242
287
  * [#483](https://github.com/ruby-grape/grape-swagger/pull/483): Added support for nicknamed routes - [@pbendersky](https://github.com/pbendersky).
243
288
 
289
+
244
290
  ### 0.22.0 (July 12, 2016)
245
291
 
246
292
  #### Features
@@ -265,6 +311,7 @@
265
311
  * [#454](https://github.com/ruby-grape/grape-swagger/pull/454): Include documented Hashes in documentation output - [@aschuster3](https://github.com/aschuster3).
266
312
  * [#457](https://github.com/ruby-grape/grape-swagger/issues/457): Using camel case on namespace throws exception on add_swagger_documentation method - [@rayko](https://github.com/rayko).
267
313
 
314
+
268
315
  ### 0.21.0 (June 1, 2016)
269
316
 
270
317
  #### Features
@@ -280,6 +327,7 @@
280
327
  * [#420](https://github.com/ruby-grape/grape-swagger/pull/420): Raise SwaggerSpec exception if swagger spec isn't satisfied, when no parser for model is registered or response model is empty - [@Bugagazavr](https://github.com/Bugagazavr).
281
328
  * [#438](https://github.com/ruby-grape/grape-swagger/pull/438): Route version was missing in :options passed to PathString, so Endpoint.path_and_definitions_objects wasn't returning a versioned path when required - [@texpert](https://github.com/texpert).
282
329
 
330
+
283
331
  ### 0.20.3 (May 9, 2016)
284
332
 
285
333
  #### Features
@@ -294,6 +342,7 @@
294
342
 
295
343
  * [#399](https://github.com/ruby-grape/grape-swagger/pull/399), [#395](https://github.com/ruby-grape/grape-swagger/issues/395): Make param description optional - [@LeFnord](https://github.com/LeFnord).
296
344
 
345
+
297
346
  ### 0.20.2 (April 22, 2016)
298
347
 
299
348
  #### Fixes
@@ -302,6 +351,7 @@
302
351
  * [#393](https://github.com/ruby-grape/grape-swagger/pull/393): Properly handle header parameters - [@wleeper](https://github.com/wleeper).
303
352
  * [#389](https://github.com/ruby-grape/grape-swagger/pull/389): Respect X-Forwarded-Host - [@edvakf](https://github.com/edvakf).
304
353
 
354
+
305
355
  ### 0.20.1 (April 17, 2016)
306
356
 
307
357
  #### Features
@@ -313,6 +363,7 @@
313
363
 
314
364
  * [#383](https://github.com/ruby-grape/grape-swagger/pull/383): Fixed support for Grape 0.12.0 through 0.14.0 - [@LeFnord](https://github.com/LeFnord).
315
365
 
366
+
316
367
  ### 0.20.0 (April 9, 2016)
317
368
 
318
369
  #### Features
@@ -326,10 +377,12 @@
326
377
  * [#354](https://github.com/ruby-grape/grape-swagger/pull/354): Fixed setting of `base_path` and `host`, added possibility to configure the setting of `version` and `base_path` in documented path and `operationId` - [@LeFnord](https://github.com/LeFnord).
327
378
  * [#353](https://github.com/ruby-grape/grape-swagger/pull/353), [#352](https://github.com/ruby-grape/grape-swagger/pull/353): Fixed exception with routes having a dynamic `:section` - [@LeFnord](https://github.com/LeFnord).
328
379
 
380
+
329
381
  ### 0.10.5 (April 12, 2016)
330
382
 
331
383
  * [#344](https://github.com/ruby-grape/grape-swagger/pull/344): Namespace based tag included in Swagger JSON - [@LeFnord](https://github.com/LeFnord).
332
384
 
385
+
333
386
  ### 0.10.2 (August 19, 2015)
334
387
 
335
388
  #### Features
@@ -354,11 +407,13 @@
354
407
  * [#284](https://github.com/ruby-grape/grape-swagger/pull/284): Use new params syntax for swagger doc endpoint, fix an issue that `:name` params not recognized by `declared` method - [@calfzhou](https://github.com/calfzhou).
355
408
  * [#286](https://github.com/ruby-grape/grape-swagger/pull/286): Use `detail` value for `notes` - fix an issue where `detail` value specified in a block passed to `desc` was ignored - [@rngtng](https://github.com/rngtng).
356
409
 
410
+
357
411
  ### 0.10.1 (March 11, 2015)
358
412
 
359
413
  * [#227](https://github.com/ruby-grape/grape-swagger/issues/227): Fix: nested routes under prefix not documented - [@dblock](https://github.com/dblock).
360
414
  * [#226](https://github.com/ruby-grape/grape-swagger/issues/226): Fix: be defensive with nil exposure types - [@dblock](https://github.com/dblock).
361
415
 
416
+
362
417
  ### 0.10.0 (March 10, 2015)
363
418
 
364
419
  #### Features
@@ -378,6 +433,7 @@
378
433
  * [#208](https://github.com/ruby-grape/grape-swagger/pull/208): Fixed `Float` parameters, exposed as Swagger `float` types - [@u2](https://github.com/u2).
379
434
  * [#216](https://github.com/ruby-grape/grape-swagger/pull/216), [#192](https://github.com/ruby-grape/grape-swagger/issues/192), [#189](https://github.com/ruby-grape/grape-swagger/issues/189): Fixed API route paths matching for root endpoints with `grape ~> 0.10.0`, specific `format` and `:path` versioning - [@dm1try](https://github.com/dm1try), [@minch](https://github.com/minch).
380
435
 
436
+
381
437
  ### 0.9.0 (December 19, 2014)
382
438
 
383
439
  * [#91](https://github.com/ruby-grape/grape-swagger/issues/91): Fixed empty field for group parameters' name with type hash or Array - [@dukedave](https://github.com/dukedave).
@@ -392,6 +448,7 @@
392
448
  * [#167](https://github.com/ruby-grape/grape-swagger/pull/167): Support mutli-tenanted APIs, don't cache `base_path` - [@bradrobertson](https://github.com/bradrobertson), (https://github.com/dblock).
393
449
  * [#185](https://github.com/ruby-grape/grape-swagger/pull/185): Support strings in `Grape::Entity.expose`'s `:using` option - [@jhollinger](https://github.com/jhollinger).
394
450
 
451
+
395
452
  ### 0.8.0 (August 30, 2014)
396
453
 
397
454
  #### Features
@@ -421,6 +478,7 @@
421
478
  * Added `GrapeSwagger::VERSION` - [@dblock](https://github.com/dblock).
422
479
  * Added Rubocop, Ruby-style linter - [@dblock](https://github.com/dblock).
423
480
 
481
+
424
482
  ### 0.7.2 (February 6, 2014)
425
483
 
426
484
  * [#84](https://github.com/ruby-grape/grape-swagger/pull/84): Markdown is now Github Flavored Markdown - [@jeromegn](https://github.com/jeromegn).
@@ -438,6 +496,7 @@
438
496
  * [#54](https://github.com/ruby-grape/grape-swagger/pull/54): Adding support for generating swagger `responseClass` and models from Grape Entities - [@calebwoods](https://github.com/calebwoods).
439
497
  * [#46](https://github.com/ruby-grape/grape-swagger/pull/46): Fixed translating parameter `type` to String, enables using Mongoid fields as parameter definitions - [@dblock](https://github.com/dblock).
440
498
 
499
+
441
500
  ### 0.6.0 (June 19, 2013)
442
501
 
443
502
  * Added Rails 4 support - [@jrhe](https://github.com/jrhe).
@@ -446,14 +505,17 @@
446
505
  * Support both `:desc` and `:description` when describing parameters - [@dblock](https://github.com/dblock).
447
506
  * Fix: allow parameters such as `name[]` - [@dblock](https://github.com/dblock).
448
507
 
508
+
449
509
  ### 0.5.0 (March 28, 2013)
450
510
 
451
511
  * Added Grape 0.5.0 support - [@ruby-grape](https://github.com/ruby-grape).
452
512
 
513
+
453
514
  ### 0.4.0 (March 28, 2013)
454
515
 
455
516
  * Support https - [@cutalion](https://github.com/cutalion).
456
517
 
518
+
457
519
  ### 0.3.0 (October 19, 2012)
458
520
 
459
521
  * Added version support - [@agileanimal](https://github.com/agileanimal), [@fknappe](https://github.com/fknappe).
@@ -461,24 +523,28 @@
461
523
  * Added basic support for specifying parameters that need to be passed in the header - [@agileanimal](https://github.com/agileanimal).
462
524
  * Add possibility to hide the documentation paths in the generated swagger documentation - [@ruby-grape](https://github.com/ruby-grape).
463
525
 
526
+
464
527
  ### 0.2.1 (August 17, 2012)
465
528
 
466
529
  * Added support for markdown in notes field - [@ruby-grape](https://github.com/ruby-grape).
467
530
  * Fix: compatibility with Rails - [@qwert666](https://github.com/qwert666).
468
531
  * Fix: swagger UI history - [@ruby-grape](https://github.com/ruby-grape).
469
532
 
533
+
470
534
  ### 0.2.0 (July 27, 2012)
471
535
 
472
536
  * Use resource as root for swagger - [@ruby-grape](https://github.com/ruby-grape).
473
537
  * Added support for file uploads, and proper `paramType` - [@ruby-grape](https://github.com/ruby-grape).
474
538
  * Added tests - [@nathanvda](https://github.com/nathanvda).
475
539
 
540
+
476
541
  ### 0.1.0 (July 19, 2012)
477
542
 
478
543
  * Added some configurability to the generated documentation - [@ruby-grape](https://github.com/ruby-grape).
479
544
  * Adapted to rails plugin structure - [@ruby-grape](https://github.com/ruby-grape).
480
545
  * Allowed cross origin, so swagger can be used from official site - [@ruby-grape](https://github.com/ruby-grape).
481
546
 
547
+
482
548
  ### 0.0.0 (July 19, 2012)
483
549
 
484
550
  * Initial public release - [@ruby-grape](https://github.com/ruby-grape).
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ ruby RUBY_VERSION
6
6
 
7
7
  gemspec
8
8
 
9
- gem 'grape', case version = ENV['GRAPE_VERSION'] || '~> 1.2'
9
+ gem 'grape', case version = ENV['GRAPE_VERSION'] || '< 1.3.0'
10
10
  when 'HEAD'
11
11
  { git: 'https://github.com/ruby-grape/grape' }
12
12
  else
@@ -14,19 +14,18 @@ gem 'grape', case version = ENV['GRAPE_VERSION'] || '~> 1.2'
14
14
  end
15
15
 
16
16
  gem ENV['MODEL_PARSER'] if ENV.key?('MODEL_PARSER')
17
-
18
17
  group :development, :test do
19
18
  gem 'bundler'
20
19
  gem 'grape-entity'
21
20
  gem 'pry', platforms: [:mri]
22
21
  gem 'pry-byebug', platforms: [:mri]
23
- gem 'rack'
22
+
24
23
  gem 'rack-cors'
25
24
  gem 'rack-test'
26
25
  gem 'rake'
27
26
  gem 'rdoc'
28
- gem 'rspec', '~> 3.8'
29
- gem 'rubocop', '~> 0.71', require: false
27
+ gem 'rspec', '~> 3.9'
28
+ gem 'rubocop', '~> 0.75', require: false
30
29
  end
31
30
 
32
31
  group :test do
data/README.md CHANGED
@@ -48,9 +48,10 @@ grape-swagger | swagger spec | grape | grape-entity | represen
48
48
  0.10.5 | 1.2 | >= 0.10.0 ... <= 0.14.0 | < 0.5.0 | n/a |
49
49
  0.11.0 | 1.2 | >= 0.16.2 | < 0.5.0 | n/a |
50
50
  0.25.2 | 2.0 | >= 0.14.0 ... <= 0.18.0 | <= 0.6.0 | >= 2.4.1 |
51
- 0.26.0 | 2.0 | >= 0.16.2 <= 1.1.0 | <= 0.6.1 | >= 2.4.1 |
51
+ 0.26.0 | 2.0 | >= 0.16.2 ... <= 1.1.0 | <= 0.6.1 | >= 2.4.1 |
52
52
  0.27.0 | 2.0 | >= 0.16.2 ... <= 1.1.0 | >= 0.5.0 | >= 2.4.1 |
53
53
  0.32.0 | 2.0 | >= 0.16.2 | >= 0.5.0 | >= 2.4.1 |
54
+ 0.34.0 | 2.0 | >= 0.16.2 ... < 1.3.0 | >= 0.5.0 | >= 2.4.1 |
54
55
 
55
56
 
56
57
  ## Swagger-Spec <a name="swagger-spec"></a>
@@ -104,9 +105,9 @@ Also added support for [representable](https://github.com/apotonick/representabl
104
105
 
105
106
  ```ruby
106
107
  # For Grape::Entity ( https://github.com/ruby-grape/grape-entity )
107
- gem 'grape-swagger-entity'
108
+ gem 'grape-swagger-entity', '~> 0.3'
108
109
  # For representable ( https://github.com/apotonick/representable )
109
- gem 'grape-swagger-representable'
110
+ gem 'grape-swagger-representable', '~> 0.2'
110
111
  ```
111
112
 
112
113
  If you are not using Rails, make sure to load the parser inside your application initialization logic, e.g., via `require 'grape-swagger/entity'` or `require 'grape-swagger/representable'`.
@@ -189,6 +190,7 @@ end
189
190
  * [base_path](#base_path)
190
191
  * [mount_path](#mount_path)
191
192
  * [add_base_path](#add_base_path)
193
+ * [add_root](#add_root)
192
194
  * [add_version](#add_version)
193
195
  * [doc_version](#doc_version)
194
196
  * [endpoint_auth_wrapper](#endpoint_auth_wrapper)
@@ -248,6 +250,13 @@ add_swagger_documentation \
248
250
  add_base_path: true # only if base_path given
249
251
  ```
250
252
 
253
+ #### add_root: <a name="add_root"></a>
254
+ Add root element to all the responses, default is: `false`.
255
+ ```ruby
256
+ add_swagger_documentation \
257
+ add_root: true
258
+ ```
259
+
251
260
  #### add_version: <a name="add_version"></a>
252
261
 
253
262
  Add `version` key to the documented path keys, default is: `true`,
@@ -447,6 +456,7 @@ add_swagger_documentation \
447
456
  * [Extensions](#extensions)
448
457
  * [Response examples documentation](#response-examples)
449
458
  * [Response headers documentation](#response-headers)
459
+ * [Adding root element to responses](#response-root)
450
460
 
451
461
  #### Swagger Header Parameters <a name="headers"></a>
452
462
 
@@ -913,7 +923,7 @@ desc 'Attach a field to an entity through a PUT',
913
923
  failure: [
914
924
  { code: 400, message: 'Bad request' },
915
925
  { code: 404, message: 'Not found' }
916
- ]
926
+ ]
917
927
  put do
918
928
  # your code comes here
919
929
  end
@@ -1180,6 +1190,60 @@ The result will look like following:
1180
1190
 
1181
1191
  Failure information can be passed as an array of arrays or an array of hashes.
1182
1192
 
1193
+ #### Adding root element to responses <a name="response-root"></a>
1194
+
1195
+ You can specify a custom root element for a successful response:
1196
+
1197
+ ```ruby
1198
+ route_setting :swagger, root: 'cute_kitten'
1199
+ desc 'Get a kitten' do
1200
+ http_codes [{ code: 200, model: Entities::Kitten }]
1201
+ end
1202
+ get '/kittens/:id' do
1203
+ end
1204
+ ```
1205
+
1206
+ The result will look like following:
1207
+
1208
+ ```
1209
+ "responses": {
1210
+ "200": {
1211
+ "description": "Get a kitten",
1212
+ "schema": {
1213
+ "type": "object",
1214
+ "properties": { "cute_kitten": { "$ref": "#/definitions/Kitten" } }
1215
+ }
1216
+ }
1217
+ }
1218
+ ```
1219
+
1220
+ If you specify `true`, the value of the root element will be deduced based on the model name.
1221
+ E.g. in the following example the root element will be "kittens":
1222
+
1223
+ ```ruby
1224
+ route_setting :swagger, root: true
1225
+ desc 'Get kittens' do
1226
+ is_array true
1227
+ http_codes [{ code: 200, model: Entities::Kitten }]
1228
+ end
1229
+ get '/kittens' do
1230
+ end
1231
+ ```
1232
+
1233
+ The result will look like following:
1234
+
1235
+ ```
1236
+ "responses": {
1237
+ "200": {
1238
+ "description": "Get kittens",
1239
+ "schema": {
1240
+ "type": "object",
1241
+ "properties": { "type": "array", "items": { "kittens": { "$ref": "#/definitions/Kitten" } } }
1242
+ }
1243
+ }
1244
+ }
1245
+ ```
1246
+
1183
1247
  ## Using Grape Entities <a name="grape-entity"></a>
1184
1248
 
1185
1249
  Add the [grape-entity](https://github.com/ruby-grape/grape-entity) and [grape-swagger-entity](https://github.com/ruby-grape/grape-swagger-entity) gem to your Gemfile.
@@ -14,7 +14,8 @@ Gem::Specification.new do |s|
14
14
  s.license = 'MIT'
15
15
 
16
16
  s.required_ruby_version = '>= 2.4'
17
- s.add_runtime_dependency 'grape', '>= 0.16.2'
17
+ s.add_runtime_dependency 'grape', '>= 0.16.2', '< 1.3.0'
18
+ s.add_runtime_dependency 'rack', '2.0.8'
18
19
 
19
20
  s.files = `git ls-files`.split("\n")
20
21
  s.test_files = `git ls-files -- {test,spec}/*`.split("\n")
@@ -25,27 +25,10 @@ module GrapeSwagger
25
25
 
26
26
  def parse_entity(model)
27
27
  return unless model.respond_to?(:documentation)
28
-
29
- deprecated_workflow_for('grape-swagger-entity')
30
-
31
- model.documentation
32
- .select { |_name, options| options[:required] }
33
- .map { |name, options| options[:as] || name }
34
28
  end
35
29
 
36
30
  def parse_representable(model)
37
31
  return unless model.respond_to?(:map)
38
-
39
- deprecated_workflow_for('grape-swagger-representable')
40
-
41
- model.map
42
- .select { |p| p[:documentation] && p[:documentation][:required] }
43
- .map(&:name)
44
- end
45
-
46
- def deprecated_workflow_for(gem_name)
47
- warn "DEPRECATED: You are using old #{gem_name} version, which doesn't provide " \
48
- "required attributes. To solve this problem, please update #{gem_name}"
49
32
  end
50
33
  end
51
34
  end
@@ -87,7 +87,12 @@ module GrapeSwagger
87
87
  part.select { |x| x == identifier }
88
88
  end
89
89
 
90
- def method
90
+ def method(*args)
91
+ # We're shadowing Object.method(:symbol) here so we provide
92
+ # a compatibility layer for code that introspects the methods
93
+ # of this class
94
+ return super if args.size.positive?
95
+
91
96
  @route.request_method.downcase.to_sym
92
97
  end
93
98
  end