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 +4 -4
- data/CHANGELOG.md +2 -7
- data/grape-swagger.gemspec +2 -2
- data/lib/grape-swagger/doc_methods/parse_params.rb +11 -0
- data/lib/grape-swagger/doc_methods/produces_consumes.rb +1 -1
- data/lib/grape-swagger/endpoint.rb +2 -2
- data/lib/grape-swagger/version.rb +1 -1
- data/lib/grape-swagger.rb +38 -15
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d07c4678df57d48124ef1afed6e8d60c0cedc0d5f1ea198b4c1ce2e6b3e30f2d
|
4
|
+
data.tar.gz: 35e02858f204c33f403a6b583c1c2ced2c3d66caaa94613d30de4c227ed96266
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35c4824daa66db7842b786b580981a18223c1cb7c199a4a8dd754b2cc310fc876d8b7bb8dad659f5a92f554d4c8e306e960e739a9764b6a6c6c8bb004a87d37c
|
7
|
+
data.tar.gz: 2b4c8c3e19b0d9ee56a66655598b8293470f18a3815f0cc8c6e5bf003647f8ba46774017bcc5a5b2db7e947aafd75f90e15ad2ef46d6ec683bfc8d868a9205b9
|
data/CHANGELOG.md
CHANGED
@@ -1,13 +1,8 @@
|
|
1
|
-
###
|
2
|
-
|
3
|
-
#### Features
|
4
|
-
|
5
|
-
* Your contribution here.
|
1
|
+
### 2.1.1 (Sep 21, 2024)
|
6
2
|
|
7
3
|
#### Fixes
|
8
4
|
|
9
|
-
*
|
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
|
|
data/grape-swagger.gemspec
CHANGED
@@ -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.
|
19
|
-
s.
|
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|
|
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 =
|
15
|
-
content_types =
|
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
|
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
|
-
|
50
|
-
|
51
|
-
|
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
|
98
|
-
|
99
|
-
|
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
|
-
|
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
|
-
|
108
|
-
|
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?(
|
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.
|
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-
|
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.
|
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
|