swaggard 1.4.0 → 1.5.0
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/README.md +11 -2
- data/lib/swaggard/api_definition.rb +18 -1
- data/lib/swaggard/configuration.rb +23 -1
- data/lib/swaggard/parsers/controller.rb +4 -0
- data/lib/swaggard/swagger/operation.rb +1 -0
- data/lib/swaggard/version.rb +1 -1
- data/spec/fixtures/dummy/config/application.rb +0 -3
- data/spec/fixtures/dummy/log/development.log +0 -0
- data/spec/integration/swaggard_spec.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d74cf8955c1980e4153b8a1af250e09471b2bdce60e7e59aba84520aaeb66c40
|
4
|
+
data.tar.gz: c82d51b65fe90228bb4428c16426332a69a2af202e442a4e3b728cf6d48581c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca72d1996855482ef03474325479dae941fbd68b5d2ab7d928c0c132992156bcfe91391ab5bb3aa9b6c48174171a66d9cbf67006e77fab977aec2daab5b1bb9d
|
7
|
+
data.tar.gz: 5d824f78de1e1a2096899be9378e336631fdb4abd5a6b3185d9d6e368353e73a142cf8e942b5315c2557b2f8ef45e48fa5e092cd3f54f0eacf9ff0a5e2847d25
|
data/README.md
CHANGED
@@ -49,7 +49,7 @@ Make sure the asset pipeline is enabled by either requiring all railties
|
|
49
49
|
or just the sprockets one:
|
50
50
|
|
51
51
|
# config/application.rb
|
52
|
-
|
52
|
+
|
53
53
|
require 'sprockets/railtie'
|
54
54
|
|
55
55
|
Access your service documentation
|
@@ -154,7 +154,7 @@ Will generate
|
|
154
154
|
|
155
155
|
### Controllers
|
156
156
|
|
157
|
-
- `@tag name` This is used to indicate under what `name` tag this controller needs to be grouped. If not provided it will use the full controller class name.
|
157
|
+
- `@tag name` This is used to indicate under what `name` tag this controller needs to be grouped. If not provided and Con.ignore_untagged_controllers = true it will use the full controller class name.
|
158
158
|
- `@query_parameter [type] name` This is used to indicate that your action receives the `name` parameter of `type` on the query string.
|
159
159
|
- `@body_parameter [type] name` This is used to indicate that your action receives the `name` parameter of `type` on the body.
|
160
160
|
- `@response_class type` This is used to indicate that your action returns a response of `type`.
|
@@ -163,6 +163,15 @@ Will generate
|
|
163
163
|
- `@form_parameter`
|
164
164
|
- `@parameter_list`
|
165
165
|
|
166
|
+
If you want to generate documentation for all controllers even for those that don't have a tag do:
|
167
|
+
# config/initializers/swaggard.rb
|
168
|
+
Swaggard.configure do |config|
|
169
|
+
...
|
170
|
+
config.ignore_untagged_controllers = false
|
171
|
+
...
|
172
|
+
end
|
173
|
+
|
174
|
+
|
166
175
|
### Models
|
167
176
|
|
168
177
|
- `@attr [type] name` This is used to indicate that your models has an attribute `name` of `type`.
|
@@ -52,7 +52,7 @@ module Swaggard
|
|
52
52
|
'tags' => @tags.map { |_, tag| tag.to_doc },
|
53
53
|
'paths' => Hash[@paths.values.map { |path| [format_path(path.path), path.to_doc] }],
|
54
54
|
'definitions' => Hash[@definitions.merge(Swaggard.configuration.definitions).map { |id, definition| [id, definition.to_doc(@definitions)] }]
|
55
|
-
}
|
55
|
+
}.merge(security_definitions)
|
56
56
|
end
|
57
57
|
|
58
58
|
private
|
@@ -62,5 +62,22 @@ module Swaggard
|
|
62
62
|
|
63
63
|
path.gsub(Swaggard.configuration.api_base_path, '')
|
64
64
|
end
|
65
|
+
|
66
|
+
def security_definitions
|
67
|
+
security_definitions = Swaggard.configuration.security_definitions
|
68
|
+
|
69
|
+
return {} if security_definitions.empty? && Swaggard.configuration.security.empty?
|
70
|
+
|
71
|
+
Swaggard.configuration.security.keys.each do |authentication_type|
|
72
|
+
next if security_definitions.key?(authentication_type)
|
73
|
+
|
74
|
+
warn "#{authentication_type} not supported by securityDefinitions"
|
75
|
+
end
|
76
|
+
|
77
|
+
{
|
78
|
+
'securityDefinitions' => security_definitions,
|
79
|
+
'security' => Swaggard.configuration.security,
|
80
|
+
}
|
81
|
+
end
|
65
82
|
end
|
66
83
|
end
|
@@ -21,7 +21,7 @@ module Swaggard
|
|
21
21
|
:language, :additional_parameters, :schemes, :ignore_undocumented_paths,
|
22
22
|
:license_name, :exclude_base_path_from_paths, :default_response_description,
|
23
23
|
:default_response_status_code, :excluded_paths, :path_parameter_description,
|
24
|
-
:ignore_put_if_patch_exists
|
24
|
+
:ignore_put_if_patch_exists, :ignore_untagged_controllers
|
25
25
|
|
26
26
|
def swagger_version
|
27
27
|
@swagger_version ||= '2.0'
|
@@ -117,6 +117,12 @@ module Swaggard
|
|
117
117
|
@ignore_undocumented_paths = false
|
118
118
|
end
|
119
119
|
|
120
|
+
def ignore_untagged_controllers
|
121
|
+
return @ignore_untagged_controllers unless @ignore_untagged_controllers.nil?
|
122
|
+
|
123
|
+
@ignore_untagged_controllers = true
|
124
|
+
end
|
125
|
+
|
120
126
|
def exclude_base_path_from_paths
|
121
127
|
return @exclude_base_path_from_paths unless @exclude_base_path_from_paths.nil?
|
122
128
|
|
@@ -164,5 +170,21 @@ module Swaggard
|
|
164
170
|
|
165
171
|
@ignore_put_if_patch_exists = false
|
166
172
|
end
|
173
|
+
|
174
|
+
def security_definitions
|
175
|
+
@security_definitions ||= {}
|
176
|
+
end
|
177
|
+
|
178
|
+
def security
|
179
|
+
@security ||= {}
|
180
|
+
end
|
181
|
+
|
182
|
+
def add_security_definition(authentication_key, definition)
|
183
|
+
security_definitions[authentication_key] = definition
|
184
|
+
end
|
185
|
+
|
186
|
+
def add_security(authentication_key, scopes = [])
|
187
|
+
security[authentication_key] = scopes
|
188
|
+
end
|
167
189
|
end
|
168
190
|
end
|
@@ -25,6 +25,10 @@ module Swaggard
|
|
25
25
|
def get_tags(yard_object)
|
26
26
|
tags = yard_object.tags.select { |tag| tag.tag_name == 'tag' }
|
27
27
|
|
28
|
+
if tags.empty? && !Swaggard.configuration.ignore_untagged_controllers
|
29
|
+
tags << nil
|
30
|
+
end
|
31
|
+
|
28
32
|
tags.map { |tag| Swagger::Tag.new(yard_object, tag) }
|
29
33
|
end
|
30
34
|
end
|
data/lib/swaggard/version.rb
CHANGED
File without changes
|
@@ -12,6 +12,7 @@ describe Swaggard, '.get_doc' do
|
|
12
12
|
Swaggard.configure do |config|
|
13
13
|
config.controllers_path = controller_path
|
14
14
|
config.routes = Dummy::Application.routes.routes
|
15
|
+
config.ignore_untagged_controllers = false
|
15
16
|
end
|
16
17
|
|
17
18
|
swagger_json = JSON.dump(Swaggard.get_doc(host))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swaggard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Gomez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -194,6 +194,7 @@ files:
|
|
194
194
|
- spec/fixtures/dummy/config/application.rb
|
195
195
|
- spec/fixtures/dummy/config/environments/development.rb
|
196
196
|
- spec/fixtures/dummy/config/routes.rb
|
197
|
+
- spec/fixtures/dummy/log/development.log
|
197
198
|
- spec/fixtures/swagger_schema.json
|
198
199
|
- spec/integration/swaggard_spec.rb
|
199
200
|
- spec/spec_helper.rb
|
@@ -216,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
217
|
- !ruby/object:Gem::Version
|
217
218
|
version: '0'
|
218
219
|
requirements: []
|
219
|
-
rubygems_version: 3.
|
220
|
+
rubygems_version: 3.3.7
|
220
221
|
signing_key:
|
221
222
|
specification_version: 4
|
222
223
|
summary: 'Swaggard: Swagger Rails REST API doc using yard YARD'
|
@@ -228,6 +229,7 @@ test_files:
|
|
228
229
|
- spec/fixtures/dummy/config/application.rb
|
229
230
|
- spec/fixtures/dummy/config/environments/development.rb
|
230
231
|
- spec/fixtures/dummy/config/routes.rb
|
232
|
+
- spec/fixtures/dummy/log/development.log
|
231
233
|
- spec/fixtures/swagger_schema.json
|
232
234
|
- spec/integration/swaggard_spec.rb
|
233
235
|
- spec/spec_helper.rb
|