swagger_codegen_rails 0.1.01
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +100 -0
- data/Rakefile +23 -0
- data/lib/generators/swagger.rb +3 -0
- data/lib/generators/swagger/add/add_generator.rb +41 -0
- data/lib/generators/swagger/add/templates/_swagger.rb.tt +53 -0
- data/lib/generators/swagger/init/init_generator.rb +38 -0
- data/lib/generators/swagger/init/templates/_swagger_controller.rb.tt +27 -0
- data/lib/generators/swagger/install/install_generator.rb +29 -0
- data/lib/generators/swagger/install/templates/_initializer.rb.tt +13 -0
- data/lib/generators/swagger/install/templates/_swagger_ui_initializer.rb.tt +22 -0
- data/lib/swagger_codegen_rails.rb +23 -0
- data/lib/swagger_codegen_rails/configuration.rb +22 -0
- data/lib/swagger_codegen_rails/defaults.rb +7 -0
- data/lib/swagger_codegen_rails/namespace.rb +54 -0
- data/lib/swagger_codegen_rails/parameter.rb +22 -0
- data/lib/swagger_codegen_rails/parser.rb +8 -0
- data/lib/swagger_codegen_rails/version.rb +5 -0
- data/lib/tasks/swagger_codegen_rails_tasks.rake +4 -0
- metadata +163 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: '00846a9be00eb053e473ed67d05ed24a8a9fe9c5'
|
|
4
|
+
data.tar.gz: aec9d081a43f8ef8f8496e3a592b74320a1357c1
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 944f49516f35680d4ccf1cc8f595885ae8234d7477c5518d0efe63c8cc5b6a114e2458a09449f095dcb8cc9c8b5c5e2f123ab2dacc3ce0b2c5aa98f0e7b0e85e
|
|
7
|
+
data.tar.gz: e5c0f1927d789fd9f509d3425e2cbc42b063c896245f35f2073f36663ca49139d78cad26f6364be2362f1f5a781262bc069303c3e359471e956d75faaca65059
|
data/MIT-LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright 2018
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
[](https://badge.fury.io/rb/swagger_codegen_rails)
|
|
2
|
+
[](https://travis-ci.org/technobrain/swagger_codegen_rails)
|
|
3
|
+
[](https://circleci.com/gh/technobrain/swagger_codegen_rails)
|
|
4
|
+
[](https://codeclimate.com/github/technobrain/swagger_codegen_rails/maintainability)
|
|
5
|
+
|
|
6
|
+
# SwaggerCodegenRails
|
|
7
|
+
this plugin generate SWAGGER API document's templates for [swagger-blocks](https://github.com/fotinakis/swagger-blocks), [swagger_ui_engine](https://github.com/zuzannast/swagger_ui_engine).
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
Add this line to your application's Gemfile:
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
gem 'swagger_codegen_rails'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
And then execute:
|
|
18
|
+
```bash
|
|
19
|
+
$ bundle
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Or install it yourself as:
|
|
23
|
+
```bash
|
|
24
|
+
$ gem install swagger_codegen_rails
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
### Demo
|
|
29
|
+
```bash
|
|
30
|
+
$ rails g swagger:install
|
|
31
|
+
$ rails g swagger:init /api/v1
|
|
32
|
+
$ rails g swagger:add /api/v1 /api/v1/user/:id id:path:integer:true
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Create intializer file
|
|
36
|
+
```bash
|
|
37
|
+
$ rails g swagger:install
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Modify **config/intializers/swagger_codegen_rails.rb**, example below
|
|
41
|
+
```Ruby
|
|
42
|
+
# config/initializers/swagger_codegen_rails.rb
|
|
43
|
+
|
|
44
|
+
SwaggerCodegenRails.configure do |config|
|
|
45
|
+
config.versioned = false # boolean
|
|
46
|
+
|
|
47
|
+
config.versions_url = {
|
|
48
|
+
v1: 'api/v1',
|
|
49
|
+
v2: 'api/v2'
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
config.concern_dir = "/path/to/your/concern/directory"
|
|
53
|
+
# default: /app/controllers/concerns
|
|
54
|
+
|
|
55
|
+
config.schema_dir = "/path/to/your/schema/dir"
|
|
56
|
+
# default: /app/models/concerns
|
|
57
|
+
end
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Options:
|
|
61
|
+
|
|
62
|
+
|configurations|type|default|description|
|
|
63
|
+
|:------|:----|:-|:-------------------------|
|
|
64
|
+
|config.versioned|boolean|false|set path of versioned API documentations|
|
|
65
|
+
config.versions_url|hash|EMPTY|define versioned path|
|
|
66
|
+
|config.concern_dir|string|/app/controllers/concern|set root path of endpoint documentations|
|
|
67
|
+
|config.schema_dir|string|/app/models/concern|set root path of response schema documentations|
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
### To Create Namespace
|
|
71
|
+
```bash
|
|
72
|
+
$ rails g swagger:init NAMESPACE
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### To add Endpoint
|
|
76
|
+
```bash
|
|
77
|
+
$ rails g swagger:add NAMESPACE HTTP_METHOD URI [PARAMETERS; name:in:type:required]
|
|
78
|
+
$ # If you do NOT want namespace, example below
|
|
79
|
+
$ rails g swagger:add . GET /users id:path:integer:true
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Parameters:
|
|
83
|
+
|
|
84
|
+
||description|
|
|
85
|
+
|:-|:-|
|
|
86
|
+
|name|parameter name|
|
|
87
|
+
|in|ex) in =\> /items?id=###, query =\> parameter is id.|
|
|
88
|
+
|type|data type|
|
|
89
|
+
|required|required|
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
## Contributing
|
|
93
|
+
1. Fork it ( https://github.com/technobrain/swagger_codegen_rails )
|
|
94
|
+
2. Create your feature branch (git checkout -b my-new-feature)
|
|
95
|
+
3. Commit your changes (git commit -am 'Add some feature')
|
|
96
|
+
4. Push to the branch (git push origin my-new-feature)
|
|
97
|
+
5. Create new Pull Request
|
|
98
|
+
|
|
99
|
+
## License
|
|
100
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'bundler/setup'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
require 'rdoc/task'
|
|
8
|
+
|
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
11
|
+
rdoc.title = 'SwaggerCodegenRails'
|
|
12
|
+
rdoc.options << '--line-numbers'
|
|
13
|
+
rdoc.rdoc_files.include('README.md')
|
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
require 'bundler/gem_tasks'
|
|
23
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Swagger
|
|
2
|
+
class AddGenerator < ::Rails::Generators::NamedBase
|
|
3
|
+
argument :http_method, type: :string, required: true
|
|
4
|
+
argument :uri, type: :string, required: true
|
|
5
|
+
argument :parameter, type: :array, required: false, banner: 'name:in:type:required'
|
|
6
|
+
|
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
8
|
+
|
|
9
|
+
def arguments
|
|
10
|
+
@params = ::SwaggerCodegenRails.parse(parameter)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def create_endpoint_doc
|
|
14
|
+
template '_swagger.rb.tt', File.join(swagger_path, "_#{swagger_file_name}.rb") if swagger_file_name
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def module_name
|
|
20
|
+
swagger_file_name.camelize
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def name_space
|
|
24
|
+
config = SwaggerCodegenRails.configuration.versions_url
|
|
25
|
+
config ? (config[name.to_sym] || name) : name
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def swagger_path
|
|
29
|
+
base_path = SwaggerCodegenRails.configuration.concern_dir
|
|
30
|
+
File.join(base_path, name_space)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def slash_replace(str)
|
|
34
|
+
str&.gsub("/","_")&.gsub(/\A_*/, '')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def swagger_file_name
|
|
38
|
+
slash_replace(uri.sub(name_space, ''))
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<% module_namespacing do -%>
|
|
2
|
+
module <%= module_name %>
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
Dir.glob[<%= SwaggerCodegenRails.configuration.schema_dir %> + "/**/*.rb"].each do |schema|
|
|
5
|
+
include schema
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
swagger_path '<%= uri %>' do
|
|
10
|
+
operation <%= http_method %> do
|
|
11
|
+
key :description, "TODO: describe endpoint here"
|
|
12
|
+
key :operationId, "TODO: "
|
|
13
|
+
key :produces, [
|
|
14
|
+
'application/join',
|
|
15
|
+
]
|
|
16
|
+
key :tags, [
|
|
17
|
+
# A list of tags used by the specification with additional metadata.
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
<% @params&.each do |param| -%>
|
|
21
|
+
parameter do
|
|
22
|
+
key :name, :<%= param.name %>
|
|
23
|
+
key :in, :<%= param.in %>
|
|
24
|
+
key :description, "TODO: "
|
|
25
|
+
key :type, :<%= param.type %>
|
|
26
|
+
key :required, <%= param.required %>
|
|
27
|
+
end
|
|
28
|
+
<%= "\n" %>
|
|
29
|
+
<% end -%>
|
|
30
|
+
response 200 do
|
|
31
|
+
key :description, "TODO: "
|
|
32
|
+
schema do
|
|
33
|
+
key :'$ref', TODO:
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
response 404 do
|
|
38
|
+
key :description, "TODO: "
|
|
39
|
+
schema do
|
|
40
|
+
key :'$ref', TODO:
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
response 501 do
|
|
45
|
+
key :description, "TODO: "
|
|
46
|
+
schema do
|
|
47
|
+
key :'$ref', TODO:
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
<% end -%>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'swagger_codegen_rails/namespace'
|
|
2
|
+
|
|
3
|
+
module Swagger
|
|
4
|
+
class InitGenerator < ::Rails::Generators::NamedBase
|
|
5
|
+
|
|
6
|
+
include SwaggerCodegenRails::Namespace
|
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
8
|
+
|
|
9
|
+
def create_concern_dir
|
|
10
|
+
empty_directory concern_dir
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def create_namespace_dir
|
|
14
|
+
empty_directory namespace_dir
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def create_swagger_controller_file
|
|
18
|
+
template "_swagger_controller.rb.tt", swagger_controller_path
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def insert_route
|
|
22
|
+
route namespaced_route
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
def swagger_controller_path
|
|
27
|
+
File.join("app/controllers", name, "swagger_controller.rb")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def concern_dir
|
|
31
|
+
SwaggerCodegenRails.configuration.concern_dir
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def namespace_dir
|
|
35
|
+
File.join(concern_dir, name)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<% module_namespacing do %>
|
|
2
|
+
class SwaggerController < ActionController::Base
|
|
3
|
+
include Swagger::Blocks
|
|
4
|
+
Dir.glob("<%= namespace_dir -%>/**/*.rb").each do |swagger|
|
|
5
|
+
include swagger
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
swagger_root do
|
|
9
|
+
key :swagger, "2.0"
|
|
10
|
+
info do
|
|
11
|
+
key :title, 'TODO: api title'
|
|
12
|
+
key :version, '0.0.1'
|
|
13
|
+
key :termsOfService, 'TODO: set your service URL'
|
|
14
|
+
end
|
|
15
|
+
key :consumes, ['application/json']
|
|
16
|
+
key :produces, ['application/json']
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
SWAGGER_CLASSES = [
|
|
20
|
+
self,
|
|
21
|
+
].freeze
|
|
22
|
+
|
|
23
|
+
def index
|
|
24
|
+
render json: Swagger::Blocks.build_root_json(SWAGGER_CLASSES)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
<% end -%>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Swagger
|
|
2
|
+
class InstallGenerator < ::Rails::Generators::Base
|
|
3
|
+
|
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
5
|
+
|
|
6
|
+
def create_initializer_file
|
|
7
|
+
template "_initializer.rb.tt", "config/initializers/swagger_codegen_rails.rb"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def create_swagger_ui_initializer_file
|
|
11
|
+
template "_swagger_ui_initializer.rb.tt", "config/initializers/swagger_ui_engine.rb"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def insert_ui_route
|
|
15
|
+
route "mount SwaggerUiEngine::Engine, at: '/swagger'"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def insert_gemfile
|
|
19
|
+
gem 'swagger_ui_engine'
|
|
20
|
+
gem 'swagger-blocks'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
def initializer_exist?
|
|
25
|
+
initializer_path = "config/initializers/swagger_ui_engine.rb"
|
|
26
|
+
File.exist?(initializer_path)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
SwaggerCodegenRails.configure do |config|
|
|
2
|
+
# version namespace
|
|
3
|
+
config.versions_url = {
|
|
4
|
+
# v1: 'api/v1',
|
|
5
|
+
# v2: 'api/v2'
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
# directory swagger document files placed
|
|
9
|
+
config.concern_dir = "app/controllers/concerns"
|
|
10
|
+
|
|
11
|
+
# directory swagger response schema placed
|
|
12
|
+
config.schema_dir = "app/models/concerns"
|
|
13
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# config/initializers/swagger_codegen_rails.rb
|
|
2
|
+
|
|
3
|
+
SwaggerUiEngine.configure do |config|
|
|
4
|
+
config.swagger_url = SwaggerCodegenRails.configuration.swagger_url
|
|
5
|
+
# Controls how the API listing is displayed. It can be set to 'none' (default), 'list' (shows operations for each resource), or 'full' (fully expanded: shows operations and their details).
|
|
6
|
+
config.doc_expansion = 'list'
|
|
7
|
+
|
|
8
|
+
# Controls how models are shown when the API is first rendered. It can be set to 'model' or 'schema', and the default is 'schema'.
|
|
9
|
+
config.model_rendering = 'model'
|
|
10
|
+
|
|
11
|
+
# Whether or not to show the headers that were sent when making a request via the 'Try it out!' option. Defaults to false.
|
|
12
|
+
# config.request_headers = false
|
|
13
|
+
|
|
14
|
+
# Enables a graphical view for editing complex bodies. Defaults to false.
|
|
15
|
+
# config.json_editor = false
|
|
16
|
+
|
|
17
|
+
# Enables Swagger Ui translations. Defaults to false.
|
|
18
|
+
# config.translator_enabled = false
|
|
19
|
+
|
|
20
|
+
# Enables documentation validator. Defaults to false (validatorUrl: 'null').
|
|
21
|
+
# config.validator_enabled = false
|
|
22
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'swagger_codegen_rails/version'
|
|
2
|
+
require 'swagger_codegen_rails/configuration'
|
|
3
|
+
require 'swagger_codegen_rails/defaults'
|
|
4
|
+
require 'swagger_codegen_rails/parameter'
|
|
5
|
+
require 'swagger_codegen_rails/parser'
|
|
6
|
+
|
|
7
|
+
require 'generators/swagger'
|
|
8
|
+
|
|
9
|
+
SwaggerCodegenRails.extend(SwaggerCodegenRails::Parser)
|
|
10
|
+
|
|
11
|
+
module SwaggerCodegenRails
|
|
12
|
+
class << self
|
|
13
|
+
delegate(*Configuration::OPTIONS, to: :configuration)
|
|
14
|
+
|
|
15
|
+
def configuration
|
|
16
|
+
@configuration ||= Configuration.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def configure
|
|
20
|
+
yield(configuration)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module SwaggerCodegenRails
|
|
2
|
+
class Configuration
|
|
3
|
+
OPTIONS = %i(
|
|
4
|
+
concern_dir
|
|
5
|
+
schema_dir
|
|
6
|
+
versioned
|
|
7
|
+
versions_url
|
|
8
|
+
).freeze
|
|
9
|
+
|
|
10
|
+
attr_accessor(*OPTIONS)
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
DEFAULTS.each do |default|
|
|
14
|
+
self.class.send(:define_method, default.first) { default.last }
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def swagger_url
|
|
19
|
+
self.versions_url.map { |k, v| [k, File.join("/", v, "swagger.json")] }.to_h
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module SwaggerCodegenRails
|
|
2
|
+
module Namespace
|
|
3
|
+
|
|
4
|
+
def module_namespacing(&block)
|
|
5
|
+
return unless namespaced?
|
|
6
|
+
content = capture(&block)
|
|
7
|
+
namespaces.reverse.each do |name|
|
|
8
|
+
content = wrap_with_namespace(content, name)
|
|
9
|
+
end
|
|
10
|
+
concat(content)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def namespaced_route
|
|
14
|
+
depth = 0
|
|
15
|
+
lines = []
|
|
16
|
+
|
|
17
|
+
namespaces.map(&:underscore).each do |ns|
|
|
18
|
+
lines << indent("namespace :#{ns} do\n", depth*2)
|
|
19
|
+
depth += 1
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
lines << indent("resources :swagger, only: :index\n", depth*2)
|
|
23
|
+
|
|
24
|
+
until depth.zero?
|
|
25
|
+
depth -= 1
|
|
26
|
+
lines << indent("end\n", depth*2)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
lines.join
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def namespaces
|
|
33
|
+
name.gsub('.','').split("/").reject(&:blank?).map(&:camelize)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def namespace
|
|
37
|
+
File.join(name, "swagger").sub(/\A\//, '').sub(/\/\Z/, '')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def namespaced?
|
|
41
|
+
namespaces
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def wrap_with_namespace(content, namespace)
|
|
45
|
+
content = indent(content).chomp
|
|
46
|
+
"module #{namespace}\n#{content}\nend\n"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def indent(content, multiplier = 2)
|
|
50
|
+
spaces = " " * multiplier
|
|
51
|
+
content.each_line.map { |line| line.blank? ? line : "#{spaces}#{line}" }.join
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module SwaggerCodegenRails
|
|
2
|
+
class Parameter < Struct.new(:name,
|
|
3
|
+
:in,
|
|
4
|
+
:type,
|
|
5
|
+
:required)
|
|
6
|
+
|
|
7
|
+
def map_params(str)
|
|
8
|
+
params = devide(str)
|
|
9
|
+
self.each_with_index do |_v, i|
|
|
10
|
+
self[i] = params[i].blank? ? "TODO" : params[i]
|
|
11
|
+
end
|
|
12
|
+
rescue IndexError => e
|
|
13
|
+
logger.error e
|
|
14
|
+
logger.error e.backtrace.join("\n")
|
|
15
|
+
return nil
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def devide(arg_str)
|
|
19
|
+
arg_str.split(":", 4)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: swagger_codegen_rails
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.01
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Akifumi Tomiyama
|
|
8
|
+
- technobrain
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2018-02-28 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rails
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ">="
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '5.0'
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: '5.0'
|
|
28
|
+
- !ruby/object:Gem::Dependency
|
|
29
|
+
name: swagger-blocks
|
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - ">="
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '0'
|
|
35
|
+
type: :runtime
|
|
36
|
+
prerelease: false
|
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: swagger_ui_engine
|
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '0'
|
|
49
|
+
type: :runtime
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - ">="
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: '0'
|
|
56
|
+
- !ruby/object:Gem::Dependency
|
|
57
|
+
name: sqlite3
|
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0'
|
|
63
|
+
type: :development
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0'
|
|
70
|
+
- !ruby/object:Gem::Dependency
|
|
71
|
+
name: ammeter
|
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - ">="
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '0'
|
|
77
|
+
type: :development
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: '0'
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
name: byebug
|
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - ">="
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '0'
|
|
91
|
+
type: :development
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - ">="
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '0'
|
|
98
|
+
- !ruby/object:Gem::Dependency
|
|
99
|
+
name: rspec-rails
|
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
|
101
|
+
requirements:
|
|
102
|
+
- - ">="
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: '0'
|
|
105
|
+
type: :development
|
|
106
|
+
prerelease: false
|
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
+
requirements:
|
|
109
|
+
- - ">="
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: '0'
|
|
112
|
+
description: SWAGGER generator for rails APIs working with swagger_ui_engine and swagger-block.
|
|
113
|
+
email:
|
|
114
|
+
- akifumi_tomiyama@tbn.co.jp
|
|
115
|
+
- techno.rb@tbn.co.jp
|
|
116
|
+
executables: []
|
|
117
|
+
extensions: []
|
|
118
|
+
extra_rdoc_files: []
|
|
119
|
+
files:
|
|
120
|
+
- MIT-LICENSE
|
|
121
|
+
- README.md
|
|
122
|
+
- Rakefile
|
|
123
|
+
- lib/generators/swagger.rb
|
|
124
|
+
- lib/generators/swagger/add/add_generator.rb
|
|
125
|
+
- lib/generators/swagger/add/templates/_swagger.rb.tt
|
|
126
|
+
- lib/generators/swagger/init/init_generator.rb
|
|
127
|
+
- lib/generators/swagger/init/templates/_swagger_controller.rb.tt
|
|
128
|
+
- lib/generators/swagger/install/install_generator.rb
|
|
129
|
+
- lib/generators/swagger/install/templates/_initializer.rb.tt
|
|
130
|
+
- lib/generators/swagger/install/templates/_swagger_ui_initializer.rb.tt
|
|
131
|
+
- lib/swagger_codegen_rails.rb
|
|
132
|
+
- lib/swagger_codegen_rails/configuration.rb
|
|
133
|
+
- lib/swagger_codegen_rails/defaults.rb
|
|
134
|
+
- lib/swagger_codegen_rails/namespace.rb
|
|
135
|
+
- lib/swagger_codegen_rails/parameter.rb
|
|
136
|
+
- lib/swagger_codegen_rails/parser.rb
|
|
137
|
+
- lib/swagger_codegen_rails/version.rb
|
|
138
|
+
- lib/tasks/swagger_codegen_rails_tasks.rake
|
|
139
|
+
homepage: https://github.com/technobrain/swagger_codegen_rails
|
|
140
|
+
licenses:
|
|
141
|
+
- MIT
|
|
142
|
+
metadata: {}
|
|
143
|
+
post_install_message:
|
|
144
|
+
rdoc_options: []
|
|
145
|
+
require_paths:
|
|
146
|
+
- lib
|
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
148
|
+
requirements:
|
|
149
|
+
- - ">="
|
|
150
|
+
- !ruby/object:Gem::Version
|
|
151
|
+
version: '0'
|
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
|
+
requirements:
|
|
154
|
+
- - ">="
|
|
155
|
+
- !ruby/object:Gem::Version
|
|
156
|
+
version: '0'
|
|
157
|
+
requirements: []
|
|
158
|
+
rubyforge_project:
|
|
159
|
+
rubygems_version: 2.6.14
|
|
160
|
+
signing_key:
|
|
161
|
+
specification_version: 4
|
|
162
|
+
summary: Generator for swagger-blocks and swagger_ui_engine
|
|
163
|
+
test_files: []
|