grape-swagger 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 892c461e0945d50d3b923b7ee89f22aa1ab429f286f2f0fc4de76fe16098eb6f
4
- data.tar.gz: 6c702b542c93dd5a3c0c459bd1135471bc112da3d1d7a48a882b0f2416542f22
3
+ metadata.gz: c36235d1ec48b00075496c2d59151a87e42f2b7f34c876db913504a7706c1a70
4
+ data.tar.gz: 0d7aac2f325422f53218257e4cb8e2bef51e73e424a53d88b244c3073c614656
5
5
  SHA512:
6
- metadata.gz: 66d718bc68a0e596eefb35d0cab1334754da8df8b3be13ba2114e0dac1930270d228c441d6fc8933aaef6379c7bee99d18a60e159aa747715e466922c5bca433
7
- data.tar.gz: a380f3d1ac174ff023e2874e09d336f287bba09d6187e055477ee5d6841cedea2a910fa5f04ca38b3be848356d1a6cf085f9183e37b85a8b2cc8418b5e9616f0
6
+ metadata.gz: 13d4c18cf80ce43aedde8a3347be17ebda40fd6e2b56496459226f350e273b31cd6c74d79d75b68e2461d47dd6f0aeaec3080709aebbcf5b6beb9b8162f949bb
7
+ data.tar.gz: 949ebd6da1fcdb3c398e6070a035f50a9e211ed27a93694b275f5e09a9d1266c675f04f7b1e9583329689fcc9a38fd50cdac8dd6c1de87c486016e63faacce57
data/CHANGELOG.md CHANGED
@@ -9,6 +9,15 @@
9
9
  * Your contribution here.
10
10
 
11
11
 
