grape-swagger 2.1.0 → 2.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8fbf69e7e7bc7f3a836c574fe91df74abb10aab05c778cee716398d76afeace6
4
- data.tar.gz: 5ab4bc60eafa3ad32959a040aed645943121912037a738278d88fb649390a0fa
3
+ metadata.gz: d07c4678df57d48124ef1afed6e8d60c0cedc0d5f1ea198b4c1ce2e6b3e30f2d
4
+ data.tar.gz: 35e02858f204c33f403a6b583c1c2ced2c3d66caaa94613d30de4c227ed96266
5
5
  SHA512:
6
- metadata.gz: 8bcb10791418aa79af266d503f7fd5130157bb7971d7acb094964981d9ee8635fe6bcf72e212b81f22a25f2032a002fba99b97a7d078d8d35a908f0117fae379
7
- data.tar.gz: d7843b9aaf70d83a9d0de3dc7f075b8f3df2e4cedda4a1c519cbc4109dc9da1cb1de82c9966fcf6a0083ebbe22a89c13654fbd9fe9e1156af4103e8bc70a344e
6
+ metadata.gz: 35c4824daa66db7842b786b580981a18223c1cb7c199a4a8dd754b2cc310fc876d8b7bb8dad659f5a92f554d4c8e306e960e739a9764b6a6c6c8bb004a87d37c
7
+ data.tar.gz: 2b4c8c3e19b0d9ee56a66655598b8293470f18a3815f0cc8c6e5bf003647f8ba46774017bcc5a5b2db7e947aafd75f90e15ad2ef46d6ec683bfc8d868a9205b9
data/CHANGELOG.md CHANGED
@@ -1,13 +1,8 @@
1
- ### next
2
-
3
- #### Features
4
-
5
- * Your contribution here.
1
+ ### 2.1.1 (Sep 21, 2024)
6
2
 
7
3
  #### Fixes
8
4
 
