swagger-docs 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +5 -0
- data/lib/swagger/docs/api_declaration_file.rb +6 -1
- data/lib/swagger/docs/api_declaration_file_metadata.rb +2 -1
- data/lib/swagger/docs/generator.rb +17 -6
- data/lib/swagger/docs/version.rb +1 -1
- data/spec/lib/swagger/docs/api_declaration_file_metadata_spec.rb +9 -16
- data/spec/lib/swagger/docs/api_declaration_file_spec.rb +2 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9fdc3f4f644a149fff976af8f32e4a084749d95
|
4
|
+
data.tar.gz: ec345458634e9e25fee45ace966b271d1d8bd273
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45bb296a5aa61b7b7ecae8eb1706da6483bb7febe4b189f36490203e39732ffc2e0f54271298aec7d1a0d0615eeedc808fa599ce5ff7bab1ba8ed2afb92911c6
|
7
|
+
data.tar.gz: 566577465f61ef479399c9ef270f5762905e4b9f173ce2d11d1111a3162ace73621b78b6b39fc489dca7793e7bbb47e301bafb65cf823a3b346d4302f8fe8ded
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -10,6 +10,11 @@ Generates swagger-ui json files for rails apps with APIs. You add the swagger DS
|
|
10
10
|
[gemnasium]: https://gemnasium.com/richhollis/swagger-docs
|
11
11
|
[coveralls]: https://coveralls.io/r/richhollis/swagger-docs
|
12
12
|
|
13
|
+
## Swagger Version Specification Support
|
14
|
+
|
15
|
+
This project supports elements of the v1.2 swagger specification. It *does not* support the v2 specification. If you are looking for support for the newer specification the please see the [swagger-blocks](https://github.com/fotinakis/swagger-blocks/) project. I don't currently have any plans to add support for v2.0 at this time.
|
16
|
+
|
17
|
+
## Example usage
|
13
18
|
|
14
19
|
Here is an extract of the DSL from a user controller API class:
|
15
20
|
|
@@ -52,6 +52,10 @@ module Swagger
|
|
52
52
|
normalize_model_properties @models
|
53
53
|
end
|
54
54
|
|
55
|
+
def authorizations
|
56
|
+
metadata.authorizations
|
57
|
+
end
|
58
|
+
|
55
59
|
private
|
56
60
|
|
57
61
|
def build_resource_root_hash
|
@@ -61,7 +65,8 @@ module Swagger
|
|
61
65
|
"basePath" => base_path,
|
62
66
|
"resourcePath" => resource_path,
|
63
67
|
"apis" => apis,
|
64
|
-
"resourceFilePath" => resource_file_path
|
68
|
+
"resourceFilePath" => resource_file_path,
|
69
|
+
"authorizations" => authorizations
|
65
70
|
}
|
66
71
|
end
|
67
72
|
|
@@ -3,7 +3,7 @@ module Swagger
|
|
3
3
|
class ApiDeclarationFileMetadata
|
4
4
|
DEFAULT_SWAGGER_VERSION = "1.2"
|
5
5
|
|
6
|
-
attr_reader :api_version, :path, :base_path, :controller_base_path, :swagger_version, :camelize_model_properties
|
6
|
+
attr_reader :api_version, :path, :base_path, :controller_base_path, :swagger_version, :camelize_model_properties, :authorizations
|
7
7
|
|
8
8
|
def initialize(api_version, path, base_path, controller_base_path, options={})
|
9
9
|
@api_version = api_version
|
@@ -12,6 +12,7 @@ module Swagger
|
|
12
12
|
@controller_base_path = controller_base_path
|
13
13
|
@swagger_version = options.fetch(:swagger_version, DEFAULT_SWAGGER_VERSION)
|
14
14
|
@camelize_model_properties = options.fetch(:camelize_model_properties, true)
|
15
|
+
@authorizations = options.fetch(:authorizations, {})
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
@@ -61,7 +61,13 @@ module Swagger
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def generate_doc(api_version, settings, config)
|
64
|
-
root = {
|
64
|
+
root = {
|
65
|
+
"apiVersion" => api_version,
|
66
|
+
"swaggerVersion" => "1.2",
|
67
|
+
"basePath" => settings[:base_path],
|
68
|
+
:apis => [],
|
69
|
+
:authorizations => settings[:authorizations]
|
70
|
+
}
|
65
71
|
results = {:processed => [], :skipped => []}
|
66
72
|
resources = []
|
67
73
|
|
@@ -159,10 +165,13 @@ module Swagger
|
|
159
165
|
end
|
160
166
|
|
161
167
|
def generate_resource(path, apis, models, settings, root, config)
|
162
|
-
metadata = ApiDeclarationFileMetadata.new(
|
163
|
-
|
164
|
-
|
165
|
-
|
168
|
+
metadata = ApiDeclarationFileMetadata.new(
|
169
|
+
root["apiVersion"], path, root["basePath"],
|
170
|
+
settings[:controller_base_path],
|
171
|
+
camelize_model_properties: config.fetch(:camelize_model_properties, true),
|
172
|
+
swagger_version: root["swaggerVersion"],
|
173
|
+
authorizations: root[:authorizations]
|
174
|
+
)
|
166
175
|
declaration = ApiDeclarationFile.new(metadata, apis, models)
|
167
176
|
declaration.generate_resource
|
168
177
|
end
|
@@ -210,10 +219,12 @@ module Swagger
|
|
210
219
|
controller_base_path = trim_leading_slash(config[:controller_base_path] || "")
|
211
220
|
base_path += "/#{controller_base_path}" unless controller_base_path.empty?
|
212
221
|
api_file_path = config[:api_file_path]
|
222
|
+
authorizations = config[:authorizations]
|
213
223
|
settings = {
|
214
224
|
base_path: base_path,
|
215
225
|
controller_base_path: controller_base_path,
|
216
|
-
api_file_path: api_file_path
|
226
|
+
api_file_path: api_file_path,
|
227
|
+
authorizations: authorizations
|
217
228
|
}.freeze
|
218
229
|
end
|
219
230
|
|
data/lib/swagger/docs/version.rb
CHANGED
@@ -5,51 +5,44 @@ describe Swagger::Docs::ApiDeclarationFileMetadata do
|
|
5
5
|
describe "#initialize" do
|
6
6
|
it "sets the api_version property" do
|
7
7
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath")
|
8
|
-
|
9
8
|
expect(metadata.api_version).to eq("1.0")
|
10
9
|
end
|
11
|
-
|
12
10
|
it "sets the path property" do
|
13
11
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath")
|
14
|
-
|
15
12
|
expect(metadata.path).to eq("path")
|
16
13
|
end
|
17
|
-
|
18
14
|
it "sets the base_path property" do
|
19
15
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath")
|
20
|
-
|
21
16
|
expect(metadata.base_path).to eq("basePath")
|
22
17
|
end
|
23
|
-
|
24
18
|
it "sets the controller_base_path property" do
|
25
19
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath")
|
26
|
-
|
27
20
|
expect(metadata.controller_base_path).to eq("controllerBasePath")
|
28
21
|
end
|
29
|
-
|
30
22
|
it "defaults the swagger_version property to DEFAULT_SWAGGER_VERSION" do
|
31
23
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath")
|
32
|
-
|
33
24
|
expect(metadata.swagger_version).to eq(described_class::DEFAULT_SWAGGER_VERSION)
|
34
25
|
end
|
35
|
-
|
36
26
|
it "allows the swagger_version property to be_overriden" do
|
37
27
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath", swagger_version: "2.0")
|
38
|
-
|
39
28
|
expect(metadata.swagger_version).to eq("2.0")
|
40
29
|
end
|
41
|
-
|
42
|
-
|
43
30
|
it "defaults the camelize_model_properties property to true" do
|
44
31
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath")
|
45
|
-
|
46
32
|
expect(metadata.camelize_model_properties).to eq(true)
|
47
33
|
end
|
48
|
-
|
49
34
|
it "allows the camelize_model_properties property to be overidden" do
|
50
35
|
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath", camelize_model_properties: false)
|
51
|
-
|
52
36
|
expect(metadata.camelize_model_properties).to eq(false)
|
53
37
|
end
|
38
|
+
it "defaults the authorizations property to empty hash" do
|
39
|
+
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath")
|
40
|
+
expect(metadata.authorizations).to eq({})
|
41
|
+
end
|
42
|
+
it "allows the authorizations property to be overidden" do
|
43
|
+
authorizations = {foo: 'bar'}
|
44
|
+
metadata = described_class.new("1.0", "path", "basePath", "controllerBasePath", authorizations: authorizations)
|
45
|
+
expect(metadata.authorizations).to eq(authorizations)
|
46
|
+
end
|
54
47
|
end
|
55
48
|
end
|
@@ -63,7 +63,8 @@ describe Swagger::Docs::ApiDeclarationFile do
|
|
63
63
|
"apis"=> declaration.apis,
|
64
64
|
"resourcePath"=> declaration.resource_path,
|
65
65
|
:models=> declaration.models,
|
66
|
-
"resourceFilePath" => declaration.resource_file_path
|
66
|
+
"resourceFilePath" => declaration.resource_file_path,
|
67
|
+
"authorizations" => {}
|
67
68
|
}
|
68
69
|
expect(declaration.generate_resource).to eq(expected_response)
|
69
70
|
end
|