swagger_rails 1.0.0.pre.beta

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.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +24 -0
  5. data/app/controllers/swagger_rails/application_controller.rb +8 -0
  6. data/app/controllers/swagger_rails/swagger_ui_controller.rb +14 -0
  7. data/app/helpers/swagger_rails/application_helper.rb +4 -0
  8. data/app/views/swagger_rails/swagger_ui/index.html.erb +145 -0
  9. data/bower_components/swagger-ui/dist/css/print.css +1172 -0
  10. data/bower_components/swagger-ui/dist/css/reset.css +125 -0
  11. data/bower_components/swagger-ui/dist/css/screen.css +1279 -0
  12. data/bower_components/swagger-ui/dist/css/style.css +250 -0
  13. data/bower_components/swagger-ui/dist/css/typography.css +26 -0
  14. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.eot +0 -0
  15. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.svg +411 -0
  16. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.ttf +0 -0
  17. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.woff +0 -0
  18. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.woff2 +0 -0
  19. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.eot +0 -0
  20. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.svg +403 -0
  21. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.ttf +0 -0
  22. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.woff +0 -0
  23. data/bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.woff2 +0 -0
  24. data/bower_components/swagger-ui/dist/images/explorer_icons.png +0 -0
  25. data/bower_components/swagger-ui/dist/images/favicon-16x16.png +0 -0
  26. data/bower_components/swagger-ui/dist/images/favicon-32x32.png +0 -0
  27. data/bower_components/swagger-ui/dist/images/favicon.ico +0 -0
  28. data/bower_components/swagger-ui/dist/images/logo_small.png +0 -0
  29. data/bower_components/swagger-ui/dist/images/pet_store_api.png +0 -0
  30. data/bower_components/swagger-ui/dist/images/throbber.gif +0 -0
  31. data/bower_components/swagger-ui/dist/images/wordnik_api.png +0 -0
  32. data/bower_components/swagger-ui/dist/index.html +119 -0
  33. data/bower_components/swagger-ui/dist/lang/en.js +53 -0
  34. data/bower_components/swagger-ui/dist/lang/es.js +52 -0
  35. data/bower_components/swagger-ui/dist/lang/pt.js +53 -0
  36. data/bower_components/swagger-ui/dist/lang/ru.js +52 -0
  37. data/bower_components/swagger-ui/dist/lang/translator.js +39 -0
  38. data/bower_components/swagger-ui/dist/lib/backbone-min.js +15 -0
  39. data/bower_components/swagger-ui/dist/lib/handlebars-2.0.0.js +28 -0
  40. data/bower_components/swagger-ui/dist/lib/highlight.7.3.pack.js +1 -0
  41. data/bower_components/swagger-ui/dist/lib/jquery-1.8.0.min.js +2 -0
  42. data/bower_components/swagger-ui/dist/lib/jquery.ba-bbq.min.js +18 -0
  43. data/bower_components/swagger-ui/dist/lib/jquery.slideto.min.js +1 -0
  44. data/bower_components/swagger-ui/dist/lib/jquery.wiggle.min.js +8 -0
  45. data/bower_components/swagger-ui/dist/lib/marked.js +1272 -0
  46. data/bower_components/swagger-ui/dist/lib/swagger-oauth.js +290 -0
  47. data/bower_components/swagger-ui/dist/lib/underscore-min.js +6 -0
  48. data/bower_components/swagger-ui/dist/lib/underscore-min.map +1 -0
  49. data/bower_components/swagger-ui/dist/o2c.html +20 -0
  50. data/bower_components/swagger-ui/dist/swagger-ui.js +32187 -0
  51. data/bower_components/swagger-ui/dist/swagger-ui.min.js +14 -0
  52. data/config/routes.rb +4 -0
  53. data/lib/generators/swagger_rails/custom_ui/USAGE +8 -0
  54. data/lib/generators/swagger_rails/custom_ui/custom_ui_generator.rb +9 -0
  55. data/lib/generators/swagger_rails/custom_ui/files/index.html.erb +145 -0
  56. data/lib/generators/swagger_rails/install/USAGE +9 -0
  57. data/lib/generators/swagger_rails/install/install_generator.rb +20 -0
  58. data/lib/generators/swagger_rails/install/templates/swagger.json +45 -0
  59. data/lib/generators/swagger_rails/install/templates/swagger_rails.rb +13 -0
  60. data/lib/swagger_rails/engine.rb +13 -0
  61. data/lib/swagger_rails/middleware/swagger_docs.rb +4 -0
  62. data/lib/swagger_rails/middleware/swagger_ui.rb +14 -0
  63. data/lib/swagger_rails/rspec/dsl.rb +63 -0
  64. data/lib/swagger_rails/rspec/formatter.rb +61 -0
  65. data/lib/swagger_rails/test_visitor.rb +59 -0
  66. data/lib/swagger_rails/version.rb +3 -0
  67. data/lib/swagger_rails.rb +24 -0
  68. data/lib/tasks/swagger_rails_tasks.rake +12 -0
  69. metadata +152 -0
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ SwaggerRails::Engine.routes.draw do
2
+ root to: 'application#redirect_to_swagger_ui'
3
+ get '/index.html', to: 'swagger_ui#index', as: :swagger_ui
4
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Adds a local version of index.html.erb for customizing the swagger-ui
3
+
4
+ Example:
5
+ rails generate swagger_rails:custom_ui
6
+
7
+ This will create:
8
+ app/views/swagger_rails/swagger_ui/index.html.erb
@@ -0,0 +1,9 @@
1
+ module SwaggerRails
2
+ class CustomUiGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('../files', __FILE__)
4
+
5
+ def add_custom_index
6
+ copy_file('index.html.erb', 'app/views/swagger_rails/swagger_ui/index.html.erb')
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,145 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Swagger UI</title>
6
+ <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32" />
7
+ <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16" />
8
+ <link href='css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
9
+ <link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
10
+ <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
11
+ <link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
12
+ <link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
13
+ <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
14
+ <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
15
+ <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
16
+ <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
17
+ <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>
18
+ <script src='lib/underscore-min.js' type='text/javascript'></script>
19
+ <script src='lib/backbone-min.js' type='text/javascript'></script>
20
+ <script src='swagger-ui.js' type='text/javascript'></script>
21
+ <script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
22
+ <script src='lib/marked.js' type='text/javascript'></script>
23
+ <script src='lib/swagger-oauth.js' type='text/javascript'></script>
24
+
25
+ <!-- Some basic translations -->
26
+ <!-- <script src='lang/translator.js' type='text/javascript'></script> -->
27
+ <!-- <script src='lang/ru.js' type='text/javascript'></script> -->
28
+ <!-- <script src='lang/en.js' type='text/javascript'></script> -->
29
+
30
+ <script type="text/javascript">
31
+ $(function () {
32
+ var url = window.location.search.match(/url=([^&]+)/);
33
+ if (url && url.length > 1) {
34
+ url = decodeURIComponent(url[1]);
35
+ } else {
36
+ url = "<%= @discovery_paths.values.first %>";
37
+ }
38
+
39
+ // Pre load translate...
40
+ if(window.SwaggerTranslator) {
41
+ window.SwaggerTranslator.translate();
42
+ }
43
+ window.swaggerUi = new SwaggerUi({
44
+ url: url,
45
+ dom_id: "swagger-ui-container",
46
+ supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
47
+ onComplete: function(swaggerApi, swaggerUi){
48
+ if(typeof initOAuth == "function") {
49
+ initOAuth({
50
+ clientId: "your-client-id",
51
+ clientSecret: "your-client-secret",
52
+ realm: "your-realms",
53
+ appName: "your-app-name",
54
+ scopeSeparator: ","
55
+ });
56
+ }
57
+
58
+ if(window.SwaggerTranslator) {
59
+ window.SwaggerTranslator.translate();
60
+ }
61
+
62
+ $('pre code').each(function(i, e) {
63
+ hljs.highlightBlock(e)
64
+ });
65
+
66
+ addApiKeyAuthorization();
67
+ },
68
+ onFailure: function(data) {
69
+ log("Unable to Load SwaggerUI");
70
+ },
71
+ docExpansion: "list",
72
+ apisSorter: "alpha",
73
+ showRequestHeaders: false
74
+ });
75
+
76
+ function addApiKeyAuthorization(){
77
+ var key = encodeURIComponent($('#input_apiKey')[0].value);
78
+ if(key && key.trim() != "") {
79
+ var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("api_key", key, "query");
80
+ window.swaggerUi.api.clientAuthorizations.add("api_key", apiKeyAuth);
81
+ log("added key " + key);
82
+ }
83
+ }
84
+
85
+ $('#input_apiKey').change(addApiKeyAuthorization);
86
+
87
+ // if you have an apiKey you would like to pre-populate on the page for demonstration purposes...
88
+ /*
89
+ var apiKey = "myApiKeyXXXX123456789";
90
+ $('#input_apiKey').val(apiKey);
91
+ */
92
+
93
+ window.swaggerUi.load();
94
+
95
+ function log() {
96
+ if ('console' in window) {
97
+ console.log.apply(console, arguments);
98
+ }
99
+ }
100
+ });
101
+ </script>
102
+ </head>
103
+
104
+ <body class="swagger-section">
105
+ <div id='header'>
106
+ <div class="swagger-ui-wrap">
107
+ <a id="logo" href="http://swagger.io">swagger</a>
108
+ <form id='api_selector'>
109
+ <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text" disabled="disabled"/></div>
110
+ <div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
111
+ <div class='input'>
112
+ <select id="select_version">
113
+ <% @discovery_paths.each do |name, path| %>
114
+ <option value="<%= path %>"><%= name %></option>
115
+ <% end %>
116
+ </select>
117
+ <script type="text/javascript">
118
+ $('#select_version').change(function () {
119
+ $('#input_baseUrl').val($(this).val());
120
+ window.swaggerUi.headerView.showCustom();
121
+ });
122
+ </script>
123
+ <style>
124
+ #select_version {
125
+ border: none;
126
+ -moz-border-radius: 4px;
127
+ -webkit-border-radius: 4px;
128
+ -o-border-radius: 4px;
129
+ -ms-border-radius: 4px;
130
+ -khtml-border-radius: 4px;
131
+ border-radius: 4px;
132
+ color: white;
133
+ background-color: #547f00;
134
+ font-size: 0.9em;
135
+ }
136
+ </style>
137
+ </div>
138
+ </form>
139
+ </div>
140
+ </div>
141
+
142
+ <div id="message-bar" class="swagger-ui-wrap" data-sw-translate>&nbsp;</div>
143
+ <div id="swagger-ui-container" class="swagger-ui-wrap"></div>
144
+ </body>
145
+ </html>
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Adds default files required to use swagger_rails
3
+
4
+ Example:
5
+ rails generate swagger_rails:install
6
+
7
+ This will create:
8
+ config/swagger/v1/swagger.json
9
+ config/initializers/swagger_rails.rb
@@ -0,0 +1,20 @@
1
+ require 'rails/generators'
2
+
3
+ module SwaggerRails
4
+
5
+ class InstallGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../templates', __FILE__)
7
+
8
+ def add_swagger_dir
9
+ empty_directory('config/swagger/v1')
10
+ end
11
+
12
+ def add_initializer
13
+ template('swagger_rails.rb', 'config/initializers/swagger_rails.rb')
14
+ end
15
+
16
+ def add_routes
17
+ route("mount SwaggerRails::Engine => '/api-docs'")
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,45 @@
1
+ {
2
+ "swagger": "2.0",
3
+ "info": {
4
+ "version": "0.0.0",
5
+ "title": "[Enter a description for your API here]",
6
+ "description": "The docs below are powered by the default swagger.json that gets installed with swagger_rails. You'll need to update it to describe your API. See here for the complete swagger spec - https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md"
7
+ },
8
+ "paths": {
9
+ "/a/sample/resource": {
10
+ "post": {
11
+ "tags": [
12
+ "a/sample/resource"
13
+ ],
14
+ "description": "Create a new sample resource",
15
+ "parameters": [
16
+ {
17
+ "name": "body",
18
+ "in": "body",
19
+ "schema": {
20
+ "$ref": "#/definitions/CreateSampleResource"
21
+ }
22
+ }
23
+ ],
24
+ "responses": {
25
+ "200": {
26
+ "description": "Ok"
27
+ }
28
+ }
29
+ }
30
+ }
31
+ },
32
+ "definitions": {
33
+ "CreateSampleResource": {
34
+ "properties": {
35
+ "name": {
36
+ "type": "string"
37
+ },
38
+ "date_time": {
39
+ "type": "string",
40
+ "format": "date-time"
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,13 @@
1
+ SwaggerRails.configure do |c|
2
+
3
+ # Define your swagger documents and provide global metadata
4
+ # Describe actual operations in your spec/test files
5
+ c.swagger_doc 'v1/swagger.json' do
6
+ {
7
+ info: {
8
+ title: 'API V1',
9
+ version: 'v1'
10
+ }
11
+ }
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require 'swagger_rails/middleware/swagger_docs'
2
+ require 'swagger_rails/middleware/swagger_ui'
3
+
4
+ module SwaggerRails
5
+ class Engine < ::Rails::Engine
6
+ isolate_namespace SwaggerRails
7
+
8
+ initializer 'swagger_rails.initialize' do |app|
9
+ middleware.use SwaggerDocs, File.join(app.root, 'config', 'swagger')
10
+ middleware.use SwaggerUi, "#{root}/bower_components/swagger-ui/dist"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,4 @@
1
+ module SwaggerRails
2
+ class SwaggerDocs < ActionDispatch::Static
3
+ end
4
+ end
@@ -0,0 +1,14 @@
1
+ module SwaggerRails
2
+ class SwaggerUi < ActionDispatch::Static
3
+ IGNORE_PATHS = [ '', '/', '/index.html' ]
4
+
5
+ def call(env)
6
+ # Serve index.html via swagger_ui_controller
7
+ if IGNORE_PATHS.include?(env['PATH_INFO'])
8
+ @app.call(env)
9
+ else
10
+ super(env)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,63 @@
1
+ require 'swagger_rails/test_visitor'
2
+
3
+ module SwaggerRails
4
+ module RSpec
5
+ module DSL
6
+
7
+ def path(path_template, &block)
8
+ metadata = {
9
+ path_template: path_template
10
+ }
11
+ describe(path_template, metadata, &block)
12
+ end
13
+
14
+ def operation(http_verb, summary=nil, &block)
15
+ metadata = {
16
+ http_verb: http_verb,
17
+ summary: summary,
18
+ parameters: []
19
+ }
20
+ describe(http_verb, metadata, &block)
21
+ end
22
+
23
+ [ :get, :post, :patch, :put, :delete, :head ].each do |http_verb|
24
+ define_method(http_verb) do |summary=nil, &block|
25
+ operation(http_verb, summary, &block)
26
+ end
27
+ end
28
+
29
+ def consumes(*mime_types)
30
+ metadata[:consumes] = mime_types
31
+ end
32
+
33
+ def produces(*mime_types)
34
+ metadata[:produces] = mime_types
35
+ end
36
+
37
+ def parameter(name, attributes={})
38
+ metadata[:parameters] << { name: name.to_s }.merge(attributes)
39
+ end
40
+
41
+ def response(code, description, &block)
42
+ metadata = {
43
+ response_code: code,
44
+ response: {
45
+ description: description
46
+ }
47
+ }
48
+ context(description, metadata, &block)
49
+ end
50
+
51
+ def run_test!
52
+ before do |example|
53
+ SwaggerRails::TestVisitor.instance.submit_request!(self, example.metadata)
54
+ end
55
+
56
+ it "returns a #{metadata[:response_code]} status" do |example|
57
+ SwaggerRails::TestVisitor.instance.assert_response!(self, example.metadata)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+
@@ -0,0 +1,61 @@
1
+ require 'rspec/core/formatters/base_text_formatter'
2
+ require 'rails_helper'
3
+
4
+ module SwaggerRails
5
+ module RSpec
6
+
7
+ class Formatter
8
+ ::RSpec::Core::Formatters.register self,
9
+ :example_group_finished,
10
+ :stop
11
+
12
+ def initialize(output)
13
+ @output = output
14
+ @swagger_docs = SwaggerRails.swagger_docs
15
+
16
+ @output.puts 'Generating Swagger Docs ...'
17
+ end
18
+
19
+ def example_group_finished(notification)
20
+ metadata = notification.group.metadata
21
+ return unless metadata.has_key?(:response_code)
22
+
23
+ swagger_data = swagger_data_from(metadata)
24
+ swagger_doc = @swagger_docs[metadata[:docs_path]] || @swagger_docs.values.first
25
+ swagger_doc.deep_merge!(swagger_data)
26
+ end
27
+
28
+ def stop(notification)
29
+ @swagger_docs.each do |path, doc|
30
+ file_path = File.join(Rails.root, 'config/swagger', path)
31
+
32
+ File.open(file_path, 'w') do |file|
33
+ file.write(JSON.pretty_generate(doc))
34
+ end
35
+ end
36
+
37
+ @output.puts 'Swagger Doc generated'
38
+ end
39
+
40
+ private
41
+
42
+ def swagger_data_from(metadata)
43
+ {
44
+ paths: {
45
+ metadata[:path_template] => {
46
+ metadata[:http_verb] => operation_from(metadata)
47
+ }
48
+ }
49
+ }
50
+ end
51
+
52
+ def operation_from(metadata)
53
+ metadata.slice(:summary, :consumes, :produces, :parameters).tap do |operation|
54
+ operation[:responses] = {
55
+ metadata[:response_code] => metadata[:response]
56
+ }
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,59 @@
1
+ require 'singleton'
2
+
3
+ module SwaggerRails
4
+ class TestVisitor
5
+ include Singleton
6
+
7
+ def submit_request!(test, metadata)
8
+ params_data = params_data_for(test, metadata[:parameters])
9
+
10
+ path = build_path(metadata[:path_template], params_data)
11
+ body_or_params = build_body_or_params(params_data)
12
+ headers = build_headers(params_data, metadata[:consumes], metadata[:produces])
13
+
14
+ test.send(metadata[:http_verb], path, body_or_params, headers)
15
+ end
16
+
17
+ def assert_response!(test, metadata)
18
+ test.assert_response(metadata[:response_code].to_i)
19
+ end
20
+
21
+ private
22
+
23
+ def params_data_for(test, parameters)
24
+ parameters.map do |parameter|
25
+ parameter
26
+ .slice(:name, :in)
27
+ .merge(value: test.send(parameter[:name].to_s.underscore))
28
+ end
29
+ end
30
+
31
+ def build_path(path_template, params_data)
32
+ path_params_data = params_data.select { |p| p[:in] == :path }
33
+
34
+ path_template.dup.tap do |path|
35
+ path_params_data.each do |param_data|
36
+ path.sub!("\{#{param_data[:name]}\}", param_data[:value].to_s)
37
+ end
38
+ end
39
+ end
40
+
41
+ def build_body_or_params(params_data)
42
+ body_params_data = params_data.select { |p| p[:in] == :body }
43
+ return body_params_data.first[:value].to_json if body_params_data.any?
44
+
45
+ query_params_data = params_data.select { |p| p[:in] == :query }
46
+ Hash[query_params_data.map { |p| [ p[:name], p[:value] ] }]
47
+ end
48
+
49
+ def build_headers(params_data, consumes, produces)
50
+ header_params_data = params_data.select { |p| p[:in] == :header }
51
+ headers = Hash[header_params_data.map { |p| [ p[:name], p[:value] ] }]
52
+
53
+ headers['ACCEPT'] = produces.join(';') if produces.present?
54
+ headers['CONTENT_TYPE'] = consumes.join(';') if consumes.present?
55
+
56
+ return headers
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,3 @@
1
+ module SwaggerRails
2
+ VERSION = "1.0.0-beta"
3
+ end
@@ -0,0 +1,24 @@
1
+ require "swagger_rails/engine"
2
+
3
+ module SwaggerRails
4
+
5
+ def self.configure
6
+ yield self
7
+ end
8
+
9
+ class << self
10
+ @@swagger_docs = {}
11
+
12
+ def swagger_doc(path, &block)
13
+ @@swagger_docs[path] = block
14
+ end
15
+
16
+ def swagger_docs
17
+ Hash[
18
+ @@swagger_docs.map do |path, factory|
19
+ [ path, factory.call.merge(swagger: '2.0') ]
20
+ end
21
+ ]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,12 @@
1
+ # desc "Explaining what the task does"
2
+ # task :swagger_rails do
3
+ # # Task goes here
4
+ # end
5
+
6
+ require 'rspec/core/rake_task'
7
+
8
+ desc 'Generate Swagger JSON files from integration specs'
9
+ RSpec::Core::RakeTask.new('swaggerize') do |t|
10
+ t.pattern = 'spec/integration/**/*_spec.rb'
11
+ t.rspec_opts = [ '--format SwaggerRails::RSpec::Formatter', '--dry-run' ]
12
+ end
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: swagger_rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.pre.beta
5
+ platform: ruby
6
+ authors:
7
+ - domaindrivendev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-04-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec-rails
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ description: Use the provided DSL to accurately test and describe API operations in
48
+ your spec files. Then, you can easily generate corresponding swagger.json files
49
+ and serve them up with an embedded version of swagger-ui. This means you can complement
50
+ your API with a slick discovery UI to assist consumers with their integration efforts.
51
+ Best of all, it requires minimal coding and maintenance, allowing you to focus on
52
+ building an awesome API!
53
+ email:
54
+ - domaindrivendev@gmail.com
55
+ executables: []
56
+ extensions: []
57
+ extra_rdoc_files: []
58
+ files:
59
+ - MIT-LICENSE
60
+ - README.rdoc
61
+ - Rakefile
62
+ - app/controllers/swagger_rails/application_controller.rb
63
+ - app/controllers/swagger_rails/swagger_ui_controller.rb
64
+ - app/helpers/swagger_rails/application_helper.rb
65
+ - app/views/swagger_rails/swagger_ui/index.html.erb
66
+ - bower_components/swagger-ui/dist/css/print.css
67
+ - bower_components/swagger-ui/dist/css/reset.css
68
+ - bower_components/swagger-ui/dist/css/screen.css
69
+ - bower_components/swagger-ui/dist/css/style.css
70
+ - bower_components/swagger-ui/dist/css/typography.css
71
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.eot
72
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.svg
73
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.ttf
74
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.woff
75
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-700.woff2
76
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.eot
77
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.svg
78
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.ttf
79
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.woff
80
+ - bower_components/swagger-ui/dist/fonts/droid-sans-v6-latin-regular.woff2
81
+ - bower_components/swagger-ui/dist/images/explorer_icons.png
82
+ - bower_components/swagger-ui/dist/images/favicon-16x16.png
83
+ - bower_components/swagger-ui/dist/images/favicon-32x32.png
84
+ - bower_components/swagger-ui/dist/images/favicon.ico
85
+ - bower_components/swagger-ui/dist/images/logo_small.png
86
+ - bower_components/swagger-ui/dist/images/pet_store_api.png
87
+ - bower_components/swagger-ui/dist/images/throbber.gif
88
+ - bower_components/swagger-ui/dist/images/wordnik_api.png
89
+ - bower_components/swagger-ui/dist/index.html
90
+ - bower_components/swagger-ui/dist/lang/en.js
91
+ - bower_components/swagger-ui/dist/lang/es.js
92
+ - bower_components/swagger-ui/dist/lang/pt.js
93
+ - bower_components/swagger-ui/dist/lang/ru.js
94
+ - bower_components/swagger-ui/dist/lang/translator.js
95
+ - bower_components/swagger-ui/dist/lib/backbone-min.js
96
+ - bower_components/swagger-ui/dist/lib/handlebars-2.0.0.js
97
+ - bower_components/swagger-ui/dist/lib/highlight.7.3.pack.js
98
+ - bower_components/swagger-ui/dist/lib/jquery-1.8.0.min.js
99
+ - bower_components/swagger-ui/dist/lib/jquery.ba-bbq.min.js
100
+ - bower_components/swagger-ui/dist/lib/jquery.slideto.min.js
101
+ - bower_components/swagger-ui/dist/lib/jquery.wiggle.min.js
102
+ - bower_components/swagger-ui/dist/lib/marked.js
103
+ - bower_components/swagger-ui/dist/lib/swagger-oauth.js
104
+ - bower_components/swagger-ui/dist/lib/underscore-min.js
105
+ - bower_components/swagger-ui/dist/lib/underscore-min.map
106
+ - bower_components/swagger-ui/dist/o2c.html
107
+ - bower_components/swagger-ui/dist/swagger-ui.js
108
+ - bower_components/swagger-ui/dist/swagger-ui.min.js
109
+ - config/routes.rb
110
+ - lib/generators/swagger_rails/custom_ui/USAGE
111
+ - lib/generators/swagger_rails/custom_ui/custom_ui_generator.rb
112
+ - lib/generators/swagger_rails/custom_ui/files/index.html.erb
113
+ - lib/generators/swagger_rails/install/USAGE
114
+ - lib/generators/swagger_rails/install/install_generator.rb
115
+ - lib/generators/swagger_rails/install/templates/swagger.json
116
+ - lib/generators/swagger_rails/install/templates/swagger_rails.rb
117
+ - lib/swagger_rails.rb
118
+ - lib/swagger_rails/engine.rb
119
+ - lib/swagger_rails/middleware/swagger_docs.rb
120
+ - lib/swagger_rails/middleware/swagger_ui.rb
121
+ - lib/swagger_rails/rspec/dsl.rb
122
+ - lib/swagger_rails/rspec/formatter.rb
123
+ - lib/swagger_rails/test_visitor.rb
124
+ - lib/swagger_rails/version.rb
125
+ - lib/tasks/swagger_rails_tasks.rake
126
+ homepage: https://github.com/domaindrivendev/swagger_rails
127
+ licenses:
128
+ - MIT
129
+ metadata: {}
130
+ post_install_message:
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">"
142
+ - !ruby/object:Gem::Version
143
+ version: 1.3.1
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 2.4.8
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: Leverage your api/integration test specs to generate swagger descriptions
150
+ for Rails-based API's
151
+ test_files: []
152
+ has_rdoc: