swagger_ui_engine_2 0.2.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.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +28 -0
  3. data/Rakefile +8 -0
  4. data/app/assets/config/swagger_ui_engine_2/manifest.js +3 -0
  5. data/app/assets/images/swagger_ui_engine_2/favicon-16x16.png +0 -0
  6. data/app/assets/images/swagger_ui_engine_2/favicon-32x32.png +0 -0
  7. data/app/assets/javascripts/swagger_ui_engine_2/application.js +1 -0
  8. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-bundle.js +3 -0
  9. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-bundle.js.map +1 -0
  10. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle-core.js +2 -0
  11. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle-core.js.map +1 -0
  12. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle.js +3 -0
  13. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle.js.map +1 -0
  14. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-standalone-preset.js +3 -0
  15. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui-standalone-preset.js.map +1 -0
  16. data/app/assets/javascripts/swagger_ui_engine_2/swagger-ui.js +2 -0
  17. data/app/assets/stylesheets/swagger_ui_engine_2/application.css +35 -0
  18. data/app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.css +4 -0
  19. data/app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.css.map +1 -0
  20. data/app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.js +2 -0
  21. data/app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.js.map +1 -0
  22. data/app/controllers/swagger_ui_engine2/application_controller.rb +20 -0
  23. data/app/controllers/swagger_ui_engine2/swagger_docs_controller.rb +25 -0
  24. data/app/helpers/swagger_ui_engine_2/application_helper.rb +4 -0
  25. data/app/helpers/swagger_ui_engine_2/auth_config_parser.rb +19 -0
  26. data/app/helpers/swagger_ui_engine_2/config_parser.rb +26 -0
  27. data/app/views/layouts/swagger_ui_engine2/swagger.html.erb +17 -0
  28. data/app/views/swagger_ui_engine2/swagger_docs/index.html.erb +36 -0
  29. data/config/routes.rb +3 -0
  30. data/lib/swagger_ui_engine_2/configuration.rb +24 -0
  31. data/lib/swagger_ui_engine_2/defaults.rb +10 -0
  32. data/lib/swagger_ui_engine_2/engine.rb +5 -0
  33. data/lib/swagger_ui_engine_2/version.rb +3 -0
  34. data/lib/swagger_ui_engine_2.rb +19 -0
  35. data/lib/tasks/swaggerui_tasks.rake +4 -0
  36. metadata +104 -0
