grape-swagger 2.1.0 → 2.1.1

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: 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