9
- * Your contribution here.
10
-
5
+ * [#940](https://github.com/ruby-grape/grape-swagger/pull/940): Grape 2.2.0 compatibility - [@padde](https://github.com/padde)
11
6
 
12
7
  ### 2.1.0 (May 14, 2024)
13
8
 
@@ -15,8 +15,8 @@ Gem::Specification.new do |s|
15
15
  s.metadata['rubygems_mfa_required'] = 'true'
16
16
 
17
17
  s.required_ruby_version = '>= 3.0'
18
- s.add_runtime_dependency 'grape', '>= 1.7', '< 3.0'
19
- s.add_runtime_dependency 'rack-test', '~> 2'
18
+ s.add_dependency 'grape', '>= 1.7', '< 3.0'
19
+ s.add_dependency 'rack-test', '~> 2'
20
20
 
21
21
  s.files = Dir['lib/**/*', '*.md', 'LICENSE.txt', 'grape-swagger.gemspec']
22
22
  s.require_paths = ['lib']
@@ -25,6 +25,7 @@ module GrapeSwagger
25
25
  document_default_value(settings) unless value_type[:is_array]
26
26
  document_range_values(settings) unless value_type[:is_array]
27
27
  document_required(settings)
28
+ document_length_limits(value_type)
28
29
  document_additional_properties(definitions, settings) unless value_type[:is_array]
29
30
  document_add_extensions(settings)
30
31
  document_example(settings)
@@ -163,6 +164,16 @@ module GrapeSwagger
163
164
  end
164
165
  end
165
166
 
167
+ def document_length_limits(value_type)
168
+ if value_type[:is_array]
169
+ @parsed_param[:minItems] = value_type[:min_length] if value_type.key?(:min_length)
170
+ @parsed_param[:maxItems] = value_type[:max_length] if value_type.key?(:max_length)
171
+ else
172
+ @parsed_param[:minLength] = value_type[:min_length] if value_type.key?(:min_length)
173
+ @parsed_param[:maxLength] = value_type[:max_length] if value_type.key?(:max_length)
174
+ end
175
+ end
176
+
166
177
  def parse_enum_or_range_values(values)
167
178
  case values
168
179
  when Proc
@@ -7,7 +7,7 @@ module GrapeSwagger
7
7
  def call(*args)
8
8
  return ['application/json'] unless args.flatten.present?
9
9
 
10
- args.flatten.map { |x| Grape::ContentTypes::CONTENT_TYPES[x] || x }.uniq
10
+ args.flatten.map { |x| GrapeSwagger::CONTENT_TYPE_DEFAULTS[x] || x }.uniq
11
11
  end
12
12
  end
13
13
  end
@@ -11,8 +11,8 @@ module Grape
11
11
 
12
12
  if content_types.empty?
13
13
  formats = [target_class.format, target_class.default_format].compact.uniq
14
- formats = Grape::Formatter.formatters(**{}).keys if formats.empty?
15
- content_types = Grape::ContentTypes::CONTENT_TYPES.select do |content_type, _mime_type|
14
+ formats = GrapeSwagger::FORMATTER_DEFAULTS.keys if formats.empty?
15
+ content_types = GrapeSwagger::CONTENT_TYPE_DEFAULTS.select do |content_type, _mime_type|
16
16
  formats.include? content_type
17
17
  end.values
18
18
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GrapeSwagger
4
- VERSION = '2.1.0'
4
+ VERSION = '2.1.1'
5
5
  end
data/lib/grape-swagger.rb CHANGED
@@ -18,6 +18,24 @@ module GrapeSwagger
18
18
  end
19
19
  end
20
20
  autoload :Rake, 'grape-swagger/rake/oapi_tasks'
21
+
22
+ # Copied from https://github.com/ruby-grape/grape/blob/v2.2.0/lib/grape/formatter.rb
23
+ FORMATTER_DEFAULTS = {
24
+ json: Grape::Formatter::Json,
25
+ jsonapi: Grape::Formatter::Json,
26
+ serializable_hash: Grape::Formatter::SerializableHash,
27
+ txt: Grape::Formatter::Txt,
28
+ xml: Grape::Formatter::Xml
29
+ }.freeze
30
+
31
+ # Copied from https://github.com/ruby-grape/grape/blob/v2.2.0/lib/grape/content_types.rb
32
+ CONTENT_TYPE_DEFAULTS = {
33
+ xml: 'application/xml',
34
+ serializable_hash: 'application/json',
35
+ json: 'application/json',
36
+ binary: 'application/octet-stream',
37
+ txt: 'text/plain'
38
+ }.freeze
21
39
  end
22
40
 
23
41
  module SwaggerRouting
@@ -45,12 +63,10 @@ module SwaggerRouting
45
63
  end
46
64
 
47
65
  def determine_namespaced_routes(name, parent_route, routes)
48
- if parent_route.nil?
49
- routes.values.flatten
50
- else
51
- parent_route.reject do |route|
52
- !route_path_start_with?(route, name) || !route_instance_variable_equals?(route, name)
53
- end
66
+ return routes.values.flatten if parent_route.nil?
67
+
68
+ parent_route.select do |route|
69
+ route_path_start_with?(route, name) || route_namespace_equals?(route, name)
54
70
  end
55
71
  end
56
72
 
@@ -94,20 +110,27 @@ module SwaggerRouting
94
110
  matches.nil? ? route_name : matches[0].delete('/')
95
111
  end
96
112
 
97
- def route_instance_variable(route)
98
- route.instance_variable_get(:@options)[:namespace]
99
- end
113
+ def route_namespace_equals?(route, name)
114
+ patterns = Enumerator.new do |yielder|
115
+ yielder << "/#{name}"
116
+ yielder << "/:version/#{name}"
117
+ end
100
118
 
101
- def route_instance_variable_equals?(route, name)
102
- route_instance_variable(route) == "/#{name}" ||
103
- route_instance_variable(route) == "/:version/#{name}"
119
+ patterns.any? { |p| route.namespace == p }
104
120
  end
105
121
 
106
122
  def route_path_start_with?(route, name)
107
- route_prefix = route.prefix ? "/#{route.prefix}/#{name}" : "/#{name}"
108
- route_versioned_prefix = route.prefix ? "/#{route.prefix}/:version/#{name}" : "/:version/#{name}"
123
+ patterns = Enumerator.new do |yielder|
124
+ if route.prefix
125
+ yielder << "/#{route.prefix}/#{name}"
126
+ yielder << "/#{route.prefix}/:version/#{name}"
127
+ else
128
+ yielder << "/#{name}"
129
+ yielder << "/:version/#{name}"
130
+ end
131
+ end
109
132
 
110
- route.path.start_with?(route_prefix, route_versioned_prefix)
133
+ patterns.any? { |p| route.path.start_with?(p) }
111
134
  end
112
135
  end
113
136
 
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.1.0
4
+ version: 2.1.1
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-05-14 00:00:00.000000000 Z
12
+ date: 2024-09-21 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.9
106
+ rubygems_version: 3.3.7
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Add auto generated documentation to your Grape API that can be displayed