@@ -0,0 +1,20 @@
1
+ module SwaggerUiEngine2
2
+ class ApplicationController < ActionController::Base
3
+ include SwaggerUiEngine2::AuthConfigParser
4
+
5
+ protect_from_forgery with: :exception
6
+ layout false
7
+
8
+ before_action :authenticate_admin
9
+
10
+ protected
11
+
12
+ def authenticate_admin
13
+ return unless basic_authentication_enabled?
14
+
15
+ authenticate_or_request_with_http_basic do |username, password|
16
+ username == admin_username && password == admin_password
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,25 @@
1
+ module SwaggerUiEngine2
2
+ class SwaggerDocsController < ApplicationController
3
+ include SwaggerUiEngine2::ConfigParser
4
+
5
+ layout 'layouts/swagger_ui_engine2/swagger'
6
+
7
+ before_action :set_configs
8
+
9
+ def index
10
+ @swagger_url = @swagger_url[params[:id].to_sym] unless single_doc_url?
11
+ end
12
+
13
+ private
14
+
15
+ def set_configs
16
+ SwaggerUiEngine2::DEFAULTS.keys.each do |key|
17
+ instance_variable_set("@#{key}", self.send("set_#{key}"))
18
+ end
19
+ end
20
+
21
+ def single_doc_url?
22
+ @swagger_url.is_a?(String)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,4 @@
1
+ module SwaggerUiEngine2
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,19 @@
1
+ module SwaggerUiEngine2
2
+ module AuthConfigParser
3
+ def admin_username
4
+ configuration.admin_username
5
+ end
6
+
7
+ def admin_password
8
+ configuration.admin_password
9
+ end
10
+
11
+ def basic_authentication_enabled?
12
+ admin_username && admin_password
13
+ end
14
+
15
+ def configuration
16
+ SwaggerUiEngine2.configuration
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ module SwaggerUiEngine2
2
+ module ConfigParser
3
+ SwaggerUiEngine2::DEFAULTS.each do |default|
4
+ next if default.first.to_s.eql?('validator_url')
5
+
6
+ define_method("set_#{default.first}") do
7
+ # set_swagger_url set_doc_expansion
8
+ # set_json_editor set_model_rendering
9
+ # set_request_headers
10
+ configuration.send("#{default.first}") || default.last
11
+ end
12
+ end
13
+
14
+ def set_validator_url
15
+ validator_enabled? ? SwaggerUiEngine2::DEFAULTS[:validator_url] : 'null'
16
+ end
17
+
18
+ def validator_enabled?
19
+ configuration.validator_enabled || false
20
+ end
21
+
22
+ def configuration
23
+ SwaggerUiEngine2.configuration
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Swagger</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag "swagger_ui_engine_2/application", media: "all" %>
9
+ <%= javascript_include_tag "swagger_ui_engine_2/swagger-ui-bundle.js" %>
10
+ <%= javascript_include_tag "swagger_ui_engine_2/swagger-ui-standalone-preset.js" %>
11
+
12
+ <%= yield :head %>
13
+ </head>
14
+ <body>
15
+ <%= yield %>
16
+ </body>
17
+ </html>
@@ -0,0 +1,36 @@
1
+ <% content_for(:head) do %>
2
+ <script type="text/javascript">
3
+ window.onload = function() {
4
+ var url = window.location.search.match(/url=([^&]+)/);
5
+ if (url && url.length > 1) {
6
+ url = decodeURIComponent(url[1]);
7
+ } else {
8
+ url = "<%= @swagger_url %>";
9
+ }
10
+
11
+ // Begin Swagger UI call region
12
+ const ui = SwaggerUIBundle({
13
+ url: url,
14
+ dom_id: '#swagger-ui',
15
+ deepLinking: true,
16
+ docExpansion: "<%= @doc_expansion %>",
17
+ jsonEditor: "<%= @json_editor %>",
18
+ defaultModelRendering: "<%= @model_rendering %>",
19
+ showRequestHeaders: "<%= @request_headers %>",
20
+ presets: [
21
+ SwaggerUIBundle.presets.apis,
22
+ SwaggerUIStandalonePreset
23
+ ],
24
+ plugins: [
25
+ SwaggerUIBundle.plugins.DownloadUrl
26
+ ],
27
+ layout: "StandaloneLayout"
28
+ });
29
+ // End Swagger UI call region
30
+
31
+ window.ui = ui;
32
+ };
33
+ </script>
34
+ <% end %>
35
+
36
+ <div id="swagger-ui"></div>
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ SwaggerUiEngine2::Engine.routes.draw do
2
+ root to: 'swagger_docs#index'
3
+ end
@@ -0,0 +1,24 @@
1
+ module SwaggerUiEngine2
2
+ class Configuration
3
+ # Configurable options
4
+ OPTIONS = %i(
5
+ admin_username
6
+ admin_password
7
+ doc_expansion
8
+ json_editor
9
+ model_rendering
10
+ oauth_client_id
11
+ oauth_client_secret
12
+ oauth_realm
13
+ oauth_app_name
14
+ oauth_scope_separator
15
+ oauth_query_string_params
16
+ request_headers
17
+ swagger_url
18
+ translator_enabled
19
+ validator_enabled
20
+ ).freeze
21
+
22
+ attr_accessor(*OPTIONS)
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ module SwaggerUiEngine2
2
+ DEFAULTS = {
3
+ swagger_url: 'http://petstore.swagger.io/v2/swagger.json',
4
+ doc_expansion: 'none',
5
+ json_editor: false,
6
+ model_rendering: 'schema',
7
+ request_headers: false,
8
+ validator_url: '//online.swagger.io/validator'
9
+ }.freeze
10
+ end
@@ -0,0 +1,5 @@
1
+ module SwaggerUiEngine2
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace SwaggerUiEngine2
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module SwaggerUiEngine2
2
+ VERSION = "0.2.0"
3
+ end
@@ -0,0 +1,19 @@
1
+ require "sprockets/railtie"
2
+ require "swagger_ui_engine_2/version"
3
+ require "swagger_ui_engine_2/engine"
4
+ require "swagger_ui_engine_2/configuration"
5
+ require "swagger_ui_engine_2/defaults"
6
+
7
+ module SwaggerUiEngine2
8
+ class << self
9
+ delegate(*Configuration::OPTIONS, to: :configuration)
10
+
11
+ def configuration
12
+ @configuration ||= Configuration.new
13
+ end
14
+
15
+ def configure
16
+ yield configuration
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :swaggerui do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: swagger_ui_engine_2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Israel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-10 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: 6.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 6.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sprockets-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Description of SwaggerUiEngine2.
42
+ email:
43
+ - israelb.aceves@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - README.md
49
+ - Rakefile
50
+ - app/assets/config/swagger_ui_engine_2/manifest.js
51
+ - app/assets/images/swagger_ui_engine_2/favicon-16x16.png
52
+ - app/assets/images/swagger_ui_engine_2/favicon-32x32.png
53
+ - app/assets/javascripts/swagger_ui_engine_2/application.js
54
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-bundle.js
55
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-bundle.js.map
56
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle-core.js
57
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle-core.js.map
58
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle.js
59
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-es-bundle.js.map
60
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-standalone-preset.js
61
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui-standalone-preset.js.map
62
+ - app/assets/javascripts/swagger_ui_engine_2/swagger-ui.js
63
+ - app/assets/stylesheets/swagger_ui_engine_2/application.css
64
+ - app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.css
65
+ - app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.css.map
66
+ - app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.js
67
+ - app/assets/stylesheets/swagger_ui_engine_2/swagger-ui.js.map
68
+ - app/controllers/swagger_ui_engine2/application_controller.rb
69
+ - app/controllers/swagger_ui_engine2/swagger_docs_controller.rb
70
+ - app/helpers/swagger_ui_engine_2/application_helper.rb
71
+ - app/helpers/swagger_ui_engine_2/auth_config_parser.rb
72
+ - app/helpers/swagger_ui_engine_2/config_parser.rb
73
+ - app/views/layouts/swagger_ui_engine2/swagger.html.erb
74
+ - app/views/swagger_ui_engine2/swagger_docs/index.html.erb
75
+ - config/routes.rb
76
+ - lib/swagger_ui_engine_2.rb
77
+ - lib/swagger_ui_engine_2/configuration.rb
78
+ - lib/swagger_ui_engine_2/defaults.rb
79
+ - lib/swagger_ui_engine_2/engine.rb
80
+ - lib/swagger_ui_engine_2/version.rb
81
+ - lib/tasks/swaggerui_tasks.rake
82
+ homepage:
83
+ licenses: []
84
+ metadata: {}
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ requirements: []
100
+ rubygems_version: 3.3.8
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: Summary of SwaggerUiEngine2.
104
+ test_files: []