12
+ ### 2.0.3 (April 26, 2024)
13
+
14
+ #### Fixes
15
+
16
+ * [#922](https://github.com/ruby-grape/grape-swagger/pull/922): Force request body to be an schema object - [@numbata](https://github.com/numbata)
17
+ * [#923](https://github.com/ruby-grape/grape-swagger/pull/923): Enabled schema definitions for body parameters in DELETE requests - [@numbata](https://github.com/numbata)
18
+ * [#924](https://github.com/ruby-grape/grape-swagger/pull/924): fix: Use mount_path to narrow down urls_for - [@chibicco](https://github.com/chibicco)
19
+
20
+
12
21
  ### 2.0.2 (Februar 2, 2024)
13
22
 
14
23
  #### Fixes
@@ -72,7 +81,6 @@
72
81
  * [#846](https://github.com/ruby-grape/grape-swagger/pull/846): Refactor oapi fetch task [@Vachman](https://github.com/Vachman)
73
82
  * [#850](https://github.com/ruby-grape/grape-swagger/pull/850): Fix value of enum to be Array [@takahashim](https://github.com/takahashim)
74
83
 
75
-
76
84
  ### 1.4.3 (January 5, 2022)
77
85
 
78
86
  #### Fixes
data/UPGRADING.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## Upgrading Grape-swagger
2
2
 
3
+ ### Upgrading to >= x.y.z
4
+
5
+ - Grape-swagger now documents array parameters within an object schema in Swagger. This aligns with grape's JSON structure requirements and ensures the documentation is correct.
6
+ - Previously, arrays were documented as standalone arrays, which could be incorrect based on grape's expectations.
7
+ - Check your API documentation and update your code or tests that use the old array format.
8
+
9
+ Attention: This update may require you to make changes to ensure your API integrations continue to work correctly.
10
+ For detailed reasons behind this update, refer to GitHub issue #666.
11
+
3
12
  ### Upgrading to >= 1.5.0
4
13
 
5
14
  - The names generated for body parameter definitions and their references has changed. It'll now include the HTTP action as well as any path parameters.
@@ -18,8 +18,6 @@ module GrapeSwagger
18
18
 
19
19
  params_to_move = movable_params(params)
20
20
 
21
- return (params + correct_array_param(params_to_move)) if should_correct_array?(params_to_move)
22
-
23
21
  params << parent_definition_of_params(params_to_move, path, route)
24
22
 
25
23
  params
@@ -27,21 +25,11 @@ module GrapeSwagger
27
25
 
28
26
  private
29
27
 
30
- def should_correct_array?(param)
31
- param.length == 1 && param.first[:in] == 'body' && param.first[:type] == 'array'
32
- end
33
-
34
- def correct_array_param(param)
35
- param.first[:schema] = { type: param.first.delete(:type), items: param.first.delete(:items) }
36
-
37
- param
38
- end
39
-
40
28
  def parent_definition_of_params(params, path, route)
41
29
  definition_name = OperationId.build(route, path)
42
- build_definition(definition_name, params)
30
+ # NOTE: Parent definition is always object
31
+ @definitions[definition_name] = object_type
43
32
  definition = @definitions[definition_name]
44
-
45
33
  move_params_to_new(definition, params)
46
34
 
47
35
  definition[:description] = route.description if route.try(:description)
@@ -53,6 +41,7 @@ module GrapeSwagger
53
41
  params, nested_params = params.partition { |x| !x[:name].to_s.include?('[') }
54
42
  params.each do |param|
55
43
  property = param[:name]
44
+
56
45
  param_properties, param_required = build_properties([param])
57
46
  add_properties_to_definition(definition, param_properties, param_required)
58
47
  related_nested_params, nested_params = nested_params.partition { |x| x[:name].start_with?("#{property}[") }
@@ -197,7 +186,7 @@ module GrapeSwagger
197
186
  end
198
187
 
199
188
  def move_methods
200
- [:post, :put, :patch, 'POST', 'PUT', 'PATCH']
189
+ [:delete, :post, :put, :patch, 'DELETE', 'POST', 'PUT', 'PATCH']
201
190
  end
202
191
 
203
192
  def includes_body_param?(params)
@@ -70,7 +70,7 @@ module GrapeSwagger
70
70
 
71
71
  def document_array_param(value_type, definitions)
72
72
  if value_type[:documentation].present?
73
- param_type = value_type[:documentation][:param_type]
73
+ param_type = value_type[:documentation][:param_type] || value_type[:documentation][:in]
74
74
  doc_type = value_type[:documentation][:type]
75
75
  type = DataType.mapping(doc_type) if doc_type && !DataType.request_primitive?(doc_type)
76
76
  collection_format = value_type[:documentation][:collectionFormat]
@@ -63,7 +63,7 @@ module GrapeSwagger
63
63
  resource - if given only for that it would be generated (optional)'
64
64
  task validate: :environment do
65
65
  # :nocov:
66
- ENV['store'] = 'true'
66
+ ENV.store('store', 'true')
67
67
  ::Rake::Task['oapi:fetch'].invoke
68
68
  exit if error?
69
69
 
@@ -95,7 +95,7 @@ module GrapeSwagger
95
95
  def urls_for(api_class)
96
96
  api_class.routes
97
97
  .map(&:path)
98
- .select { |e| e.include?('doc') }
98
+ .grep(/#{GrapeSwagger::DocMethods.class_variable_get(:@@mount_path)}/)
99
99
  .reject { |e| e.include?(':name') }
100
100
  .map { |e| format_path(e) }
101
101
  .map { |e| [e, ENV.fetch('resource', nil)].join('/').chomp('/') }
@@ -108,7 +108,7 @@ module GrapeSwagger
108
108
  end
109
109
 
110
110
  def save_to_file?
111
- ENV['store'].present? && !error?
111
+ ENV.fetch('store', nil).present? && !error?
112
112
  end
113
113
 
114
114
  def error?
@@ -118,10 +118,10 @@ module GrapeSwagger
118
118
  def file(url)
119
119
  api_version = url.split('/').last
120
120
 
121
- name = if ENV['store'] == 'true' || ENV['store'].blank?
121
+ name = if ENV.fetch('store', nil) == 'true' || ENV.fetch('store', nil).blank?
122
122
  "swagger_doc_#{api_version}.json"
123
123
  else
124
- ENV['store'].sub('.json', "_#{api_version}.json")
124
+ ENV.fetch('store').sub('.json', "_#{api_version}.json")
125
125
  end
126
126
 
127
127
  File.join(Dir.getwd, name)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GrapeSwagger
4
- VERSION = '2.0.2'
4
+ VERSION = '2.0.3'
5
5
  end
data/lib/grape-swagger.rb CHANGED
@@ -40,7 +40,7 @@ module SwaggerRouting
40
40
  @target_class.combined_routes[resource] ||= []
41
41
  next if doc_klass.hide_documentation_path && route.path.match(/#{doc_klass.mount_path}($|\/|\(\.)/)
42
42
 
43
- @target_class.combined_routes[resource].unshift route
43
+ @target_class.combined_routes[resource] << route
44
44
  end
45
45
  end
46
46
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-swagger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - LeFnord
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-02-02 00:00:00.000000000 Z
12
+ date: 2024-04-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: grape
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
- rubygems_version: 3.5.5
106
+ rubygems_version: 3.5.9
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Add auto generated documentation to your Grape API that can be displayed