diff --git a/.gitignore b/.gitignore index a96771f..d7a22a8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ **/*/*.gem **/*/*.sqlite3 **/*/public/assets +**/*/node_modules *.swp -.idea +Gemfile.lock diff --git a/.ruby-version b/.ruby-version index 276cbf9..2714f53 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.3.0 +2.6.4 diff --git a/.travis.yml b/.travis.yml index 1e052a7..304c64c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,69 @@ -nguage: ruby +language: ruby + +dist: xenial +services: + - xvfb + rvm: - - 2.2.5 + - 2.6.4 + env: - - "RAILS_VERSION=3.2.22" - - "RAILS_VERSION=4.2.0" - - "RAILS_VERSION=5.0.0" - - "RAILS_VERSION=5.1.1" -cache: bundler -install: bundle update -before_script: - - "export DISPLAY=:99.0" - - "sh -e /etc/init.d/xvfb start" - - sleep 3 # give xvfb some time to start + - RAILS_VERSION=6.0.0 + - RAILS_VERSION=5.2.0 + +addons: + apt: + packages: + - libqtwebkit-dev + - libqtwebkit4 + +cache: + directories: + - /home/travis/.rvm/gems/ruby-2.6.4 + +install: ./ci/build.sh + script: ./ci/test.sh + +jobs: + include: + - stage: publish components + script: 'cd rswag-api' + deploy: + gemspec: rswag-api.gemspec + provider: rubygems + api_key: $RUBYGEMS_API_KEY + on: + branch: master + tags: true + + - stage: publish components + script: 'cd rswag-specs' + deploy: + gemspec: rswag-specs.gemspec + provider: rubygems + api_key: $RUBYGEMS_API_KEY + on: + branch: master + tags: true + + - stage: publish components + script: 'cd rswag-ui' + deploy: + gemspec: rswag-ui.gemspec + provider: rubygems + api_key: $RUBYGEMS_API_KEY + skip_cleanup: true + on: + branch: master + tags: true + + - stage: publish rswag + script: 'cd rswag' + deploy: + gemspec: rswag.gemspec + provider: rubygems + api_key: $RUBYGEMS_API_KEY + on: + branch: master + tags: true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7f30a85 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,27 @@ +# rswag +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] +### Added +### Changed +- Update swagger-ui to 3.18.2 +### Deprecated +### Removed +### Fixed +### Security + +## [2.0.6] - 2019-10-03 +### Added +- Support for Rails 6 [#228](https://github.com/rswag/rswag/pull/228) +- Support for Windows paths [#176](https://github.com/rswag/rswag/pull/176) +### Changed +- Show response body when error code is not expected [#117](https://github.com/rswag/rswag/pull/177) +### Deprecated +### Removed +### Fixed +### Security + +## [2.0.5] - 2018-07-10 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..c22b355 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,59 @@ +# Contributing + +## Fork, then clone the repo: +``` +git clone git@github.com:rswag/rswag.git +cd rswag +``` + +## Build +Set up your machine: +``` +./ci/build.sh +``` +Or manually +``` +bundle +cd test-app +bundle exec rake db:setup +cd - + +cd rswag-ui +npm install +cd - +``` + +## Test +Make sure the tests pass: +``` +./ci/test.sh +``` +or manually +``` +cd test-app +bundle exec rspec +``` + +Make your change. Add tests for your change. Make the tests pass: + +``` +bundle exec rspec +``` + +Push to your fork and [submit a Pull Request][pr]. + +[pr]: https://github.com/rswag/rswag/compare/ + +## Release +(for maintainers) + +Update the changelog.md, putting the new version number in and moving the Unreleased marker. + +Merge the changes into master you wish to release. + +Add and push a new git tag, annotated tags preferred: +``` +git tag -s 2.0.6 -m 'v2.0.6' +``` + +Travis will detect the tag and release all gems with that tag version number. diff --git a/Gemfile b/Gemfile index ab4d32b..c9d5c4e 100644 --- a/Gemfile +++ b/Gemfile @@ -9,28 +9,33 @@ gem 'rails', "#{rails_version}" case rails_version.split('.').first when '3' gem 'strong_parameters' -when '4', '5' +when '4', '5', '6' gem 'responders' end -gem 'sqlite3' +case rails_version.split('.').first +when '3', '4', '5' + gem 'sqlite3', '~> 1.3.6' +when '6' + gem 'sqlite3', '~> 1.4.1' +end -gem 'rswag-specs', path: './rswag-specs' gem 'rswag-api', path: './rswag-api' gem 'rswag-ui', path: './rswag-ui' -# To use debugger -# gem 'debugger' - group :test do gem 'test-unit' gem 'rspec-rails' gem 'generator_spec' gem 'capybara' gem 'capybara-webkit' + gem 'rswag-specs', path: './rswag-specs' end -# -#group :assets do -# gem 'uglifier' -# gem 'therubyracer' -#end + +group :assets do + gem 'uglifier' + gem 'therubyracer' +end + +gem 'byebug' +gem 'puma' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 23039f2..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,187 +0,0 @@ -PATH - remote: rswag-api - specs: - rswag-api (1.3.0) - railties (>= 3.1) - -PATH - remote: rswag-specs - specs: - rswag-specs (1.3.0) - activesupport (>= 3.1) - json-schema (~> 2.2) - railties (>= 3.1) - -PATH - remote: rswag-ui - specs: - rswag-ui (1.3.0) - actionpack (>= 3.1) - railties (>= 3.1) - -GEM - remote: https://rubygems.org/ - specs: - actioncable (5.1.2) - actionpack (= 5.1.2) - nio4r (~> 2.0) - websocket-driver (~> 0.6.1) - actionmailer (5.1.2) - actionpack (= 5.1.2) - actionview (= 5.1.2) - activejob (= 5.1.2) - mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 2.0) - actionpack (5.1.2) - actionview (= 5.1.2) - activesupport (= 5.1.2) - rack (~> 2.0) - rack-test (~> 0.6.3) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.1.2) - activesupport (= 5.1.2) - builder (~> 3.1) - erubi (~> 1.4) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (5.1.2) - activesupport (= 5.1.2) - globalid (>= 0.3.6) - activemodel (5.1.2) - activesupport (= 5.1.2) - activerecord (5.1.2) - activemodel (= 5.1.2) - activesupport (= 5.1.2) - arel (~> 8.0) - activesupport (5.1.2) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (~> 0.7) - minitest (~> 5.1) - tzinfo (~> 1.1) - addressable (2.5.1) - public_suffix (~> 2.0, >= 2.0.2) - arel (8.0.0) - builder (3.2.3) - capybara (2.13.0) - addressable - mime-types (>= 1.16) - nokogiri (>= 1.3.3) - rack (>= 1.0.0) - rack-test (>= 0.5.4) - xpath (~> 2.0) - capybara-webkit (1.14.0) - capybara (>= 2.3.0, < 2.14.0) - json - concurrent-ruby (1.0.5) - diff-lcs (1.3) - erubi (1.6.1) - generator_spec (0.9.4) - activesupport (>= 3.0.0) - railties (>= 3.0.0) - globalid (0.4.0) - activesupport (>= 4.2.0) - i18n (0.8.4) - json (2.1.0) - json-schema (2.8.0) - addressable (>= 2.4) - loofah (2.0.3) - nokogiri (>= 1.5.9) - mail (2.6.6) - mime-types (>= 1.16, < 4) - method_source (0.8.2) - mime-types (3.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2016.0521) - mini_portile2 (2.2.0) - minitest (5.10.2) - nio4r (2.1.0) - nokogiri (1.8.0) - mini_portile2 (~> 2.2.0) - power_assert (1.0.2) - public_suffix (2.0.5) - rack (2.0.3) - rack-test (0.6.3) - rack (>= 1.0) - rails (5.1.2) - actioncable (= 5.1.2) - actionmailer (= 5.1.2) - actionpack (= 5.1.2) - actionview (= 5.1.2) - activejob (= 5.1.2) - activemodel (= 5.1.2) - activerecord (= 5.1.2) - activesupport (= 5.1.2) - bundler (>= 1.3.0, < 2.0) - railties (= 5.1.2) - sprockets-rails (>= 2.0.0) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) - nokogiri (>= 1.6) - rails-html-sanitizer (1.0.3) - loofah (~> 2.0) - railties (5.1.2) - actionpack (= 5.1.2) - activesupport (= 5.1.2) - method_source - rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) - rake (12.0.0) - responders (2.4.0) - actionpack (>= 4.2.0, < 5.3) - railties (>= 4.2.0, < 5.3) - rspec-core (3.6.0) - rspec-support (~> 3.6.0) - rspec-expectations (3.6.0) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.6.0) - rspec-mocks (3.6.0) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.6.0) - rspec-rails (3.6.0) - actionpack (>= 3.0) - activesupport (>= 3.0) - railties (>= 3.0) - rspec-core (~> 3.6.0) - rspec-expectations (~> 3.6.0) - rspec-mocks (~> 3.6.0) - rspec-support (~> 3.6.0) - rspec-support (3.6.0) - sprockets (3.7.1) - concurrent-ruby (~> 1.0) - rack (> 1, < 3) - sprockets-rails (3.2.0) - actionpack (>= 4.0) - activesupport (>= 4.0) - sprockets (>= 3.0.0) - sqlite3 (1.3.13) - test-unit (3.2.5) - power_assert - thor (0.19.4) - thread_safe (0.3.6) - tzinfo (1.2.3) - thread_safe (~> 0.1) - websocket-driver (0.6.5) - websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.2) - xpath (2.1.0) - nokogiri (~> 1.3) - -PLATFORMS - ruby - -DEPENDENCIES - capybara - capybara-webkit - generator_spec - rails (= 5.1.2) - responders - rspec-rails - rswag-api! - rswag-specs! - rswag-ui! - sqlite3 - test-unit - -BUNDLED WITH - 1.14.6 diff --git a/README.md b/README.md index 7e45f4d..3cfff07 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -rswag (formerly swagger_rails) +rswag ========= -[![Build Status](https://travis-ci.org/domaindrivendev/rswag.svg?branch=master)](https://travis-ci.org/domaindrivendev/rswag) +[![Build Status](https://travis-ci.org/rswag/rswag.svg?branch=master)](https://travis-ci.org/rswag/rswag) [Swagger](http://swagger.io) tooling for Rails API's. Generate beautiful API documentation, including a UI to explore and test operations, directly from your rspec integration tests. @@ -10,6 +10,14 @@ And that's not all ... Once you have an API that can describe itself in Swagger, you've opened the treasure chest of Swagger-based tools including a client generator that can be targeted to a wide range of popular platforms. See [swagger-codegen](https://github.com/swagger-api/swagger-codegen) for more details. +## Compatibility ## + +|Rswag Version|Swagger (OpenAPI) Spec.|swagger-ui| +|----------|----------|----------| +|[master](https://github.com/rswag/rswag/tree/master)|2.0|3.18.2| +|[2.0.6](https://github.com/rswag/rswag/tree/2.0.6)|2.0|3.17.3| +|[1.6.0](https://github.com/rswag/rswag/tree/1.6.0)|2.0|2.2.5| + ## Getting Started ## 1. Add this line to your applications _Gemfile_: @@ -18,11 +26,31 @@ Once you have an API that can describe itself in Swagger, you've opened the trea gem 'rswag' ``` + or if you like to avoid loading rspec in other bundler groups. + + ```ruby + # Gemfile + gem 'rswag-api' + gem 'rswag-ui' + + group :test do + gem 'rspec-rails' + gem 'rswag-specs' + end + ``` + 2. Run the install generator ```ruby rails g rswag:install ``` + + Or run the install generators for each package separately if you installed Rswag as separate gems, as indicated above: + + ```ruby + rails g rswag:api:install rswag:ui:install + RAILS_ENV=test rails g rswag:specs:install + ``` 3. Create an integration spec to describe and test your API. @@ -82,6 +110,11 @@ Once you have an API that can describe itself in Swagger, you've opened the trea let(:id) { 'invalid' } run_test! end + + response '406', 'unsupported accept header' do + let(:'Accept') { 'application/foo' } + run_test! + end end end end @@ -169,7 +202,8 @@ RSpec.configure do |config| swagger: '2.0', info: { title: 'API V1', - version: 'v1' + version: 'v1', + description: 'This is the first version of my API' }, basePath: '/api/v1' }, @@ -178,7 +212,8 @@ RSpec.configure do |config| swagger: '2.0', info: { title: 'API V2', - version: 'v2' + version: 'v2', + description: 'This is the second version of my API' }, basePath: '/api/v2' } @@ -186,7 +221,8 @@ RSpec.configure do |config| end ``` -__NOTE__: By default, the paths, operations and responses defined in your spec files will be associated with the first Swagger document in _swagger_helper.rb_. If you're using multiple documents, you'll need to tag the individual specs with their target document name: +#### Supporting multiple versions of API #### +By default, the paths, operations and responses defined in your spec files will be associated with the first Swagger document in _swagger_helper.rb_. If your API has multiple versions, you should be using separate documents to describe each of them. In order to assign a file with a given version of API, you'll need to add the ```swagger_doc``` tag to each spec specifying its target document name: ```ruby # spec/integration/v2/blogs_spec.rb @@ -200,6 +236,25 @@ describe 'Blogs API', swagger_doc: 'v2/swagger.json' do end ``` +#### Formatting the description literals: #### +Swagger supports the Markdown syntax to format strings. This can be especially handy if you were to provide a long description of a given API version or endpoint. Use [this guide](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) for reference. + +__NOTE:__ There is one difference between the official Markdown syntax and Swagger interpretation, namely tables. To create a table like this: + +| Column1 | Collumn2 | +| ------- | -------- | +| cell1 | cell2 | + +you should use the folowing syntax, making sure there are no whitespaces at the start of any of the lines: + +``` + +| Column1 | Collumn2 | +| ------- | -------- | +| cell1 | cell2 | + +``` + ### Specifying/Testing API Security ### Swagger allows for the specification of different security schemes and their applicability to operations in an API. To leverage this in rswag, you define the schemes globally in _swagger_helper.rb_ and then use the "security" attribute at the operation level to specify which schemes, if any, are applicable to that operation. Swagger supports :basic, :apiKey and :oauth2 scheme types. See [the spec](http://swagger.io/specification/#security-definitions-object-109) for more info. @@ -431,7 +486,7 @@ Rswag::Api.configure do |c| end ``` -Note how the filter is passed the rack env for the current request. This provides a lot of flexibilty. For example, you can assign the "host" property (as shown) or you could inspect session information or an Authoriation header and remove operations based on user permissions. +Note how the filter is passed the rack env for the current request. This provides a lot of flexibilty. For example, you can assign the "host" property (as shown) or you could inspect session information or an Authorization header and remove operations based on user permissions. ### Enable Swagger Endpoints for swagger-ui ### @@ -467,3 +522,13 @@ rails g rswag:ui:custom ``` This will add a local version that you can modify at _app/views/rswag/ui/home/index.html.erb_ + +### Serve UI Assets Directly from your Web Server + +Rswag ships with an embedded version of the [swagger-ui](https://github.com/swagger-api/swagger-ui), which is a static collection of JavaScript and CSS files. These assets are served by the rswag-ui middleware. However, for optimal performance you may want to serve them directly from your web server (e.g. Apache or NGINX). To do this, you'll need to copy them to the web server root. This is the "public" folder in a typical Rails application. + +``` +bundle exec rake rswag:ui:copy_assets[public/api-docs] +``` + +__NOTE:__: The provided subfolder MUST correspond to the UI mount prefix - "api-docs" by default. diff --git a/ci/build.sh b/ci/build.sh new file mode 100755 index 0000000..78079f1 --- /dev/null +++ b/ci/build.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +ROOT_PATH=$PWD +set -e # abort if anything fails + +echo '####################' +echo 'bundle' +echo '####################' +echo '' + +echo '##### all #####' +bundle install + +echo '####################' +echo 'npm' +echo '####################' +echo '' + +echo '##### rswag-ui #####' +cd $ROOT_PATH/rswag-ui +npm install + +# Cleanup +cd $ROOT_PATH diff --git a/ci/deploy.sh b/ci/deploy.sh deleted file mode 100755 index 5832789..0000000 --- a/ci/deploy.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash - -ROOT_PATH=$PWD -set -e # abort if anything fails - -bundle check || bundle - -echo '####################' -echo 'Build Gems' -echo '####################' -echo '' - -echo '##### rswag-api #####' -cd $ROOT_PATH/rswag-api -gem build rswag-api.gemspec - -echo '##### rswag-specs #####' -cd $ROOT_PATH/rswag-specs -gem build rswag-specs.gemspec - -echo '##### rswag-ui #####' -cd $ROOT_PATH/rswag-ui -gem build rswag-ui.gemspec - -echo '##### rswag #####' -cd $ROOT_PATH/rswag -gem build rswag.gemspec - -echo '####################' -echo 'Push to RubyGems' -echo '####################' -echo '' - -echo 'Type the version no, followed by [ENTER]:' -read version - -echo '##### rswag-api #####' -cd $ROOT_PATH/rswag-api -gem push rswag-api-$version.gem - -echo '##### rswag-specs #####' -cd $ROOT_PATH/rswag-specs -gem push rswag-specs-$version.gem - -echo '##### rswag-ui #####' -cd $ROOT_PATH/rswag-ui -gem push rswag-ui-$version.gem - -echo '##### rswag #####' -cd $ROOT_PATH/rswag -gem push rswag-$version.gem - -# Cleanup -cd $ROOT_PATH - -# Create git tag -git tag v$version -git push origin v$version diff --git a/rswag-api/lib/rswag/api.rb b/rswag-api/lib/rswag/api.rb index 553cb15..894072b 100644 --- a/rswag-api/lib/rswag/api.rb +++ b/rswag-api/lib/rswag/api.rb @@ -1,4 +1,3 @@ -require 'rswag/api/version' require 'rswag/api/configuration' require 'rswag/api/engine' diff --git a/rswag-api/lib/rswag/api/version.rb b/rswag-api/lib/rswag/api/version.rb deleted file mode 100644 index 5dc9577..0000000 --- a/rswag-api/lib/rswag/api/version.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Rswag - module Api - VERSION = '1.3.0' - end -end diff --git a/rswag-api/rswag-api.gemspec b/rswag-api/rswag-api.gemspec index 80ec270..3a14bb2 100644 --- a/rswag-api/rswag-api.gemspec +++ b/rswag-api/rswag-api.gemspec @@ -1,12 +1,9 @@ $:.push File.expand_path("../lib", __FILE__) -# Maintain your gem's version: -require 'rswag/api/version' - # Describe your gem and declare its dependencies: Gem::Specification.new do |s| s.name = "rswag-api" - s.version = Rswag::Api::VERSION + s.version = ENV['TRAVIS_TAG'] || '0.0.0' s.authors = ["Richie Morris"] s.email = ["domaindrivendev@gmail.com"] s.homepage = "https://github.com/domaindrivendev/rswag" @@ -16,5 +13,5 @@ Gem::Specification.new do |s| s.files = Dir["{lib}/**/*"] + ["MIT-LICENSE", "Rakefile"] - s.add_dependency 'railties', '>= 3.1' + s.add_dependency 'railties', '>= 3.1', '< 6.1' end diff --git a/rswag-specs/lib/generators/rswag/specs/install/templates/swagger_helper.rb b/rswag-specs/lib/generators/rswag/specs/install/templates/swagger_helper.rb index 366d13e..3855920 100644 --- a/rswag-specs/lib/generators/rswag/specs/install/templates/swagger_helper.rb +++ b/rswag-specs/lib/generators/rswag/specs/install/templates/swagger_helper.rb @@ -3,11 +3,11 @@ require 'rails_helper' RSpec.configure do |config| # Specify a root folder where Swagger JSON files are generated # NOTE: If you're using the rswag-api to serve API descriptions, you'll need - # to ensure that it's confiugred to server Swagger from the same folder - config.swagger_root = Rails.root.to_s + '/swagger' + # to ensure that it's configured to serve Swagger from the same folder + config.swagger_root = Rails.root.join('swagger').to_s # Define one or more Swagger documents and provide global metadata for each one - # When you run the 'rswag:specs:to_swagger' rake task, the complete Swagger will + # When you run the 'rswag:specs:swaggerize' rake task, the complete Swagger will # be generated at the provided relative path under swagger_root # By default, the operations defined in spec files are added to the first # document below. You can override this behavior by adding a swagger_doc tag to the diff --git a/rswag-specs/lib/rswag/specs.rb b/rswag-specs/lib/rswag/specs.rb index 8aeb768..de29ce9 100644 --- a/rswag-specs/lib/rswag/specs.rb +++ b/rswag-specs/lib/rswag/specs.rb @@ -1,5 +1,4 @@ require 'rspec/core' -require 'rswag/specs/version' require 'rswag/specs/example_group_helpers' require 'rswag/specs/example_helpers' require 'rswag/specs/configuration' diff --git a/rswag-specs/lib/rswag/specs/example_group_helpers.rb b/rswag-specs/lib/rswag/specs/example_group_helpers.rb index ed7b20f..4939abb 100644 --- a/rswag-specs/lib/rswag/specs/example_group_helpers.rb +++ b/rswag-specs/lib/rswag/specs/example_group_helpers.rb @@ -2,12 +2,12 @@ module Rswag module Specs module ExampleGroupHelpers - def path(template, &block) - api_metadata = { path_item: { template: template } } - describe(template, api_metadata, &block) + def path(template, metadata={}, &block) + metadata[:path_item] = { template: template } + describe(template, metadata, &block) end - [ :get, :post, :patch, :put, :delete, :head ].each do |verb| + [ :get, :post, :patch, :put, :delete, :head, :options, :trace ].each do |verb| define_method(verb) do |summary, &block| api_metadata = { operation: { verb: verb, summary: summary } } describe(verb, api_metadata, &block) @@ -36,7 +36,9 @@ module Rswag end def parameter(attributes) - attributes[:required] = true if attributes[:in].to_sym == :path + if attributes[:in] && attributes[:in].to_sym == :path + attributes[:required] = true + end if metadata.has_key?(:operation) metadata[:operation][:parameters] ||= [] @@ -47,9 +49,9 @@ module Rswag end end - def response(code, description, &block) - api_metadata = { response: { code: code, description: description } } - context(description, api_metadata, &block) + def response(code, description, metadata={}, &block) + metadata[:response] = { code: code, description: description } + context(description, metadata, &block) end def schema(value) @@ -77,7 +79,8 @@ module Rswag end it "returns a #{metadata[:response][:code]} response" do - assert_response_matches_metadata(example.metadata, &block) + assert_response_matches_metadata(metadata) + block.call(response) if block_given? end else before do |example| @@ -86,6 +89,7 @@ module Rswag it "returns a #{metadata[:response][:code]} response" do |example| assert_response_matches_metadata(example.metadata, &block) + example.instance_exec(response, &block) if block_given? end end end diff --git a/rswag-specs/lib/rswag/specs/example_helpers.rb b/rswag-specs/lib/rswag/specs/example_helpers.rb index d669c28..d8ff128 100644 --- a/rswag-specs/lib/rswag/specs/example_helpers.rb +++ b/rswag-specs/lib/rswag/specs/example_helpers.rb @@ -5,55 +5,30 @@ module Rswag module Specs module ExampleHelpers - def submit_request(api_metadata) - global_metadata = rswag_config.get_swagger_doc(api_metadata[:swagger_doc]) - factory = RequestFactory.new(api_metadata, global_metadata) + def submit_request(metadata) + request = RequestFactory.new.build_request(metadata, self) if RAILS_VERSION < 5 send( - api_metadata[:operation][:verb], - factory.build_fullpath(self), - factory.build_body(self), - rackify_headers(factory.build_headers(self)) # Rails test infrastructure requires Rack headers + request[:verb], + request[:path], + request[:payload], + request[:headers] ) else send( - api_metadata[:operation][:verb], - factory.build_fullpath(self), + request[:verb], + request[:path], { - params: factory.build_body(self), - headers: factory.build_headers(self) + params: request[:payload], + headers: request[:headers] } ) end end - def assert_response_matches_metadata(api_metadata, &block) - global_metadata = rswag_config.get_swagger_doc(api_metadata[:swagger_doc]) - validator = ResponseValidator.new(api_metadata, global_metadata) - validator.validate!(response, &block) - end - - private - - def rackify_headers(headers) - name_value_pairs = headers.map do |name, value| - [ - case name - when 'Accept' then 'HTTP_ACCEPT' - when 'Content-Type' then 'CONTENT_TYPE' - when 'Authorization' then 'HTTP_AUTHORIZATION' - else name - end, - value - ] - end - - Hash[ name_value_pairs ] - end - - def rswag_config - ::Rswag::Specs.config + def assert_response_matches_metadata(metadata) + ResponseValidator.new.validate!(metadata, response) end end end diff --git a/rswag-specs/lib/rswag/specs/request_factory.rb b/rswag-specs/lib/rswag/specs/request_factory.rb index 2d81aab..7106015 100644 --- a/rswag-specs/lib/rswag/specs/request_factory.rb +++ b/rswag-specs/lib/rswag/specs/request_factory.rb @@ -1,98 +1,82 @@ require 'active_support/core_ext/hash/slice' +require 'active_support/core_ext/hash/conversions' require 'json' module Rswag module Specs class RequestFactory - def initialize(api_metadata, global_metadata) - @api_metadata = api_metadata - @global_metadata = global_metadata + def initialize(config = ::Rswag::Specs.config) + @config = config end - def build_fullpath(example) - @api_metadata[:path_item][:template].dup.tap do |t| - t.prepend(@global_metadata[:basePath] || '') - parameters_in(:path).each { |p| t.gsub!("{#{p[:name]}}", example.send(p[:name]).to_s) } - t.concat(build_query_string(example)) + def build_request(metadata, example) + swagger_doc = @config.get_swagger_doc(metadata[:swagger_doc]) + parameters = expand_parameters(metadata, swagger_doc, example) + + {}.tap do |request| + add_verb(request, metadata) + add_path(request, metadata, swagger_doc, parameters, example) + add_headers(request, metadata, swagger_doc, parameters, example) + add_payload(request, parameters, example) end end - def build_query_string(example) - query_string = parameters_in(:query) - .map { |p| build_query_string_part(p, example.send(p[:name])) } - .join('&') - - query_string.empty? ? '' : "?#{query_string}" - end - - def build_body(example) - body_parameter = parameters_in(:body).first - body_parameter.nil? ? '' : example.send(body_parameter[:name]).to_json - end - - def build_headers(example) - name_value_pairs = parameters_in(:header).map do |param| - [ - param[:name], - example.send(param[:name]).to_s - ] - end - - # Add MIME type headers based on produces/consumes metadata - produces = @api_metadata[:operation][:produces] || @global_metadata[:produces] - consumes = @api_metadata[:operation][:consumes] || @global_metadata[:consumes] - name_value_pairs << [ 'Accept', produces.join(';') ] unless produces.nil? - name_value_pairs << [ 'Content-Type', consumes.join(';') ] unless consumes.nil? - - Hash[ name_value_pairs ] - end - private - def parameters_in(location) - path_item_params = @api_metadata[:path_item][:parameters] || [] - operation_params = @api_metadata[:operation][:parameters] || [] - applicable_params = operation_params - .concat(path_item_params) - .uniq { |p| p[:name] } # operation params should override path_item params + def expand_parameters(metadata, swagger_doc, example) + operation_params = metadata[:operation][:parameters] || [] + path_item_params = metadata[:path_item][:parameters] || [] + security_params = derive_security_params(metadata, swagger_doc) - applicable_params - .map { |p| p['$ref'] ? resolve_parameter(p['$ref']) : p } # resolve any references - .concat(security_parameters) - .select { |p| p[:in] == location } + # NOTE: Use of + instead of concat to avoid mutation of the metadata object + (operation_params + path_item_params + security_params) + .map { |p| p['$ref'] ? resolve_parameter(p['$ref'], swagger_doc) : p } + .uniq { |p| p[:name] } + .reject { |p| p[:required] == false && !example.respond_to?(p[:name]) } end - def resolve_parameter(ref) - defined_params = @global_metadata[:parameters] - key = ref.sub('#/parameters/', '') - raise "Referenced parameter '#{ref}' must be defined" unless defined_params && defined_params[key] - defined_params[key] + def derive_security_params(metadata, swagger_doc) + requirements = metadata[:operation][:security] || swagger_doc[:security] || [] + scheme_names = requirements.flat_map { |r| r.keys } + schemes = (swagger_doc[:securityDefinitions] || {}).slice(*scheme_names).values + + schemes.map do |scheme| + param = (scheme[:type] == :apiKey) ? scheme.slice(:name, :in) : { name: 'Authorization', in: :header } + param.merge(type: :string, required: requirements.one?) + end end - def security_parameters - applicable_security_schemes.map do |scheme| - if scheme[:type] == :apiKey - { name: scheme[:name], type: :string, in: scheme[:in] } - else - { name: 'Authorization', type: :string, in: :header } # use auth header for basic & oauth2 + def resolve_parameter(ref, swagger_doc) + key = ref.sub('#/parameters/', '').to_sym + definitions = swagger_doc[:parameters] + raise "Referenced parameter '#{ref}' must be defined" unless definitions && definitions[key] + definitions[key] + end + + def add_verb(request, metadata) + request[:verb] = metadata[:operation][:verb] + end + + def add_path(request, metadata, swagger_doc, parameters, example) + template = (swagger_doc[:basePath] || '') + metadata[:path_item][:template] + + request[:path] = template.tap do |template| + parameters.select { |p| p[:in] == :path }.each do |p| + template.gsub!("{#{p[:name]}}", example.send(p[:name]).to_s) + end + + parameters.select { |p| p[:in] == :query }.each_with_index do |p, i| + template.concat(i == 0 ? '?' : '&') + template.concat(build_query_string_part(p, example.send(p[:name]))) end end end - def applicable_security_schemes - # First figure out the security requirement applicable to the operation - requirements = @api_metadata[:operation][:security] || @global_metadata[:security] - scheme_names = requirements ? requirements.map { |r| r.keys.first } : [] - - # Then obtain the scheme definitions for those requirements - (@global_metadata[:securityDefinitions] || {}).slice(*scheme_names).values - end - def build_query_string_part(param, value) - return "#{param[:name]}=#{value.to_s}" unless param[:type].to_sym == :array - name = param[:name] + return "#{name}=#{value.to_s}" unless param[:type].to_sym == :array + case param[:collectionFormat] when :ssv "#{name}=#{value.join(' ')}" @@ -106,6 +90,68 @@ module Rswag "#{name}=#{value.join(',')}" # csv is default end end + + def add_headers(request, metadata, swagger_doc, parameters, example) + tuples = parameters + .select { |p| p[:in] == :header } + .map { |p| [ p[:name], example.send(p[:name]).to_s ] } + + # Accept header + produces = metadata[:operation][:produces] || swagger_doc[:produces] + if produces + accept = example.respond_to?(:'Accept') ? example.send(:'Accept') : produces.first + tuples << [ 'Accept', accept ] + end + + # Content-Type header + consumes = metadata[:operation][:consumes] || swagger_doc[:consumes] + if consumes + content_type = example.respond_to?(:'Content-Type') ? example.send(:'Content-Type') : consumes.first + tuples << [ 'Content-Type', content_type ] + end + + # Rails test infrastructure requires rackified headers + rackified_tuples = tuples.map do |pair| + [ + case pair[0] + when 'Accept' then 'HTTP_ACCEPT' + when 'Content-Type' then 'CONTENT_TYPE' + when 'Authorization' then 'HTTP_AUTHORIZATION' + else pair[0] + end, + pair[1] + ] + end + + request[:headers] = Hash[ rackified_tuples ] + end + + def add_payload(request, parameters, example) + content_type = request[:headers]['CONTENT_TYPE'] + return if content_type.nil? + + if [ 'application/x-www-form-urlencoded', 'multipart/form-data' ].include?(content_type) + request[:payload] = build_form_payload(parameters, example) + else + request[:payload] = build_json_payload(parameters, example) + end + end + + def build_form_payload(parameters, example) + # See http://seejohncode.com/2012/04/29/quick-tip-testing-multipart-uploads-with-rspec/ + # Rather that serializing with the appropriate encoding (e.g. multipart/form-data), + # Rails test infrastructure allows us to send the values directly as a hash + # PROS: simple to implement, CONS: serialization/deserialization is bypassed in test + tuples = parameters + .select { |p| p[:in] == :formData } + .map { |p| [ p[:name], example.send(p[:name]) ] } + Hash[ tuples ] + end + + def build_json_payload(parameters, example) + body_param = parameters.select { |p| p[:in] == :body }.first + body_param ? example.send(body_param[:name]).to_json : nil + end end end end diff --git a/rswag-specs/lib/rswag/specs/response_validator.rb b/rswag-specs/lib/rswag/specs/response_validator.rb index 7194953..c3e363f 100644 --- a/rswag-specs/lib/rswag/specs/response_validator.rb +++ b/rswag-specs/lib/rswag/specs/response_validator.rb @@ -7,47 +7,45 @@ module Rswag module Specs class ResponseValidator - def initialize(api_metadata, global_metadata) - @api_metadata = api_metadata - @global_metadata = global_metadata + def initialize(config = ::Rswag::Specs.config) + @config = config end - def validate!(response, &block) - validate_code!(response.code) - validate_headers!(response.headers) - validate_body!(response.body, &block) - block.call(response) if block_given? + def validate!(metadata, response) + swagger_doc = @config.get_swagger_doc(metadata[:swagger_doc]) + + validate_code!(metadata, response) + validate_headers!(metadata, response.headers) + validate_body!(metadata, swagger_doc, response.body) end private - def validate_code!(code) - if code.to_s != @api_metadata[:response][:code].to_s - raise UnexpectedResponse, "Expected response code '#{code}' to match '#{@api_metadata[:response][:code]}'" + def validate_code!(metadata, response) + expected = metadata[:response][:code].to_s + if response.code != expected + raise UnexpectedResponse, + "Expected response code '#{response.code}' to match '#{expected}'\n" \ + "Response body: #{response.body}" end end - def validate_headers!(headers) - header_schema = @api_metadata[:response][:headers] - return if header_schema.nil? - - header_schema.keys.each do |header_name| - raise UnexpectedResponse, "Expected response header #{header_name} to be present" if headers[header_name.to_s].nil? + def validate_headers!(metadata, headers) + expected = (metadata[:response][:headers] || {}).keys + expected.each do |name| + raise UnexpectedResponse, "Expected response header #{name} to be present" if headers[name.to_s].nil? end end - def validate_body!(body) - response_schema = @api_metadata[:response][:schema] + def validate_body!(metadata, swagger_doc, body) + response_schema = metadata[:response][:schema] return if response_schema.nil? - begin - validation_schema = response_schema - .merge('$schema' => 'http://tempuri.org/rswag/specs/extended_schema') - .merge(@global_metadata.slice(:definitions)) - JSON::Validator.validate!(validation_schema, body) - rescue JSON::Schema::ValidationError => ex - raise UnexpectedResponse, "Expected response body to match schema: #{ex.message}" - end + validation_schema = response_schema + .merge('$schema' => 'http://tempuri.org/rswag/specs/extended_schema') + .merge(swagger_doc.slice(:definitions)) + errors = JSON::Validator.fully_validate(validation_schema, body) + raise UnexpectedResponse, "Expected response body to match schema: #{errors[0]}" if errors.any? end end diff --git a/rswag-specs/lib/rswag/specs/version.rb b/rswag-specs/lib/rswag/specs/version.rb deleted file mode 100644 index 2f136b2..0000000 --- a/rswag-specs/lib/rswag/specs/version.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Rswag - module Specs - VERSION = '1.3.0' - end -end diff --git a/rswag-specs/rswag-specs.gemspec b/rswag-specs/rswag-specs.gemspec index 7c21c7f..e3ddaf3 100644 --- a/rswag-specs/rswag-specs.gemspec +++ b/rswag-specs/rswag-specs.gemspec @@ -1,12 +1,9 @@ $:.push File.expand_path("../lib", __FILE__) -# Maintain your gem's version: -require 'rswag/specs/version' - # Describe your gem and declare its dependencies: Gem::Specification.new do |s| s.name = "rswag-specs" - s.version = Rswag::Specs::VERSION + s.version = ENV['TRAVIS_TAG'] || '0.0.0' s.authors = ["Richie Morris"] s.email = ["domaindrivendev@gmail.com"] s.homepage = "https://github.com/domaindrivendev/rswag" @@ -16,7 +13,7 @@ Gem::Specification.new do |s| s.files = Dir["{lib}/**/*"] + ["MIT-LICENSE", "Rakefile" ] - s.add_dependency 'activesupport', '>= 3.1' - s.add_dependency 'railties', '>= 3.1' + s.add_dependency 'activesupport', '>= 3.1', '< 6.1' + s.add_dependency 'railties', '>= 3.1', '< 6.1' s.add_dependency 'json-schema', '~> 2.2' end diff --git a/rswag-specs/spec/rswag/specs/example_group_helpers_spec.rb b/rswag-specs/spec/rswag/specs/example_group_helpers_spec.rb index 96d08b0..c870bfc 100644 --- a/rswag-specs/spec/rswag/specs/example_group_helpers_spec.rb +++ b/rswag-specs/spec/rswag/specs/example_group_helpers_spec.rb @@ -24,7 +24,7 @@ module Rswag end end - describe '#get|post|patch|put|delete|head(verb, summary)' do + describe '#get|post|patch|put|delete|head|options|trace(verb, summary)' do before { subject.post('Creates a blog') } it "delegates to 'describe' with 'operation' metadata" do @@ -120,6 +120,15 @@ module Rswag ) end end + + context "when 'in' parameter key is not defined" do + before { subject.parameter(name: :id) } + let(:api_metadata) { { operation: {} } } + + it "does not require the 'in' parameter key" do + expect(api_metadata[:operation][:parameters]).to match([ name: :id ]) + end + end end describe '#response(code, description)' do diff --git a/rswag-specs/spec/rswag/specs/example_helpers_spec.rb b/rswag-specs/spec/rswag/specs/example_helpers_spec.rb index 6b389d4..3b22af4 100644 --- a/rswag-specs/spec/rswag/specs/example_helpers_spec.rb +++ b/rswag-specs/spec/rswag/specs/example_helpers_spec.rb @@ -7,19 +7,30 @@ module Rswag subject { double('example') } before do - subject.extend ExampleHelpers - # Mock out some infrastructure - stub_const('Rails::VERSION::MAJOR', 3) - rswag_config = double('rswag_config') - allow(rswag_config).to receive(:get_swagger_doc).and_return(global_metadata) - allow(subject).to receive(:rswag_config).and_return(rswag_config) + subject.extend(ExampleHelpers) + allow(Rswag::Specs).to receive(:config).and_return(config) + allow(config).to receive(:get_swagger_doc).and_return(swagger_doc) + stub_const('Rswag::Specs::RAILS_VERSION', 3) end - let(:api_metadata) do + let(:config) { double('config') } + let(:swagger_doc) do + { + securityDefinitions: { + api_key: { + type: :apiKey, + name: 'api_key', + in: :query + } + } + } + end + let(:metadata) do { path_item: { template: '/blogs/{blog_id}/comments/{id}' }, operation: { verb: :put, summary: 'Updates a blog', + consumes: [ 'application/json' ], parameters: [ { name: :blog_id, in: :path, type: 'integer' }, { name: 'id', in: :path, type: 'integer' }, @@ -32,19 +43,8 @@ module Rswag } } end - let(:global_metadata) do - { - securityDefinitions: { - api_key: { - type: :apiKey, - name: 'api_key', - in: :query - } - } - } - end - describe '#submit_request(api_metadata)' do + describe '#submit_request(metadata)' do before do allow(subject).to receive(:blog_id).and_return(1) allow(subject).to receive(:id).and_return(2) @@ -52,14 +52,14 @@ module Rswag allow(subject).to receive(:api_key).and_return('fookey') allow(subject).to receive(:blog).and_return(text: 'Some comment') allow(subject).to receive(:put) - subject.submit_request(api_metadata) + subject.submit_request(metadata) end it "submits a request built from metadata and 'let' values" do expect(subject).to have_received(:put).with( '/blogs/1/comments/2?q1=foo&api_key=fookey', "{\"text\":\"Some comment\"}", - {} + { 'CONTENT_TYPE' => 'application/json' } ) end end diff --git a/rswag-specs/spec/rswag/specs/request_factory_spec.rb b/rswag-specs/spec/rswag/specs/request_factory_spec.rb index 3a0e430..f883952 100644 --- a/rswag-specs/spec/rswag/specs/request_factory_spec.rb +++ b/rswag-specs/spec/rswag/specs/request_factory_spec.rb @@ -4,249 +4,335 @@ module Rswag module Specs describe RequestFactory do - subject { RequestFactory.new(api_metadata, global_metadata) } + subject { RequestFactory.new(config) } before do - allow(example).to receive(:blog_id).and_return(1) - allow(example).to receive(:id).and_return('2') + allow(config).to receive(:get_swagger_doc).and_return(swagger_doc) end - let(:api_metadata) do + let(:config) { double('config') } + let(:swagger_doc) { {} } + let(:example) { double('example') } + let(:metadata) do { - path_item: { template: '/blogs/{blog_id}/comments/{id}' }, - operation: { - verb: :put, - summary: 'Updates a blog', - parameters: [ - { name: :blog_id, in: :path, type: 'integer' }, - { name: 'id', in: :path, type: 'integer' } - ] - } + path_item: { template: '/blogs' }, + operation: { verb: :get } } end - let(:global_metadata) { {} } - let(:example) { double('example') } - describe '#build_fullpath(example)' do - let(:path) { subject.build_fullpath(example) } + describe '#build_request(metadata, example)' do + let(:request) { subject.build_request(metadata, example) } - context 'always' do - it "builds a path using metadata and example values" do - expect(path).to eq('/blogs/1/comments/2') + it 'builds request hash for given example' do + expect(request[:verb]).to eq(:get) + expect(request[:path]).to eq('/blogs') + end + + context "'path' parameters" do + before do + metadata[:path_item][:template] = '/blogs/{blog_id}/comments/{id}' + metadata[:operation][:parameters] = [ + { name: 'blog_id', in: :path, type: :number }, + { name: 'id', in: :path, type: :number } + ] + allow(example).to receive(:blog_id).and_return(1) + allow(example).to receive(:id).and_return(2) + end + + it 'builds the path from example values' do + expect(request[:path]).to eq('/blogs/1/comments/2') end end context "'query' parameters" do before do - api_metadata[:operation][:parameters] << { name: 'q1', in: :query, type: 'string' } - api_metadata[:operation][:parameters] << { name: 'q2', in: :query, type: 'string' } + metadata[:operation][:parameters] = [ + { name: 'q1', in: :query, type: :string }, + { name: 'q2', in: :query, type: :string } + ] allow(example).to receive(:q1).and_return('foo') allow(example).to receive(:q2).and_return('bar') end - it "appends a query string using metadata and example values" do - expect(path).to eq('/blogs/1/comments/2?q1=foo&q2=bar') + it "builds the query string from example values" do + expect(request[:path]).to eq('/blogs?q1=foo&q2=bar') end end - context "'query' parameter of type 'array'" do + context "'query' parameters of type 'array'" do before do - api_metadata[:operation][:parameters] << { - name: 'things', - in: :query, - type: :array, - collectionFormat: collectionFormat - } + metadata[:operation][:parameters] = [ + { name: 'things', in: :query, type: :array, collectionFormat: collection_format } + ] allow(example).to receive(:things).and_return([ 'foo', 'bar' ]) end context 'collectionFormat = csv' do - let(:collectionFormat) { :csv } + let(:collection_format) { :csv } it "formats as comma separated values" do - expect(path).to eq('/blogs/1/comments/2?things=foo,bar') + expect(request[:path]).to eq('/blogs?things=foo,bar') end end context 'collectionFormat = ssv' do - let(:collectionFormat) { :ssv } + let(:collection_format) { :ssv } it "formats as space separated values" do - expect(path).to eq('/blogs/1/comments/2?things=foo bar') + expect(request[:path]).to eq('/blogs?things=foo bar') end end context 'collectionFormat = tsv' do - let(:collectionFormat) { :tsv } + let(:collection_format) { :tsv } it "formats as tab separated values" do - expect(path).to eq('/blogs/1/comments/2?things=foo\tbar') + expect(request[:path]).to eq('/blogs?things=foo\tbar') end end context 'collectionFormat = pipes' do - let(:collectionFormat) { :pipes } + let(:collection_format) { :pipes } it "formats as pipe separated values" do - expect(path).to eq('/blogs/1/comments/2?things=foo|bar') + expect(request[:path]).to eq('/blogs?things=foo|bar') end end context 'collectionFormat = multi' do - let(:collectionFormat) { :multi } + let(:collection_format) { :multi } it "formats as multiple parameter instances" do - expect(path).to eq('/blogs/1/comments/2?things=foo&things=bar') + expect(request[:path]).to eq('/blogs?things=foo&things=bar') end end end - context "global definition for 'api_key in query'" do + context "'header' parameters" do before do - global_metadata[:securityDefinitions] = { api_key: { type: :apiKey, name: 'api_key', in: :query } } - allow(example).to receive(:api_key).and_return('fookey') + metadata[:operation][:parameters] = [ { name: 'Api-Key', in: :header, type: :string } ] + allow(example).to receive(:'Api-Key').and_return('foobar') end - context 'global requirement' do - before { global_metadata[:security] = [ { api_key: [] } ] } + it 'adds names and example values to headers' do + expect(request[:headers]).to eq({ 'Api-Key' => 'foobar' }) + end + end - it "appends the api_key using metadata and example value" do - expect(path).to eq('/blogs/1/comments/2?api_key=fookey') + context 'optional parameters not provided' do + before do + metadata[:operation][:parameters] = [ + { name: 'q1', in: :query, type: :string, required: false }, + { name: 'Api-Key', in: :header, type: :string, required: false } + ] + end + + it 'builds request hash without them' do + expect(request[:path]).to eq('/blogs') + expect(request[:headers]).to eq({}) + end + end + + context "consumes content" do + before do + metadata[:operation][:consumes] = [ 'application/json', 'application/xml' ] + end + + context "no 'Content-Type' provided" do + it "sets 'CONTENT_TYPE' header to first in list" do + expect(request[:headers]).to eq('CONTENT_TYPE' => 'application/json') end end - context 'operation-specific requirement' do - before { api_metadata[:operation][:security] = [ { api_key: [] } ] } - - it "appends the api_key using metadata and example value" do - expect(path).to eq('/blogs/1/comments/2?api_key=fookey') + context "explicit 'Content-Type' provided" do + before do + allow(example).to receive(:'Content-Type').and_return('application/xml') end + + it "sets 'CONTENT_TYPE' header to example value" do + expect(request[:headers]).to eq('CONTENT_TYPE' => 'application/xml') + end + end + + context 'JSON payload' do + before do + metadata[:operation][:parameters] = [ { name: 'comment', in: :body, schema: { type: 'object' } } ] + allow(example).to receive(:comment).and_return(text: 'Some comment') + end + + it "serializes first 'body' parameter to JSON string" do + expect(request[:payload]).to eq("{\"text\":\"Some comment\"}") + end + end + + context 'form payload' do + before do + metadata[:operation][:consumes] = [ 'multipart/form-data' ] + metadata[:operation][:parameters] = [ + { name: 'f1', in: :formData, type: :string }, + { name: 'f2', in: :formData, type: :string } + ] + allow(example).to receive(:f1).and_return('foo blah') + allow(example).to receive(:f2).and_return('bar blah') + end + + it 'sets payload to hash of names and example values' do + expect(request[:payload]).to eq( + 'f1' => 'foo blah', + 'f2' => 'bar blah' + ) + end + end + end + + context 'produces content' do + before do + metadata[:operation][:produces] = [ 'application/json', 'application/xml' ] + end + + context "no 'Accept' value provided" do + it "sets 'HTTP_ACCEPT' header to first in list" do + expect(request[:headers]).to eq('HTTP_ACCEPT' => 'application/json') + end + end + + context "explicit 'Accept' value provided" do + before do + allow(example).to receive(:'Accept').and_return('application/xml') + end + + it "sets 'HTTP_ACCEPT' header to example value" do + expect(request[:headers]).to eq('HTTP_ACCEPT' => 'application/xml') + end + end + end + + context 'basic auth' do + before do + swagger_doc[:securityDefinitions] = { basic: { type: :basic } } + metadata[:operation][:security] = [ basic: [] ] + allow(example).to receive(:Authorization).and_return('Basic foobar') + end + + it "sets 'HTTP_AUTHORIZATION' header to example value" do + expect(request[:headers]).to eq('HTTP_AUTHORIZATION' => 'Basic foobar') + end + end + + context 'apiKey' do + before do + swagger_doc[:securityDefinitions] = { apiKey: { type: :apiKey, name: 'api_key', in: key_location } } + metadata[:operation][:security] = [ apiKey: [] ] + allow(example).to receive(:api_key).and_return('foobar') + end + + context 'in query' do + let(:key_location) { :query } + + it 'adds name and example value to the query string' do + expect(request[:path]).to eq('/blogs?api_key=foobar') + end + end + + context 'in header' do + let(:key_location) { :header } + + it 'adds name and example value to the headers' do + expect(request[:headers]).to eq('api_key' => 'foobar') + end + end + + context 'in header with auth param already added' do + let(:key_location) { :header } + before do + metadata[:operation][:parameters] = [ + { name: 'q1', in: :query, type: :string }, + { name: 'api_key', in: :header, type: :string } + ] + allow(example).to receive(:q1).and_return('foo') + allow(example).to receive(:api_key).and_return('foobar') + end + + it 'adds authorization parameter only once' do + expect(request[:headers]).to eq('api_key' => 'foobar') + expect(metadata[:operation][:parameters].size).to eq 2 + end + end + end + + context 'oauth2' do + before do + swagger_doc[:securityDefinitions] = { oauth2: { type: :oauth2, scopes: [ 'read:blogs' ] } } + metadata[:operation][:security] = [ oauth2: [ 'read:blogs' ] ] + allow(example).to receive(:Authorization).and_return('Bearer foobar') + end + + it "sets 'HTTP_AUTHORIZATION' header to example value" do + expect(request[:headers]).to eq('HTTP_AUTHORIZATION' => 'Bearer foobar') + end + end + + context 'paired security requirements' do + before do + swagger_doc[:securityDefinitions] = { + basic: { type: :basic }, + api_key: { type: :apiKey, name: 'api_key', in: :query } + } + metadata[:operation][:security] = [ { basic: [], api_key: [] } ] + allow(example).to receive(:Authorization).and_return('Basic foobar') + allow(example).to receive(:api_key).and_return('foobar') + end + + it "sets both params to example values" do + expect(request[:headers]).to eq('HTTP_AUTHORIZATION' => 'Basic foobar') + expect(request[:path]).to eq('/blogs?api_key=foobar') + end + end + + context "path-level parameters" do + before do + metadata[:operation][:parameters] = [ { name: 'q1', in: :query, type: :string } ] + metadata[:path_item][:parameters] = [ { name: 'q2', in: :query, type: :string } ] + allow(example).to receive(:q1).and_return('foo') + allow(example).to receive(:q2).and_return('bar') + end + + it "populates operation and path level parameters " do + expect(request[:path]).to eq('/blogs?q1=foo&q2=bar') + end + end + + context 'referenced parameters' do + before do + swagger_doc[:parameters] = { q1: { name: 'q1', in: :query, type: :string } } + metadata[:operation][:parameters] = [ { '$ref' => '#/parameters/q1' } ] + allow(example).to receive(:q1).and_return('foo') + end + + it 'uses the referenced metadata to build the request' do + expect(request[:path]).to eq('/blogs?q1=foo') end end context 'global basePath' do - before { global_metadata[:basePath] = '/foobar' } + before { swagger_doc[:basePath] = '/api' } - it 'prepends the basePath' do - expect(path).to eq('/foobar/blogs/1/comments/2') + it 'prepends to the path' do + expect(request[:path]).to eq('/api/blogs') end end - context "defined at the 'path' level" do + context "global consumes" do + before { swagger_doc[:consumes] = [ 'application/xml' ] } + + it "defaults 'CONTENT_TYPE' to global value(s)" do + expect(request[:headers]).to eq('CONTENT_TYPE' => 'application/xml') + end + end + + context "global security requirements" do before do - api_metadata[:path_item][:parameters] = [ { name: :blog_id, in: :path } ] - api_metadata[:operation][:parameters] = [ { name: :id, in: :path } ] + swagger_doc[:securityDefinitions] = { apiKey: { type: :apiKey, name: 'api_key', in: :query } } + swagger_doc[:security] = [ apiKey: [] ] + allow(example).to receive(:api_key).and_return('foobar') end - it "builds path from parameters defined at path and operation levels" do - expect(path).to eq('/blogs/1/comments/2') - end - end - end - - describe '#build_body(example)' do - let(:body) { subject.build_body(example) } - - context "no 'body' parameter" do - it "returns ''" do - expect(body).to eq('') - end - end - - context "'body' parameter" do - before do - api_metadata[:operation][:parameters] << { name: 'comment', in: :body, schema: { type: 'object' } } - allow(example).to receive(:comment).and_return(text: 'Some comment') - end - - it 'returns the example value as a json string' do - expect(body).to eq("{\"text\":\"Some comment\"}") - end - end - - context "referenced 'body' parameter" do - before do - api_metadata[:operation][:parameters] << { '$ref' => '#/parameters/comment' } - global_metadata[:parameters] = { - 'comment' => { name: 'comment', in: :body, schema: { type: 'object' } } - } - allow(example).to receive(:comment).and_return(text: 'Some comment') - end - - it 'returns the example value as a json string' do - expect(body).to eq("{\"text\":\"Some comment\"}") - end - end - end - - describe '#build_headers' do - let(:headers) { subject.build_headers(example) } - - context "no 'header' params" do - it 'returns an empty hash' do - expect(headers).to eq({}) - end - end - - context "'header' params" do - before do - api_metadata[:operation][:parameters] << { name: 'Api-Key', in: :header, type: 'string' } - allow(example).to receive(:'Api-Key').and_return('foobar') - end - - it 'returns a hash of names with example values' do - expect(headers).to eq({ 'Api-Key' => 'foobar' }) - end - end - - context "global definition for 'basic auth'" do - before do - global_metadata[:securityDefinitions] = { basic_auth: { type: :basic} } - allow(example).to receive(:'Authorization').and_return('Basic foobar') - end - - context 'global requirement' do - before { global_metadata[:security] = [ { basic_auth: [] } ] } - - it "includes a corresponding Authorization header" do - expect(headers).to match( - 'Authorization' => 'Basic foobar' - ) - end - end - - context 'operation-specific requirement' do - before { api_metadata[:operation][:security] = [ { basic_auth: [] } ] } - - it "includes a corresponding Authorization header" do - expect(headers).to match( - 'Authorization' => 'Basic foobar' - ) - end - end - end - - context 'consumes & produces' do - before do - api_metadata[:operation][:consumes] = [ 'application/json', 'application/xml' ] - api_metadata[:operation][:produces] = [ 'application/json', 'application/xml' ] - end - - it "includes corresponding 'Accept' & 'Content-Type' headers" do - expect(headers).to match( - 'Accept' => 'application/json;application/xml', - 'Content-Type' => 'application/json;application/xml' - ) - end - end - - context 'global consumes & produces' do - let(:global_metadata) do - { - consumes: [ 'application/json', 'application/xml' ], - produces: [ 'application/json', 'application/xml' ] - } - end - - it "includes corresponding 'Accept' & 'Content-Type' headers" do - expect(headers).to match( - 'Accept' => 'application/json;application/xml', - 'Content-Type' => 'application/json;application/xml' - ) + it 'applieds the scheme by default' do + expect(request[:path]).to eq('/blogs?api_key=foobar') end end end diff --git a/rswag-specs/spec/rswag/specs/response_validator_spec.rb b/rswag-specs/spec/rswag/specs/response_validator_spec.rb index cb95996..1d05427 100644 --- a/rswag-specs/spec/rswag/specs/response_validator_spec.rb +++ b/rswag-specs/spec/rswag/specs/response_validator_spec.rb @@ -4,121 +4,71 @@ module Rswag module Specs describe ResponseValidator do - subject { ResponseValidator.new(api_metadata, global_metadata) } + subject { ResponseValidator.new(config) } - let(:api_metadata) { { response: { code: 200 } } } - let(:global_metadata) { {} } - - describe '#validate!(response)' do - let(:call) { subject.validate!(response) } - - context "no 'schema' provided" do - context 'response code matches' do - let(:response) { OpenStruct.new(code: 200, body: '') } - it { expect { call }.to_not raise_error } - end - - context 'response code does not match' do - let(:response) { OpenStruct.new(code: 201, body: '') } - it { expect { call }.to raise_error UnexpectedResponse } - end - end - - context "'schema' provided" do - before do - api_metadata[:response][:schema] = { - type: 'object', - properties: { text: { type: 'string' } }, - required: ['text'] + before do + allow(config).to receive(:get_swagger_doc).and_return(swagger_doc) + end + let(:config) { double('config') } + let(:swagger_doc) { {} } + let(:example) { double('example') } + let(:metadata) do + { + response: { + code: 200, + headers: { 'X-Rate-Limit-Limit' => { type: :integer } }, + schema: { + type: :object, + properties: { text: { type: :string } }, + required: [ 'text' ] } - end + } + } + end - context 'response code & body matches' do - let(:response) { OpenStruct.new(code: 200, body: "{\"text\":\"Some comment\"}") } - it { expect { call }.to_not raise_error } - end - - context 'response code matches & body does not' do - let(:response) { OpenStruct.new(code: 200, body: "{\"foo\":\"Some comment\"}") } - it { expect { call }.to raise_error UnexpectedResponse } - end - - context "'block' provided" do - let(:call) do - subject.validate!(response) do |response| - data = JSON.parse(response.body) - expect(data['text']).to eq('Some comment') - end - end - - context 'the block validation passes' do - let(:response) { OpenStruct.new(code: 200, body: "{\"text\":\"Some comment\"}") } - it { expect { call }.to_not raise_error } - end - - context 'the block validation fails' do - let(:response) { OpenStruct.new(code: 200, body: "{\"text\":\"Some other comment\"}") } - it { expect { call }.to raise_error(RSpec::Expectations::ExpectationNotMetError) } - end - end + describe '#validate!(metadata, response)' do + let(:call) { subject.validate!(metadata, response) } + let(:response) do + OpenStruct.new( + code: '200', + headers: { 'X-Rate-Limit-Limit' => '10' }, + body: "{\"text\":\"Some comment\"}" + ) end - context "referenced 'schema' provided" do + context "response matches metadata" do + it { expect { call }.to_not raise_error } + end + + context "response code differs from metadata" do + before { response.code = '400' } + it { expect { call }.to raise_error /Expected response code/ } + end + + context "response headers differ from metadata" do + before { response.headers = {} } + it { expect { call }.to raise_error /Expected response header/ } + end + + context "response body differs from metadata" do + before { response.body = "{\"foo\":\"Some comment\"}" } + it { expect { call }.to raise_error /Expected response body/ } + end + + context 'referenced schemas' do before do - api_metadata[:response][:schema] = { '$ref' => '#/definitions/author' } - global_metadata[:definitions] = { - author: { - type: 'object', - properties: { name: { type: 'string' } }, - required: ['name'] + swagger_doc[:definitions] = { + 'blog' => { + type: :object, + properties: { foo: { type: :string } }, + required: [ 'foo' ] } } + metadata[:response][:schema] = { '$ref' => '#/definitions/blog' } end - context 'response code & body matches' do - let(:response) { OpenStruct.new(code: 200, body: "{\"name\":\"Some name\"}") } - it { expect { call }.to_not raise_error } - end - - context 'response code matches & body does not' do - let(:response) { OpenStruct.new(code: 200, body: "{\"foo\":\"Some name\"}") } - it { expect { call }.to raise_error UnexpectedResponse } - end - end - - context "'headers' provided" do - before do - api_metadata[:response][:headers] = { - 'X-Rate-Limit-Limit' => { - description: 'The number of allowed requests in the current period', - type: 'integer' - }, - 'X-Rate-Limit-Remaining' => { - description: 'The number of remaining requests in the current period', - type: 'integer' - }, - 'X-Rate-Limit-Reset' => { - description: 'The number of seconds left in the current period', - type: 'integer' - } - } - end - - context 'response code & body matches' do - let(:response) { OpenStruct.new(code: 200, body: '{}', headers: { - 'X-Rate-Limit-Limit' => 1, - 'X-Rate-Limit-Remaining' => 1, - 'X-Rate-Limit-Reset' => 1 - }) } - it { expect { call }.to_not raise_error } - end - - context 'response code matches & body does not' do - let(:response) { OpenStruct.new(code: 200, body: '{}', headers: { - 'X-Rate-Limit-Limit' => 1, - 'X-Rate-Limit-Remaining' => 1 - }) } - it { expect { call }.to raise_error UnexpectedResponse } + it 'uses the referenced schema to validate the response body' do + expect { call }.to raise_error /Expected response body/ end end end diff --git a/rswag-ui/app/controllers/rswag/ui/home_controller.rb b/rswag-ui/app/controllers/rswag/ui/home_controller.rb deleted file mode 100644 index f55a945..0000000 --- a/rswag-ui/app/controllers/rswag/ui/home_controller.rb +++ /dev/null @@ -1,11 +0,0 @@ -module Rswag - module Ui - class HomeController < ActionController::Base - - def index - @swagger_endpoints = Rswag::Ui.config.swagger_endpoints - render :index, layout: false - end - end - end -end diff --git a/rswag-ui/app/views/rswag/ui/home/index.html.erb b/rswag-ui/app/views/rswag/ui/home/index.html.erb deleted file mode 100644 index 6e1f943..0000000 --- a/rswag-ui/app/views/rswag/ui/home/index.html.erb +++ /dev/null @@ -1,126 +0,0 @@ - - - - - Swagger UI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
-
- - diff --git a/rswag-ui/config/routes.rb b/rswag-ui/config/routes.rb deleted file mode 100644 index 813a0c1..0000000 --- a/rswag-ui/config/routes.rb +++ /dev/null @@ -1,3 +0,0 @@ -Rswag::Ui::Engine.routes.draw do - root to: 'home#index' -end diff --git a/rswag-ui/lib/generators/rswag/ui/custom/custom_generator.rb b/rswag-ui/lib/generators/rswag/ui/custom/custom_generator.rb index 6d16382..735fc8e 100644 --- a/rswag-ui/lib/generators/rswag/ui/custom/custom_generator.rb +++ b/rswag-ui/lib/generators/rswag/ui/custom/custom_generator.rb @@ -3,10 +3,10 @@ require 'rails/generators' module Rswag module Ui class CustomGenerator < Rails::Generators::Base - source_root File.expand_path('../../../../../../app/views/rswag/ui/home', __FILE__) + source_root File.expand_path('../../../../../../lib/rswag/ui', __FILE__) def add_custom_index - copy_file('index.html.erb', 'app/views/rswag/ui/home/index.html.erb') + copy_file('index.erb', 'app/views/rswag/ui/home/index.html.erb') end end end diff --git a/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb b/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb index 0805940..084a512 100644 --- a/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb +++ b/rswag-ui/lib/generators/rswag/ui/install/templates/rswag-ui.rb @@ -5,5 +5,6 @@ Rswag::Ui.configure do |c| # JSON endpoint and the second is a title that will be displayed in the document selector # NOTE: If you're using rspec-api to expose Swagger files (under swagger_root) as JSON endpoints, # then the list below should correspond to the relative paths for those endpoints + c.swagger_endpoint '/api-docs/v1/swagger.json', 'API V1 Docs' end diff --git a/rswag-ui/lib/rswag/ui.rb b/rswag-ui/lib/rswag/ui.rb index bdbcf25..bf5c810 100644 --- a/rswag-ui/lib/rswag/ui.rb +++ b/rswag-ui/lib/rswag/ui.rb @@ -1,4 +1,3 @@ -require 'rswag/ui/version' require 'rswag/ui/configuration' require 'rswag/ui/engine' diff --git a/rswag-ui/lib/rswag/ui/configuration.rb b/rswag-ui/lib/rswag/ui/configuration.rb index 5b1a518..5f33c2c 100644 --- a/rswag-ui/lib/rswag/ui/configuration.rb +++ b/rswag-ui/lib/rswag/ui/configuration.rb @@ -3,14 +3,32 @@ require 'ostruct' module Rswag module Ui class Configuration - attr_reader :swagger_endpoints + attr_reader :template_locations + attr_accessor :config_object + attr_accessor :oauth_config_object + attr_reader :assets_root def initialize - @swagger_endpoints = [] + @template_locations = [ + # preffered override location + "#{Rack::Directory.new('').root}/swagger/index.erb", + # backwards compatible override location + "#{Rack::Directory.new('').root}/app/views/rswag/ui/home/index.html.erb", + # default location + File.expand_path('../index.erb', __FILE__) + ] + @assets_root = File.expand_path('../../../../node_modules/swagger-ui-dist', __FILE__) + @config_object = {} + @oauth_config_object = {} end - def swagger_endpoint(path, title) - @swagger_endpoints << OpenStruct.new(path: path, title: title) + def swagger_endpoint(url, name) + @config_object[:urls] ||= [] + @config_object[:urls] << { url: url, name: name } + end + + def get_binding + binding end end end diff --git a/rswag-ui/lib/rswag/ui/engine.rb b/rswag-ui/lib/rswag/ui/engine.rb index f9e2460..78ee075 100644 --- a/rswag-ui/lib/rswag/ui/engine.rb +++ b/rswag-ui/lib/rswag/ui/engine.rb @@ -1,19 +1,16 @@ +require 'rswag/ui/middleware' + module Rswag module Ui class Engine < ::Rails::Engine isolate_namespace Rswag::Ui initializer 'rswag-ui.initialize' do |app| - if app.config.respond_to?(:assets) - app.config.assets.precompile += [ - 'swagger-ui/css/*', - 'swagger-ui/fonts/*', - 'swagger-ui/images/*', - 'swagger-ui/lang/*', - 'swagger-ui/lib/*', - 'swagger-ui/swagger-ui.min.js' - ] - end + middleware.use Rswag::Ui::Middleware, Rswag::Ui.config + end + + rake_tasks do + load File.expand_path('../../../tasks/rswag-ui_tasks.rake', __FILE__) end end end diff --git a/rswag-ui/lib/rswag/ui/index.erb b/rswag-ui/lib/rswag/ui/index.erb new file mode 100644 index 0000000..137cb9a --- /dev/null +++ b/rswag-ui/lib/rswag/ui/index.erb @@ -0,0 +1,103 @@ + + + + + + Swagger UI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + diff --git a/rswag-ui/lib/rswag/ui/middleware.rb b/rswag-ui/lib/rswag/ui/middleware.rb new file mode 100644 index 0000000..3bad997 --- /dev/null +++ b/rswag-ui/lib/rswag/ui/middleware.rb @@ -0,0 +1,44 @@ +module Rswag + module Ui + class Middleware < Rack::Static + + def initialize(app, config) + @config = config + super(app, urls: [ '' ], root: config.assets_root ) + end + + def call(env) + if base_path?(env) + redirect_uri = env['SCRIPT_NAME'].chomp('/') + '/index.html' + return [ 301, { 'Location' => redirect_uri }, [ ] ] + end + + if index_path?(env) + return [ 200, { 'Content-Type' => 'text/html' }, [ render_template ] ] + end + + super + end + + private + + def base_path?(env) + env['REQUEST_METHOD'] == "GET" && env['PATH_INFO'] == "/" + end + + def index_path?(env) + env['REQUEST_METHOD'] == "GET" && env['PATH_INFO'] == "/index.html" + end + + def render_template + file = File.new(template_filename) + template = ERB.new(file.read) + template.result(@config.get_binding) + end + + def template_filename + @config.template_locations.find { |filename| File.exists?(filename) } + end + end + end +end diff --git a/rswag-ui/lib/rswag/ui/version.rb b/rswag-ui/lib/rswag/ui/version.rb deleted file mode 100644 index 1966406..0000000 --- a/rswag-ui/lib/rswag/ui/version.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Rswag - module Ui - VERSION = '1.3.0' - end -end diff --git a/rswag-ui/lib/tasks/rswag-ui_tasks.rake b/rswag-ui/lib/tasks/rswag-ui_tasks.rake new file mode 100644 index 0000000..0166011 --- /dev/null +++ b/rswag-ui/lib/tasks/rswag-ui_tasks.rake @@ -0,0 +1,12 @@ +namespace :rswag do + namespace :ui do + + desc 'TODO' + task :copy_assets, [ :dest ] do |t, args| + dest = args[:dest] + FileUtils.rm_r(dest, force: true) + FileUtils.mkdir_p(dest) + FileUtils.cp_r(Dir.glob("#{Rswag::Ui.config.assets_root}/{*.js,*.png,*.css}"), dest) + end + end +end diff --git a/rswag-ui/package-lock.json b/rswag-ui/package-lock.json new file mode 100644 index 0000000..144573b --- /dev/null +++ b/rswag-ui/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "rswag-ui", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "swagger-ui-dist": { + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-3.18.2.tgz", + "integrity": "sha512-pWAEiKkgWUJvjmLW9AojudnutJ+NTn5g6OdNLj1iIJWwCkoy40K3Upwa24DqFbmIE4vLX4XplND61hp2L+s5vg==" + } + } +} diff --git a/rswag-ui/package.json b/rswag-ui/package.json new file mode 100644 index 0000000..27dbc6c --- /dev/null +++ b/rswag-ui/package.json @@ -0,0 +1,8 @@ +{ + "name": "rswag-ui", + "version": "1.0.0", + "private": true, + "dependencies": { + "swagger-ui-dist": "3.18.2" + } +} diff --git a/rswag-ui/rswag-ui.gemspec b/rswag-ui/rswag-ui.gemspec index 95f9bc2..1584470 100644 --- a/rswag-ui/rswag-ui.gemspec +++ b/rswag-ui/rswag-ui.gemspec @@ -1,12 +1,9 @@ $:.push File.expand_path("../lib", __FILE__) -# Maintain your gem's version: -require 'rswag/ui/version' - # Describe your gem and declare its dependencies: Gem::Specification.new do |s| s.name = "rswag-ui" - s.version = Rswag::Ui::VERSION + s.version = ENV['TRAVIS_TAG'] || '0.0.0' s.authors = ["Richie Morris"] s.email = ["domaindrivendev@gmail.com"] s.homepage = "https://github.com/domaindrivendev/rswag" @@ -14,8 +11,8 @@ Gem::Specification.new do |s| s.description = "Expose beautiful API documentation, that's powered by Swagger JSON endpoints, including a UI to explore and test operations" s.license = "MIT" - s.files = Dir["{app,config,lib,vendor}/**/*"] + ["MIT-LICENSE", "Rakefile" ] + s.files = Dir.glob("{lib,node_modules}/**/*") + ["MIT-LICENSE", "Rakefile" ] - s.add_dependency 'actionpack', '>=3.1' - s.add_dependency 'railties', '>= 3.1' + s.add_dependency 'actionpack', '>=3.1', '< 6.1' + s.add_dependency 'railties', '>= 3.1', '< 6.1' end diff --git a/rswag-ui/vendor/assets/components/swagger-ui/css/print.css.erb b/rswag-ui/vendor/assets/components/swagger-ui/css/print.css.erb deleted file mode 100644 index a952fe0..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/css/print.css.erb +++ /dev/null @@ -1,1367 +0,0 @@ -/* Original style from softwaremaniacs.org (c) Ivan Sagalaev */ -.swagger-section pre code { - display: block; - padding: 0.5em; - background: #F0F0F0; -} -.swagger-section pre code, -.swagger-section pre .subst, -.swagger-section pre .tag .title, -.swagger-section pre .lisp .title, -.swagger-section pre .clojure .built_in, -.swagger-section pre .nginx .title { - color: black; -} -.swagger-section pre .string, -.swagger-section pre .title, -.swagger-section pre .constant, -.swagger-section pre .parent, -.swagger-section pre .tag .value, -.swagger-section pre .rules .value, -.swagger-section pre .rules .value .number, -.swagger-section pre .preprocessor, -.swagger-section pre .ruby .symbol, -.swagger-section pre .ruby .symbol .string, -.swagger-section pre .aggregate, -.swagger-section pre .template_tag, -.swagger-section pre .django .variable, -.swagger-section pre .smalltalk .class, -.swagger-section pre .addition, -.swagger-section pre .flow, -.swagger-section pre .stream, -.swagger-section pre .bash .variable, -.swagger-section pre .apache .tag, -.swagger-section pre .apache .cbracket, -.swagger-section pre .tex .command, -.swagger-section pre .tex .special, -.swagger-section pre .erlang_repl .function_or_atom, -.swagger-section pre .markdown .header { - color: #800; -} -.swagger-section pre .comment, -.swagger-section pre .annotation, -.swagger-section pre .template_comment, -.swagger-section pre .diff .header, -.swagger-section pre .chunk, -.swagger-section pre .markdown .blockquote { - color: #888; -} -.swagger-section pre .number, -.swagger-section pre .date, -.swagger-section pre .regexp, -.swagger-section pre .literal, -.swagger-section pre .smalltalk .symbol, -.swagger-section pre .smalltalk .char, -.swagger-section pre .go .constant, -.swagger-section pre .change, -.swagger-section pre .markdown .bullet, -.swagger-section pre .markdown .link_url { - color: #080; -} -.swagger-section pre .label, -.swagger-section pre .javadoc, -.swagger-section pre .ruby .string, -.swagger-section pre .decorator, -.swagger-section pre .filter .argument, -.swagger-section pre .localvars, -.swagger-section pre .array, -.swagger-section pre .attr_selector, -.swagger-section pre .important, -.swagger-section pre .pseudo, -.swagger-section pre .pi, -.swagger-section pre .doctype, -.swagger-section pre .deletion, -.swagger-section pre .envvar, -.swagger-section pre .shebang, -.swagger-section pre .apache .sqbracket, -.swagger-section pre .nginx .built_in, -.swagger-section pre .tex .formula, -.swagger-section pre .erlang_repl .reserved, -.swagger-section pre .prompt, -.swagger-section pre .markdown .link_label, -.swagger-section pre .vhdl .attribute, -.swagger-section pre .clojure .attribute, -.swagger-section pre .coffeescript .property { - color: #88F; -} -.swagger-section pre .keyword, -.swagger-section pre .id, -.swagger-section pre .phpdoc, -.swagger-section pre .title, -.swagger-section pre .built_in, -.swagger-section pre .aggregate, -.swagger-section pre .css .tag, -.swagger-section pre .javadoctag, -.swagger-section pre .phpdoc, -.swagger-section pre .yardoctag, -.swagger-section pre .smalltalk .class, -.swagger-section pre .winutils, -.swagger-section pre .bash .variable, -.swagger-section pre .apache .tag, -.swagger-section pre .go .typename, -.swagger-section pre .tex .command, -.swagger-section pre .markdown .strong, -.swagger-section pre .request, -.swagger-section pre .status { - font-weight: bold; -} -.swagger-section pre .markdown .emphasis { - font-style: italic; -} -.swagger-section pre .nginx .built_in { - font-weight: normal; -} -.swagger-section pre .coffeescript .javascript, -.swagger-section pre .javascript .xml, -.swagger-section pre .tex .formula, -.swagger-section pre .xml .javascript, -.swagger-section pre .xml .vbscript, -.swagger-section pre .xml .css, -.swagger-section pre .xml .cdata { - opacity: 0.5; -} -.swagger-section .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #F0F0F0; -} -.swagger-section .hljs, -.swagger-section .hljs-subst { - color: #444; -} -.swagger-section .hljs-keyword, -.swagger-section .hljs-attribute, -.swagger-section .hljs-selector-tag, -.swagger-section .hljs-meta-keyword, -.swagger-section .hljs-doctag, -.swagger-section .hljs-name { - font-weight: bold; -} -.swagger-section .hljs-built_in, -.swagger-section .hljs-literal, -.swagger-section .hljs-bullet, -.swagger-section .hljs-code, -.swagger-section .hljs-addition { - color: #1F811F; -} -.swagger-section .hljs-regexp, -.swagger-section .hljs-symbol, -.swagger-section .hljs-variable, -.swagger-section .hljs-template-variable, -.swagger-section .hljs-link, -.swagger-section .hljs-selector-attr, -.swagger-section .hljs-selector-pseudo { - color: #BC6060; -} -.swagger-section .hljs-type, -.swagger-section .hljs-string, -.swagger-section .hljs-number, -.swagger-section .hljs-selector-id, -.swagger-section .hljs-selector-class, -.swagger-section .hljs-quote, -.swagger-section .hljs-template-tag, -.swagger-section .hljs-deletion { - color: #880000; -} -.swagger-section .hljs-title, -.swagger-section .hljs-section { - color: #880000; - font-weight: bold; -} -.swagger-section .hljs-comment { - color: #888888; -} -.swagger-section .hljs-meta { - color: #2B6EA1; -} -.swagger-section .hljs-emphasis { - font-style: italic; -} -.swagger-section .hljs-strong { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap { - line-height: 1; - font-family: "Droid Sans", sans-serif; - min-width: 760px; - max-width: 960px; - margin-left: auto; - margin-right: auto; - /* JSONEditor specific styling */ -} -.swagger-section .swagger-ui-wrap b, -.swagger-section .swagger-ui-wrap strong { - font-family: "Droid Sans", sans-serif; - font-weight: bold; -} -.swagger-section .swagger-ui-wrap q, -.swagger-section .swagger-ui-wrap blockquote { - quotes: none; -} -.swagger-section .swagger-ui-wrap p { - line-height: 1.4em; - padding: 0 0 10px; - color: #333333; -} -.swagger-section .swagger-ui-wrap q:before, -.swagger-section .swagger-ui-wrap q:after, -.swagger-section .swagger-ui-wrap blockquote:before, -.swagger-section .swagger-ui-wrap blockquote:after { - content: none; -} -.swagger-section .swagger-ui-wrap .heading_with_menu h1, -.swagger-section .swagger-ui-wrap .heading_with_menu h2, -.swagger-section .swagger-ui-wrap .heading_with_menu h3, -.swagger-section .swagger-ui-wrap .heading_with_menu h4, -.swagger-section .swagger-ui-wrap .heading_with_menu h5, -.swagger-section .swagger-ui-wrap .heading_with_menu h6 { - display: block; - clear: none; - float: left; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - width: 60%; -} -.swagger-section .swagger-ui-wrap table { - border-collapse: collapse; - border-spacing: 0; -} -.swagger-section .swagger-ui-wrap table thead tr th { - padding: 5px; - font-size: 0.9em; - color: #666666; - border-bottom: 1px solid #999999; -} -.swagger-section .swagger-ui-wrap table tbody tr:last-child td { - border-bottom: none; -} -.swagger-section .swagger-ui-wrap table tbody tr.offset { - background-color: #f0f0f0; -} -.swagger-section .swagger-ui-wrap table tbody tr td { - padding: 6px; - font-size: 0.9em; - border-bottom: 1px solid #cccccc; - vertical-align: top; - line-height: 1.3em; -} -.swagger-section .swagger-ui-wrap ol { - margin: 0px 0 10px; - padding: 0 0 0 18px; - list-style-type: decimal; -} -.swagger-section .swagger-ui-wrap ol li { - padding: 5px 0px; - font-size: 0.9em; - color: #333333; -} -.swagger-section .swagger-ui-wrap ol, -.swagger-section .swagger-ui-wrap ul { - list-style: none; -} -.swagger-section .swagger-ui-wrap h1 a, -.swagger-section .swagger-ui-wrap h2 a, -.swagger-section .swagger-ui-wrap h3 a, -.swagger-section .swagger-ui-wrap h4 a, -.swagger-section .swagger-ui-wrap h5 a, -.swagger-section .swagger-ui-wrap h6 a { - text-decoration: none; -} -.swagger-section .swagger-ui-wrap h1 a:hover, -.swagger-section .swagger-ui-wrap h2 a:hover, -.swagger-section .swagger-ui-wrap h3 a:hover, -.swagger-section .swagger-ui-wrap h4 a:hover, -.swagger-section .swagger-ui-wrap h5 a:hover, -.swagger-section .swagger-ui-wrap h6 a:hover { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap h1 span.divider, -.swagger-section .swagger-ui-wrap h2 span.divider, -.swagger-section .swagger-ui-wrap h3 span.divider, -.swagger-section .swagger-ui-wrap h4 span.divider, -.swagger-section .swagger-ui-wrap h5 span.divider, -.swagger-section .swagger-ui-wrap h6 span.divider { - color: #aaaaaa; -} -.swagger-section .swagger-ui-wrap a { - color: #547f00; -} -.swagger-section .swagger-ui-wrap a img { - border: none; -} -.swagger-section .swagger-ui-wrap article, -.swagger-section .swagger-ui-wrap aside, -.swagger-section .swagger-ui-wrap details, -.swagger-section .swagger-ui-wrap figcaption, -.swagger-section .swagger-ui-wrap figure, -.swagger-section .swagger-ui-wrap footer, -.swagger-section .swagger-ui-wrap header, -.swagger-section .swagger-ui-wrap hgroup, -.swagger-section .swagger-ui-wrap menu, -.swagger-section .swagger-ui-wrap nav, -.swagger-section .swagger-ui-wrap section, -.swagger-section .swagger-ui-wrap summary { - display: block; -} -.swagger-section .swagger-ui-wrap pre { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - background-color: #fcf6db; - border: 1px solid #e5e0c6; - padding: 10px; -} -.swagger-section .swagger-ui-wrap pre code { - line-height: 1.6em; - background: none; -} -.swagger-section .swagger-ui-wrap .content > .content-type > div > label { - clear: both; - display: block; - color: #0F6AB4; - font-size: 1.1em; - margin: 0; - padding: 15px 0 5px; -} -.swagger-section .swagger-ui-wrap .content pre { - font-size: 12px; - margin-top: 5px; - padding: 5px; -} -.swagger-section .swagger-ui-wrap .icon-btn { - cursor: pointer; -} -.swagger-section .swagger-ui-wrap .info_title { - padding-bottom: 10px; - font-weight: bold; - font-size: 25px; -} -.swagger-section .swagger-ui-wrap .footer { - margin-top: 20px; -} -.swagger-section .swagger-ui-wrap p.big, -.swagger-section .swagger-ui-wrap div.big p { - font-size: 1em; - margin-bottom: 10px; -} -.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input, -.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input, -.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea, -.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input { - width: 500px !important; -} -.swagger-section .swagger-ui-wrap .info_license { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_tos { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .message-fail { - color: #cc0000; -} -.swagger-section .swagger-ui-wrap .info_url { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_email { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_name { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_description { - padding-bottom: 10px; - font-size: 15px; -} -.swagger-section .swagger-ui-wrap .markdown ol li, -.swagger-section .swagger-ui-wrap .markdown ul li { - padding: 3px 0px; - line-height: 1.4em; - color: #333333; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input { - display: block; - padding: 4px; - width: auto; - clear: both; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title { - font-size: 1.3em; -} -.swagger-section .swagger-ui-wrap table.fullwidth { - width: 100%; -} -.swagger-section .swagger-ui-wrap .model-signature { - font-family: "Droid Sans", sans-serif; - font-size: 1em; - line-height: 1.5em; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-nav a { - text-decoration: none; - color: #AAA; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover { - text-decoration: underline; - color: black; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected { - color: black; - text-decoration: none; -} -.swagger-section .swagger-ui-wrap .model-signature .propType { - color: #5555aa; -} -.swagger-section .swagger-ui-wrap .model-signature pre:hover { - background-color: #ffffdd; -} -.swagger-section .swagger-ui-wrap .model-signature pre { - font-size: .85em; - line-height: 1.2em; - overflow: auto; - max-height: 200px; - cursor: pointer; -} -.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav { - display: block; - min-width: 230px; - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child { - padding-right: 0; - border-right: none; -} -.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li { - float: left; - margin: 0 5px 5px 0; - padding: 2px 5px 2px 0; - border-right: 1px solid #ddd; -} -.swagger-section .swagger-ui-wrap .model-signature .propOpt { - color: #555; -} -.swagger-section .swagger-ui-wrap .model-signature .snippet small { - font-size: 0.75em; -} -.swagger-section .swagger-ui-wrap .model-signature .propOptKey { - font-style: italic; -} -.swagger-section .swagger-ui-wrap .model-signature .description .strong { - font-weight: bold; - color: #000; - font-size: .9em; -} -.swagger-section .swagger-ui-wrap .model-signature .description div { - font-size: 0.9em; - line-height: 1.5em; - margin-left: 1em; -} -.swagger-section .swagger-ui-wrap .model-signature .description .stronger { - font-weight: bold; - color: #000; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper { - border-spacing: 0; - position: absolute; - background-color: #ffffff; - border: 1px solid #bbbbbb; - display: none; - font-size: 11px; - max-width: 400px; - line-height: 30px; - color: black; - padding: 5px; - margin-left: 10px; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th { - text-align: center; - background-color: #eeeeee; - border: 1px solid #bbbbbb; - font-size: 11px; - color: #666666; - font-weight: bold; - padding: 5px; - line-height: 15px; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:first-child, -.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:last-child { - display: inline; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:not(:first-child):before { - display: block; - content: ''; -} -.swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown > p:only-child { - margin-right: -3px; -} -.swagger-section .swagger-ui-wrap .model-signature .propName { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-container { - clear: both; -} -.swagger-section .swagger-ui-wrap .body-textarea { - width: 300px; - height: 100px; - border: 1px solid #aaa; -} -.swagger-section .swagger-ui-wrap .markdown p code, -.swagger-section .swagger-ui-wrap .markdown li code { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - background-color: #f0f0f0; - color: black; - padding: 1px 3px; -} -.swagger-section .swagger-ui-wrap .required { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .editor_holder { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap .editor_holder label { - font-weight: normal!important; - /* JSONEditor uses bold by default for all labels, we revert that back to normal to not give the impression that by default fields are required */ -} -.swagger-section .swagger-ui-wrap .editor_holder label.required { - font-weight: bold!important; -} -.swagger-section .swagger-ui-wrap input.parameter { - width: 300px; - border: 1px solid #aaa; -} -.swagger-section .swagger-ui-wrap h1 { - color: black; - font-size: 1.5em; - line-height: 1.3em; - padding: 10px 0 10px 0; - font-family: "Droid Sans", sans-serif; - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .heading_with_menu { - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap .heading_with_menu ul { - display: block; - clear: none; - float: right; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - margin-top: 10px; -} -.swagger-section .swagger-ui-wrap h2 { - color: black; - font-size: 1.3em; - padding: 10px 0 10px 0; -} -.swagger-section .swagger-ui-wrap h2 a { - color: black; -} -.swagger-section .swagger-ui-wrap h2 span.sub { - font-size: 0.7em; - color: #999999; - font-style: italic; -} -.swagger-section .swagger-ui-wrap h2 span.sub a { - color: #777777; -} -.swagger-section .swagger-ui-wrap span.weak { - color: #666666; -} -.swagger-section .swagger-ui-wrap .message-success { - color: #89BF04; -} -.swagger-section .swagger-ui-wrap caption, -.swagger-section .swagger-ui-wrap th, -.swagger-section .swagger-ui-wrap td { - text-align: left; - font-weight: normal; - vertical-align: middle; -} -.swagger-section .swagger-ui-wrap .code { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea { - font-family: "Droid Sans", sans-serif; - height: 250px; - padding: 4px; - display: block; - clear: both; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select { - display: block; - clear: both; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean { - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label { - display: block; - float: left; - clear: none; - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input { - display: block; - float: left; - clear: none; - margin: 0 5px 0 0; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label { - color: black; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label { - display: block; - clear: both; - width: auto; - padding: 0 0 3px; - color: #666666; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr { - padding-left: 3px; - color: #888888; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints { - margin-left: 0; - font-style: italic; - font-size: 0.9em; - margin: 0; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons { - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap span.blank, -.swagger-section .swagger-ui-wrap span.empty { - color: #888888; - font-style: italic; -} -.swagger-section .swagger-ui-wrap .markdown h3 { - color: #547f00; -} -.swagger-section .swagger-ui-wrap .markdown h4 { - color: #666666; -} -.swagger-section .swagger-ui-wrap .markdown pre { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - background-color: #fcf6db; - border: 1px solid #e5e0c6; - padding: 10px; - margin: 0 0 10px 0; -} -.swagger-section .swagger-ui-wrap .markdown pre code { - line-height: 1.6em; - overflow: auto; -} -.swagger-section .swagger-ui-wrap div.gist { - margin: 20px 0 25px 0 !important; -} -.swagger-section .swagger-ui-wrap ul#resources { - font-family: "Droid Sans", sans-serif; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource { - border-bottom: 1px solid #dddddd; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a, -.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a { - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a, -.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a { - color: #555555; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child { - border-bottom: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading { - border: 1px solid transparent; - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options { - overflow: hidden; - padding: 0; - display: block; - clear: none; - float: right; - margin: 14px 10px 0 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li { - float: left; - clear: none; - margin: 0; - padding: 2px 10px; - border-right: 1px solid #dddddd; - color: #666666; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a { - color: #aaaaaa; - text-decoration: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover { - text-decoration: underline; - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last { - padding-right: 0; - border-right: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 { - color: #999999; - padding-left: 0; - display: block; - clear: none; - float: left; - font-family: "Droid Sans", sans-serif; - font-weight: bold; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a { - color: #999999; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover { - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation { - float: none; - clear: both; - overflow: hidden; - display: block; - margin: 0 0 10px; - padding: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading { - float: none; - clear: both; - overflow: hidden; - display: block; - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 { - display: block; - clear: none; - float: left; - width: auto; - margin: 0; - padding: 0; - line-height: 1.1em; - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path { - padding-left: 10px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a { - color: black; - text-decoration: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a.toggleOperation.deprecated { - text-decoration: line-through; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a { - text-transform: uppercase; - text-decoration: none; - color: white; - display: inline-block; - width: 50px; - font-size: 0.7em; - text-align: center; - padding: 7px 0 4px; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - -o-border-radius: 2px; - -ms-border-radius: 2px; - -khtml-border-radius: 2px; - border-radius: 2px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span { - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options { - overflow: hidden; - padding: 0; - display: block; - clear: none; - float: right; - margin: 6px 10px 0 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li { - float: left; - clear: none; - margin: 0; - padding: 2px 10px; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a { - text-decoration: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .markdown p { - color: inherit; - padding: 0; - line-height: inherit; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access { - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content { - border-top: none; - padding: 10px; - -moz-border-radius-bottomleft: 6px; - -webkit-border-bottom-left-radius: 6px; - -o-border-bottom-left-radius: 6px; - -ms-border-bottom-left-radius: 6px; - -khtml-border-bottom-left-radius: 6px; - border-bottom-left-radius: 6px; - -moz-border-radius-bottomright: 6px; - -webkit-border-bottom-right-radius: 6px; - -o-border-bottom-right-radius: 6px; - -ms-border-bottom-right-radius: 6px; - -khtml-border-bottom-right-radius: 6px; - border-bottom-right-radius: 6px; - margin: 0 0 20px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4 { - font-size: 1.1em; - margin: 0; - padding: 15px 0 5px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header { - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a { - padding: 4px 0 0 10px; - display: inline-block; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit { - display: block; - clear: none; - float: left; - padding: 6px 8px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber { - background-image: url(<%= asset_path('swagger-ui/images/throbber.gif') %>); - width: 128px; - height: 16px; - display: block; - clear: none; - float: right; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type='text'].error { - outline: 2px solid black; - outline-color: #cc0000; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name='parameterContentType'] { - max-width: 300px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - padding: 10px; - font-size: 0.9em; - max-height: 400px; - overflow-y: auto; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading { - background-color: #f9f2e9; - border: 1px solid #f0e0ca; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a { - background-color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #f0e0ca; - color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a { - color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content { - background-color: #faf5ee; - border: 1px solid #f0e0ca; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4 { - color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a { - color: #dcb67f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading { - background-color: #fcffcd; - border: 1px solid black; - border-color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a { - text-transform: uppercase; - background-color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #ffd20f; - color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a { - color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content { - background-color: #fcffcd; - border: 1px solid black; - border-color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4 { - color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a { - color: #6fc992; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading { - background-color: #f5e8e8; - border: 1px solid #e8c6c7; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a { - text-transform: uppercase; - background-color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #e8c6c7; - color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a { - color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { - background-color: #f7eded; - border: 1px solid #e8c6c7; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4 { - color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a { - color: #c8787a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading { - background-color: #e7f6ec; - border: 1px solid #c3e8d1; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a { - background-color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #c3e8d1; - color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a { - color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content { - background-color: #ebf7f0; - border: 1px solid #c3e8d1; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4 { - color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a { - color: #6fc992; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading { - background-color: #FCE9E3; - border: 1px solid #F5D5C3; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a { - background-color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #f0cecb; - color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a { - color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content { - background-color: #faf0ef; - border: 1px solid #f0cecb; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4 { - color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a { - color: #dcb67f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading { - background-color: #e7f0f7; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a { - background-color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #c3d9ec; - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content { - background-color: #ebf3f9; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4 { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a { - color: #6fa5d2; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading { - background-color: #e7f0f7; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a { - background-color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #c3d9ec; - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content { - background-color: #ebf3f9; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4 { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a { - color: #6fa5d2; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { - border-top: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last { - padding-right: 0; - border-right: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap p#colophon { - margin: 0 15px 40px 15px; - padding: 10px 0; - font-size: 0.8em; - border-top: 1px solid #dddddd; - font-family: "Droid Sans", sans-serif; - color: #999999; - font-style: italic; -} -.swagger-section .swagger-ui-wrap p#colophon a { - text-decoration: none; - color: #547f00; -} -.swagger-section .swagger-ui-wrap h3 { - color: black; - font-size: 1.1em; - padding: 10px 0 10px 0; -} -.swagger-section .swagger-ui-wrap .markdown ol, -.swagger-section .swagger-ui-wrap .markdown ul { - font-family: "Droid Sans", sans-serif; - margin: 5px 0 10px; - padding: 0 0 0 18px; - list-style-type: disc; -} -.swagger-section .swagger-ui-wrap form.form_box { - background-color: #ebf3f9; - border: 1px solid #c3d9ec; - padding: 10px; -} -.swagger-section .swagger-ui-wrap form.form_box label { - color: #0f6ab4 !important; -} -.swagger-section .swagger-ui-wrap form.form_box input[type=submit] { - display: block; - padding: 10px; -} -.swagger-section .swagger-ui-wrap form.form_box p.weak { - font-size: 0.8em; -} -.swagger-section .swagger-ui-wrap form.form_box p { - font-size: 0.9em; - padding: 0 0 15px; - color: #7e7b6d; -} -.swagger-section .swagger-ui-wrap form.form_box p a { - color: #646257; -} -.swagger-section .swagger-ui-wrap form.form_box p strong { - color: black; -} -.swagger-section .swagger-ui-wrap .operation-status td.markdown > p:last-child { - padding-bottom: 0; -} -.swagger-section .title { - font-style: bold; -} -.swagger-section .secondary_form { - display: none; -} -.swagger-section .main_image { - display: block; - margin-left: auto; - margin-right: auto; -} -.swagger-section .oauth_body { - margin-left: 100px; - margin-right: 100px; -} -.swagger-section .oauth_submit { - text-align: center; - display: inline-block; -} -.swagger-section .authorize-wrapper { - margin: 15px 0 10px; -} -.swagger-section .authorize-wrapper_operation { - float: right; -} -.swagger-section .authorize__btn:hover { - text-decoration: underline; - cursor: pointer; -} -.swagger-section .authorize__btn_operation:hover .authorize-scopes { - display: block; -} -.swagger-section .authorize-scopes { - position: absolute; - margin-top: 20px; - background: #FFF; - border: 1px solid #ccc; - border-radius: 5px; - display: none; - font-size: 13px; - max-width: 300px; - line-height: 30px; - color: black; - padding: 5px; -} -.swagger-section .authorize-scopes .authorize__scope { - text-decoration: none; -} -.swagger-section .authorize__btn_operation { - height: 18px; - vertical-align: middle; - display: inline-block; - background: url(<%= asset_path('swagger-ui/images/explorer_icons.png') %>) no-repeat; -} -.swagger-section .authorize__btn_operation_login { - background-position: 0 0; - width: 18px; - margin-top: -6px; - margin-left: 4px; -} -.swagger-section .authorize__btn_operation_logout { - background-position: -30px 0; - width: 18px; - margin-top: -6px; - margin-left: 4px; -} -.swagger-section #auth_container { - color: #fff; - display: inline-block; - border: none; - padding: 5px; - width: 87px; - height: 13px; -} -.swagger-section #auth_container .authorize__btn { - color: #fff; -} -.swagger-section .auth_container { - padding: 0 0 10px; - margin-bottom: 5px; - border-bottom: solid 1px #CCC; - font-size: 0.9em; -} -.swagger-section .auth_container .auth__title { - color: #547f00; - font-size: 1.2em; -} -.swagger-section .auth_container .basic_auth__label { - display: inline-block; - width: 60px; -} -.swagger-section .auth_container .auth__description { - color: #999999; - margin-bottom: 5px; -} -.swagger-section .auth_container .auth__button { - margin-top: 10px; - height: 30px; -} -.swagger-section .auth_container .key_auth__field { - margin: 5px 0; -} -.swagger-section .auth_container .key_auth__label { - display: inline-block; - width: 60px; -} -.swagger-section .api-popup-dialog { - position: absolute; - display: none; -} -.swagger-section .api-popup-dialog-wrapper { - z-index: 1000; - width: 500px; - background: #FFF; - padding: 20px; - border: 1px solid #ccc; - border-radius: 5px; - font-size: 13px; - color: #777; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} -.swagger-section .api-popup-dialog-shadow { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0.2; - background-color: gray; - z-index: 900; -} -.swagger-section .api-popup-dialog .api-popup-title { - font-size: 24px; - padding: 10px 0; -} -.swagger-section .api-popup-dialog .api-popup-title { - font-size: 24px; - padding: 10px 0; -} -.swagger-section .api-popup-dialog .error-msg { - padding-left: 5px; - padding-bottom: 5px; -} -.swagger-section .api-popup-dialog .api-popup-content { - max-height: 500px; - overflow-y: auto; -} -.swagger-section .api-popup-dialog .api-popup-authbtn { - height: 30px; -} -.swagger-section .api-popup-dialog .api-popup-cancel { - height: 30px; -} -.swagger-section .api-popup-scopes { - padding: 10px 20px; -} -.swagger-section .api-popup-scopes li { - padding: 5px 0; - line-height: 20px; -} -.swagger-section .api-popup-scopes li input { - position: relative; - top: 2px; -} -.swagger-section .api-popup-scopes .api-scope-desc { - padding-left: 20px; - font-style: italic; -} -.swagger-section .api-popup-actions { - padding-top: 10px; -} -#header { - display: none; -} -.swagger-section .swagger-ui-wrap .model-signature pre { - max-height: none; -} -.swagger-section .swagger-ui-wrap .body-textarea { - width: 100px; -} -.swagger-section .swagger-ui-wrap input.parameter { - width: 100px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options { - display: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints { - display: block !important; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content { - display: block !important; -} diff --git a/rswag-ui/vendor/assets/components/swagger-ui/css/reset.css b/rswag-ui/vendor/assets/components/swagger-ui/css/reset.css deleted file mode 100644 index b2b0789..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/css/reset.css +++ /dev/null @@ -1,125 +0,0 @@ -/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 */ -html, -body, -div, -span, -applet, -object, -iframe, -h1, -h2, -h3, -h4, -h5, -h6, -p, -blockquote, -pre, -a, -abbr, -acronym, -address, -big, -cite, -code, -del, -dfn, -em, -img, -ins, -kbd, -q, -s, -samp, -small, -strike, -strong, -sub, -sup, -tt, -var, -b, -u, -i, -center, -dl, -dt, -dd, -ol, -ul, -li, -fieldset, -form, -label, -legend, -table, -caption, -tbody, -tfoot, -thead, -tr, -th, -td, -article, -aside, -canvas, -details, -embed, -figure, -figcaption, -footer, -header, -hgroup, -menu, -nav, -output, -ruby, -section, -summary, -time, -mark, -audio, -video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} -/* HTML5 display-role reset for older browsers */ -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -menu, -nav, -section { - display: block; -} -body { - line-height: 1; -} -ol, -ul { - list-style: none; -} -blockquote, -q { - quotes: none; -} -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ''; - content: none; -} -table { - border-collapse: collapse; - border-spacing: 0; -} diff --git a/rswag-ui/vendor/assets/components/swagger-ui/css/screen.css.erb b/rswag-ui/vendor/assets/components/swagger-ui/css/screen.css.erb deleted file mode 100644 index 7740464..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/css/screen.css.erb +++ /dev/null @@ -1,1494 +0,0 @@ -/* Original style from softwaremaniacs.org (c) Ivan Sagalaev */ -.swagger-section pre code { - display: block; - padding: 0.5em; - background: #F0F0F0; -} -.swagger-section pre code, -.swagger-section pre .subst, -.swagger-section pre .tag .title, -.swagger-section pre .lisp .title, -.swagger-section pre .clojure .built_in, -.swagger-section pre .nginx .title { - color: black; -} -.swagger-section pre .string, -.swagger-section pre .title, -.swagger-section pre .constant, -.swagger-section pre .parent, -.swagger-section pre .tag .value, -.swagger-section pre .rules .value, -.swagger-section pre .rules .value .number, -.swagger-section pre .preprocessor, -.swagger-section pre .ruby .symbol, -.swagger-section pre .ruby .symbol .string, -.swagger-section pre .aggregate, -.swagger-section pre .template_tag, -.swagger-section pre .django .variable, -.swagger-section pre .smalltalk .class, -.swagger-section pre .addition, -.swagger-section pre .flow, -.swagger-section pre .stream, -.swagger-section pre .bash .variable, -.swagger-section pre .apache .tag, -.swagger-section pre .apache .cbracket, -.swagger-section pre .tex .command, -.swagger-section pre .tex .special, -.swagger-section pre .erlang_repl .function_or_atom, -.swagger-section pre .markdown .header { - color: #800; -} -.swagger-section pre .comment, -.swagger-section pre .annotation, -.swagger-section pre .template_comment, -.swagger-section pre .diff .header, -.swagger-section pre .chunk, -.swagger-section pre .markdown .blockquote { - color: #888; -} -.swagger-section pre .number, -.swagger-section pre .date, -.swagger-section pre .regexp, -.swagger-section pre .literal, -.swagger-section pre .smalltalk .symbol, -.swagger-section pre .smalltalk .char, -.swagger-section pre .go .constant, -.swagger-section pre .change, -.swagger-section pre .markdown .bullet, -.swagger-section pre .markdown .link_url { - color: #080; -} -.swagger-section pre .label, -.swagger-section pre .javadoc, -.swagger-section pre .ruby .string, -.swagger-section pre .decorator, -.swagger-section pre .filter .argument, -.swagger-section pre .localvars, -.swagger-section pre .array, -.swagger-section pre .attr_selector, -.swagger-section pre .important, -.swagger-section pre .pseudo, -.swagger-section pre .pi, -.swagger-section pre .doctype, -.swagger-section pre .deletion, -.swagger-section pre .envvar, -.swagger-section pre .shebang, -.swagger-section pre .apache .sqbracket, -.swagger-section pre .nginx .built_in, -.swagger-section pre .tex .formula, -.swagger-section pre .erlang_repl .reserved, -.swagger-section pre .prompt, -.swagger-section pre .markdown .link_label, -.swagger-section pre .vhdl .attribute, -.swagger-section pre .clojure .attribute, -.swagger-section pre .coffeescript .property { - color: #88F; -} -.swagger-section pre .keyword, -.swagger-section pre .id, -.swagger-section pre .phpdoc, -.swagger-section pre .title, -.swagger-section pre .built_in, -.swagger-section pre .aggregate, -.swagger-section pre .css .tag, -.swagger-section pre .javadoctag, -.swagger-section pre .phpdoc, -.swagger-section pre .yardoctag, -.swagger-section pre .smalltalk .class, -.swagger-section pre .winutils, -.swagger-section pre .bash .variable, -.swagger-section pre .apache .tag, -.swagger-section pre .go .typename, -.swagger-section pre .tex .command, -.swagger-section pre .markdown .strong, -.swagger-section pre .request, -.swagger-section pre .status { - font-weight: bold; -} -.swagger-section pre .markdown .emphasis { - font-style: italic; -} -.swagger-section pre .nginx .built_in { - font-weight: normal; -} -.swagger-section pre .coffeescript .javascript, -.swagger-section pre .javascript .xml, -.swagger-section pre .tex .formula, -.swagger-section pre .xml .javascript, -.swagger-section pre .xml .vbscript, -.swagger-section pre .xml .css, -.swagger-section pre .xml .cdata { - opacity: 0.5; -} -.swagger-section .hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #F0F0F0; -} -.swagger-section .hljs, -.swagger-section .hljs-subst { - color: #444; -} -.swagger-section .hljs-keyword, -.swagger-section .hljs-attribute, -.swagger-section .hljs-selector-tag, -.swagger-section .hljs-meta-keyword, -.swagger-section .hljs-doctag, -.swagger-section .hljs-name { - font-weight: bold; -} -.swagger-section .hljs-built_in, -.swagger-section .hljs-literal, -.swagger-section .hljs-bullet, -.swagger-section .hljs-code, -.swagger-section .hljs-addition { - color: #1F811F; -} -.swagger-section .hljs-regexp, -.swagger-section .hljs-symbol, -.swagger-section .hljs-variable, -.swagger-section .hljs-template-variable, -.swagger-section .hljs-link, -.swagger-section .hljs-selector-attr, -.swagger-section .hljs-selector-pseudo { - color: #BC6060; -} -.swagger-section .hljs-type, -.swagger-section .hljs-string, -.swagger-section .hljs-number, -.swagger-section .hljs-selector-id, -.swagger-section .hljs-selector-class, -.swagger-section .hljs-quote, -.swagger-section .hljs-template-tag, -.swagger-section .hljs-deletion { - color: #880000; -} -.swagger-section .hljs-title, -.swagger-section .hljs-section { - color: #880000; - font-weight: bold; -} -.swagger-section .hljs-comment { - color: #888888; -} -.swagger-section .hljs-meta { - color: #2B6EA1; -} -.swagger-section .hljs-emphasis { - font-style: italic; -} -.swagger-section .hljs-strong { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap { - line-height: 1; - font-family: "Droid Sans", sans-serif; - min-width: 760px; - max-width: 960px; - margin-left: auto; - margin-right: auto; - /* JSONEditor specific styling */ -} -.swagger-section .swagger-ui-wrap b, -.swagger-section .swagger-ui-wrap strong { - font-family: "Droid Sans", sans-serif; - font-weight: bold; -} -.swagger-section .swagger-ui-wrap q, -.swagger-section .swagger-ui-wrap blockquote { - quotes: none; -} -.swagger-section .swagger-ui-wrap p { - line-height: 1.4em; - padding: 0 0 10px; - color: #333333; -} -.swagger-section .swagger-ui-wrap q:before, -.swagger-section .swagger-ui-wrap q:after, -.swagger-section .swagger-ui-wrap blockquote:before, -.swagger-section .swagger-ui-wrap blockquote:after { - content: none; -} -.swagger-section .swagger-ui-wrap .heading_with_menu h1, -.swagger-section .swagger-ui-wrap .heading_with_menu h2, -.swagger-section .swagger-ui-wrap .heading_with_menu h3, -.swagger-section .swagger-ui-wrap .heading_with_menu h4, -.swagger-section .swagger-ui-wrap .heading_with_menu h5, -.swagger-section .swagger-ui-wrap .heading_with_menu h6 { - display: block; - clear: none; - float: left; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - width: 60%; -} -.swagger-section .swagger-ui-wrap table { - border-collapse: collapse; - border-spacing: 0; -} -.swagger-section .swagger-ui-wrap table thead tr th { - padding: 5px; - font-size: 0.9em; - color: #666666; - border-bottom: 1px solid #999999; -} -.swagger-section .swagger-ui-wrap table tbody tr:last-child td { - border-bottom: none; -} -.swagger-section .swagger-ui-wrap table tbody tr.offset { - background-color: #f0f0f0; -} -.swagger-section .swagger-ui-wrap table tbody tr td { - padding: 6px; - font-size: 0.9em; - border-bottom: 1px solid #cccccc; - vertical-align: top; - line-height: 1.3em; -} -.swagger-section .swagger-ui-wrap ol { - margin: 0px 0 10px; - padding: 0 0 0 18px; - list-style-type: decimal; -} -.swagger-section .swagger-ui-wrap ol li { - padding: 5px 0px; - font-size: 0.9em; - color: #333333; -} -.swagger-section .swagger-ui-wrap ol, -.swagger-section .swagger-ui-wrap ul { - list-style: none; -} -.swagger-section .swagger-ui-wrap h1 a, -.swagger-section .swagger-ui-wrap h2 a, -.swagger-section .swagger-ui-wrap h3 a, -.swagger-section .swagger-ui-wrap h4 a, -.swagger-section .swagger-ui-wrap h5 a, -.swagger-section .swagger-ui-wrap h6 a { - text-decoration: none; -} -.swagger-section .swagger-ui-wrap h1 a:hover, -.swagger-section .swagger-ui-wrap h2 a:hover, -.swagger-section .swagger-ui-wrap h3 a:hover, -.swagger-section .swagger-ui-wrap h4 a:hover, -.swagger-section .swagger-ui-wrap h5 a:hover, -.swagger-section .swagger-ui-wrap h6 a:hover { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap h1 span.divider, -.swagger-section .swagger-ui-wrap h2 span.divider, -.swagger-section .swagger-ui-wrap h3 span.divider, -.swagger-section .swagger-ui-wrap h4 span.divider, -.swagger-section .swagger-ui-wrap h5 span.divider, -.swagger-section .swagger-ui-wrap h6 span.divider { - color: #aaaaaa; -} -.swagger-section .swagger-ui-wrap a { - color: #547f00; -} -.swagger-section .swagger-ui-wrap a img { - border: none; -} -.swagger-section .swagger-ui-wrap article, -.swagger-section .swagger-ui-wrap aside, -.swagger-section .swagger-ui-wrap details, -.swagger-section .swagger-ui-wrap figcaption, -.swagger-section .swagger-ui-wrap figure, -.swagger-section .swagger-ui-wrap footer, -.swagger-section .swagger-ui-wrap header, -.swagger-section .swagger-ui-wrap hgroup, -.swagger-section .swagger-ui-wrap menu, -.swagger-section .swagger-ui-wrap nav, -.swagger-section .swagger-ui-wrap section, -.swagger-section .swagger-ui-wrap summary { - display: block; -} -.swagger-section .swagger-ui-wrap pre { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - background-color: #fcf6db; - border: 1px solid #e5e0c6; - padding: 10px; -} -.swagger-section .swagger-ui-wrap pre code { - line-height: 1.6em; - background: none; -} -.swagger-section .swagger-ui-wrap .content > .content-type > div > label { - clear: both; - display: block; - color: #0F6AB4; - font-size: 1.1em; - margin: 0; - padding: 15px 0 5px; -} -.swagger-section .swagger-ui-wrap .content pre { - font-size: 12px; - margin-top: 5px; - padding: 5px; -} -.swagger-section .swagger-ui-wrap .icon-btn { - cursor: pointer; -} -.swagger-section .swagger-ui-wrap .info_title { - padding-bottom: 10px; - font-weight: bold; - font-size: 25px; -} -.swagger-section .swagger-ui-wrap .footer { - margin-top: 20px; -} -.swagger-section .swagger-ui-wrap p.big, -.swagger-section .swagger-ui-wrap div.big p { - font-size: 1em; - margin-bottom: 10px; -} -.swagger-section .swagger-ui-wrap form.fullwidth ol li.string input, -.swagger-section .swagger-ui-wrap form.fullwidth ol li.url input, -.swagger-section .swagger-ui-wrap form.fullwidth ol li.text textarea, -.swagger-section .swagger-ui-wrap form.fullwidth ol li.numeric input { - width: 500px !important; -} -.swagger-section .swagger-ui-wrap .info_license { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_tos { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .message-fail { - color: #cc0000; -} -.swagger-section .swagger-ui-wrap .info_url { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_email { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_name { - padding-bottom: 5px; -} -.swagger-section .swagger-ui-wrap .info_description { - padding-bottom: 10px; - font-size: 15px; -} -.swagger-section .swagger-ui-wrap .markdown ol li, -.swagger-section .swagger-ui-wrap .markdown ul li { - padding: 3px 0px; - line-height: 1.4em; - color: #333333; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input { - display: block; - padding: 4px; - width: auto; - clear: both; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.string input.title, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.url input.title, -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.numeric input.title { - font-size: 1.3em; -} -.swagger-section .swagger-ui-wrap table.fullwidth { - width: 100%; -} -.swagger-section .swagger-ui-wrap .model-signature { - font-family: "Droid Sans", sans-serif; - font-size: 1em; - line-height: 1.5em; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-nav a { - text-decoration: none; - color: #AAA; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-nav a:hover { - text-decoration: underline; - color: black; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-nav .selected { - color: black; - text-decoration: none; -} -.swagger-section .swagger-ui-wrap .model-signature .propType { - color: #5555aa; -} -.swagger-section .swagger-ui-wrap .model-signature pre:hover { - background-color: #ffffdd; -} -.swagger-section .swagger-ui-wrap .model-signature pre { - font-size: .85em; - line-height: 1.2em; - overflow: auto; - max-height: 200px; - cursor: pointer; -} -.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav { - display: block; - min-width: 230px; - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li:last-child { - padding-right: 0; - border-right: none; -} -.swagger-section .swagger-ui-wrap .model-signature ul.signature-nav li { - float: left; - margin: 0 5px 5px 0; - padding: 2px 5px 2px 0; - border-right: 1px solid #ddd; -} -.swagger-section .swagger-ui-wrap .model-signature .propOpt { - color: #555; -} -.swagger-section .swagger-ui-wrap .model-signature .snippet small { - font-size: 0.75em; -} -.swagger-section .swagger-ui-wrap .model-signature .propOptKey { - font-style: italic; -} -.swagger-section .swagger-ui-wrap .model-signature .description .strong { - font-weight: bold; - color: #000; - font-size: .9em; -} -.swagger-section .swagger-ui-wrap .model-signature .description div { - font-size: 0.9em; - line-height: 1.5em; - margin-left: 1em; -} -.swagger-section .swagger-ui-wrap .model-signature .description .stronger { - font-weight: bold; - color: #000; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper { - border-spacing: 0; - position: absolute; - background-color: #ffffff; - border: 1px solid #bbbbbb; - display: none; - font-size: 11px; - max-width: 400px; - line-height: 30px; - color: black; - padding: 5px; - margin-left: 10px; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper th { - text-align: center; - background-color: #eeeeee; - border: 1px solid #bbbbbb; - font-size: 11px; - color: #666666; - font-weight: bold; - padding: 5px; - line-height: 15px; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propWrap .optionsWrapper .optionName { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:first-child, -.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:last-child { - display: inline; -} -.swagger-section .swagger-ui-wrap .model-signature .description .propDesc.markdown > p:not(:first-child):before { - display: block; - content: ''; -} -.swagger-section .swagger-ui-wrap .model-signature .description span:last-of-type.propDesc.markdown > p:only-child { - margin-right: -3px; -} -.swagger-section .swagger-ui-wrap .model-signature .propName { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .model-signature .signature-container { - clear: both; -} -.swagger-section .swagger-ui-wrap .body-textarea { - width: 300px; - height: 100px; - border: 1px solid #aaa; -} -.swagger-section .swagger-ui-wrap .markdown p code, -.swagger-section .swagger-ui-wrap .markdown li code { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - background-color: #f0f0f0; - color: black; - padding: 1px 3px; -} -.swagger-section .swagger-ui-wrap .required { - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .editor_holder { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap .editor_holder label { - font-weight: normal!important; - /* JSONEditor uses bold by default for all labels, we revert that back to normal to not give the impression that by default fields are required */ -} -.swagger-section .swagger-ui-wrap .editor_holder label.required { - font-weight: bold!important; -} -.swagger-section .swagger-ui-wrap input.parameter { - width: 300px; - border: 1px solid #aaa; -} -.swagger-section .swagger-ui-wrap h1 { - color: black; - font-size: 1.5em; - line-height: 1.3em; - padding: 10px 0 10px 0; - font-family: "Droid Sans", sans-serif; - font-weight: bold; -} -.swagger-section .swagger-ui-wrap .heading_with_menu { - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap .heading_with_menu ul { - display: block; - clear: none; - float: right; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; - margin-top: 10px; -} -.swagger-section .swagger-ui-wrap h2 { - color: black; - font-size: 1.3em; - padding: 10px 0 10px 0; -} -.swagger-section .swagger-ui-wrap h2 a { - color: black; -} -.swagger-section .swagger-ui-wrap h2 span.sub { - font-size: 0.7em; - color: #999999; - font-style: italic; -} -.swagger-section .swagger-ui-wrap h2 span.sub a { - color: #777777; -} -.swagger-section .swagger-ui-wrap span.weak { - color: #666666; -} -.swagger-section .swagger-ui-wrap .message-success { - color: #89BF04; -} -.swagger-section .swagger-ui-wrap caption, -.swagger-section .swagger-ui-wrap th, -.swagger-section .swagger-ui-wrap td { - text-align: left; - font-weight: normal; - vertical-align: middle; -} -.swagger-section .swagger-ui-wrap .code { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.text textarea { - font-family: "Droid Sans", sans-serif; - height: 250px; - padding: 4px; - display: block; - clear: both; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.select select { - display: block; - clear: both; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean { - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean label { - display: block; - float: left; - clear: none; - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.boolean input { - display: block; - float: left; - clear: none; - margin: 0 5px 0 0; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li.required label { - color: black; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label { - display: block; - clear: both; - width: auto; - padding: 0 0 3px; - color: #666666; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li label abbr { - padding-left: 3px; - color: #888888; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.inputs ol li p.inline-hints { - margin-left: 0; - font-style: italic; - font-size: 0.9em; - margin: 0; -} -.swagger-section .swagger-ui-wrap form.formtastic fieldset.buttons { - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap span.blank, -.swagger-section .swagger-ui-wrap span.empty { - color: #888888; - font-style: italic; -} -.swagger-section .swagger-ui-wrap .markdown h3 { - color: #547f00; -} -.swagger-section .swagger-ui-wrap .markdown h4 { - color: #666666; -} -.swagger-section .swagger-ui-wrap .markdown pre { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - background-color: #fcf6db; - border: 1px solid #e5e0c6; - padding: 10px; - margin: 0 0 10px 0; -} -.swagger-section .swagger-ui-wrap .markdown pre code { - line-height: 1.6em; - overflow: auto; -} -.swagger-section .swagger-ui-wrap div.gist { - margin: 20px 0 25px 0 !important; -} -.swagger-section .swagger-ui-wrap ul#resources { - font-family: "Droid Sans", sans-serif; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource { - border-bottom: 1px solid #dddddd; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading h2 a, -.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading h2 a { - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource:hover div.heading ul.options li a, -.swagger-section .swagger-ui-wrap ul#resources li.resource.active div.heading ul.options li a { - color: #555555; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource:last-child { - border-bottom: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading { - border: 1px solid transparent; - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options { - overflow: hidden; - padding: 0; - display: block; - clear: none; - float: right; - margin: 14px 10px 0 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li { - float: left; - clear: none; - margin: 0; - padding: 2px 10px; - border-right: 1px solid #dddddd; - color: #666666; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a { - color: #aaaaaa; - text-decoration: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover { - text-decoration: underline; - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:hover, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a:active, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li a.active { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options li.last { - padding-right: 0; - border-right: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading ul.options.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 { - color: #999999; - padding-left: 0; - display: block; - clear: none; - float: left; - font-family: "Droid Sans", sans-serif; - font-weight: bold; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a { - color: #999999; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover { - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation { - float: none; - clear: both; - overflow: hidden; - display: block; - margin: 0 0 10px; - padding: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading { - float: none; - clear: both; - overflow: hidden; - display: block; - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 { - display: block; - clear: none; - float: left; - width: auto; - margin: 0; - padding: 0; - line-height: 1.1em; - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path { - padding-left: 10px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a { - color: black; - text-decoration: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a.toggleOperation.deprecated { - text-decoration: line-through; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.path a:hover { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span.http_method a { - text-transform: uppercase; - text-decoration: none; - color: white; - display: inline-block; - width: 50px; - font-size: 0.7em; - text-align: center; - padding: 7px 0 4px; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - -o-border-radius: 2px; - -ms-border-radius: 2px; - -khtml-border-radius: 2px; - border-radius: 2px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading h3 span { - margin: 0; - padding: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options { - overflow: hidden; - padding: 0; - display: block; - clear: none; - float: right; - margin: 6px 10px 0 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li { - float: left; - clear: none; - margin: 0; - padding: 2px 10px; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a { - text-decoration: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li a .markdown p { - color: inherit; - padding: 0; - line-height: inherit; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.heading ul.options li.access { - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content { - border-top: none; - padding: 10px; - -moz-border-radius-bottomleft: 6px; - -webkit-border-bottom-left-radius: 6px; - -o-border-bottom-left-radius: 6px; - -ms-border-bottom-left-radius: 6px; - -khtml-border-bottom-left-radius: 6px; - border-bottom-left-radius: 6px; - -moz-border-radius-bottomright: 6px; - -webkit-border-bottom-right-radius: 6px; - -o-border-bottom-right-radius: 6px; - -ms-border-bottom-right-radius: 6px; - -khtml-border-bottom-right-radius: 6px; - border-bottom-right-radius: 6px; - margin: 0 0 20px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content h4 { - font-size: 1.1em; - margin: 0; - padding: 15px 0 5px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header { - float: none; - clear: both; - overflow: hidden; - display: block; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header a { - padding: 4px 0 0 10px; - display: inline-block; - font-size: 0.9em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header input.submit { - display: block; - clear: none; - float: left; - padding: 6px 8px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.sandbox_header span.response_throbber { - background-image: url(<%= asset_path('swagger-ui/images/throbber.gif') %>); - width: 128px; - height: 16px; - display: block; - clear: none; - float: right; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form input[type='text'].error { - outline: 2px solid black; - outline-color: #cc0000; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content form select[name='parameterContentType'] { - max-width: 300px; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation div.content div.response div.block pre { - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - padding: 10px; - font-size: 0.9em; - max-height: 400px; - overflow-y: auto; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading { - background-color: #f9f2e9; - border: 1px solid #f0e0ca; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading h3 span.http_method a { - background-color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #f0e0ca; - color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li a { - color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content { - background-color: #faf5ee; - border: 1px solid #f0e0ca; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content h4 { - color: #c5862b; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content div.sandbox_header a { - color: #dcb67f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading { - background-color: #fcffcd; - border: 1px solid black; - border-color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading h3 span.http_method a { - text-transform: uppercase; - background-color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #ffd20f; - color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li a { - color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content { - background-color: #fcffcd; - border: 1px solid black; - border-color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content h4 { - color: #ffd20f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content div.sandbox_header a { - color: #6fc992; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading { - background-color: #f5e8e8; - border: 1px solid #e8c6c7; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading h3 span.http_method a { - text-transform: uppercase; - background-color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #e8c6c7; - color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li a { - color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { - background-color: #f7eded; - border: 1px solid #e8c6c7; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content h4 { - color: #a41e22; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content div.sandbox_header a { - color: #c8787a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading { - background-color: #e7f6ec; - border: 1px solid #c3e8d1; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading h3 span.http_method a { - background-color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #c3e8d1; - color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li a { - color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content { - background-color: #ebf7f0; - border: 1px solid #c3e8d1; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content h4 { - color: #10a54a; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content div.sandbox_header a { - color: #6fc992; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading { - background-color: #FCE9E3; - border: 1px solid #F5D5C3; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading h3 span.http_method a { - background-color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #f0cecb; - color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li a { - color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content { - background-color: #faf0ef; - border: 1px solid #f0cecb; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content h4 { - color: #D38042; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content div.sandbox_header a { - color: #dcb67f; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading { - background-color: #e7f0f7; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading h3 span.http_method a { - background-color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #c3d9ec; - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li a { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content { - background-color: #ebf3f9; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content h4 { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content div.sandbox_header a { - color: #6fa5d2; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading { - background-color: #e7f0f7; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading h3 span.http_method a { - background-color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li { - border-right: 1px solid #dddddd; - border-right-color: #c3d9ec; - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.heading ul.options li a { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content { - background-color: #ebf3f9; - border: 1px solid #c3d9ec; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content h4 { - color: #0f6ab4; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.options div.content div.sandbox_header a { - color: #6fa5d2; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.content, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.content { - border-top: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li:last-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.get div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.post div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.head div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.put div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.patch div.heading ul.options li.last, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations li.operation.delete div.heading ul.options li.last { - padding-right: 0; - border-right: none; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:hover, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a:active, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li a.active { - text-decoration: underline; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations ul.options li.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations:first-child, -.swagger-section .swagger-ui-wrap ul#resources li.resource ul.endpoints li.endpoint ul.operations.first { - padding-left: 0; -} -.swagger-section .swagger-ui-wrap p#colophon { - margin: 0 15px 40px 15px; - padding: 10px 0; - font-size: 0.8em; - border-top: 1px solid #dddddd; - font-family: "Droid Sans", sans-serif; - color: #999999; - font-style: italic; -} -.swagger-section .swagger-ui-wrap p#colophon a { - text-decoration: none; - color: #547f00; -} -.swagger-section .swagger-ui-wrap h3 { - color: black; - font-size: 1.1em; - padding: 10px 0 10px 0; -} -.swagger-section .swagger-ui-wrap .markdown ol, -.swagger-section .swagger-ui-wrap .markdown ul { - font-family: "Droid Sans", sans-serif; - margin: 5px 0 10px; - padding: 0 0 0 18px; - list-style-type: disc; -} -.swagger-section .swagger-ui-wrap form.form_box { - background-color: #ebf3f9; - border: 1px solid #c3d9ec; - padding: 10px; -} -.swagger-section .swagger-ui-wrap form.form_box label { - color: #0f6ab4 !important; -} -.swagger-section .swagger-ui-wrap form.form_box input[type=submit] { - display: block; - padding: 10px; -} -.swagger-section .swagger-ui-wrap form.form_box p.weak { - font-size: 0.8em; -} -.swagger-section .swagger-ui-wrap form.form_box p { - font-size: 0.9em; - padding: 0 0 15px; - color: #7e7b6d; -} -.swagger-section .swagger-ui-wrap form.form_box p a { - color: #646257; -} -.swagger-section .swagger-ui-wrap form.form_box p strong { - color: black; -} -.swagger-section .swagger-ui-wrap .operation-status td.markdown > p:last-child { - padding-bottom: 0; -} -.swagger-section .title { - font-style: bold; -} -.swagger-section .secondary_form { - display: none; -} -.swagger-section .main_image { - display: block; - margin-left: auto; - margin-right: auto; -} -.swagger-section .oauth_body { - margin-left: 100px; - margin-right: 100px; -} -.swagger-section .oauth_submit { - text-align: center; - display: inline-block; -} -.swagger-section .authorize-wrapper { - margin: 15px 0 10px; -} -.swagger-section .authorize-wrapper_operation { - float: right; -} -.swagger-section .authorize__btn:hover { - text-decoration: underline; - cursor: pointer; -} -.swagger-section .authorize__btn_operation:hover .authorize-scopes { - display: block; -} -.swagger-section .authorize-scopes { - position: absolute; - margin-top: 20px; - background: #FFF; - border: 1px solid #ccc; - border-radius: 5px; - display: none; - font-size: 13px; - max-width: 300px; - line-height: 30px; - color: black; - padding: 5px; -} -.swagger-section .authorize-scopes .authorize__scope { - text-decoration: none; -} -.swagger-section .authorize__btn_operation { - height: 18px; - vertical-align: middle; - display: inline-block; - background: url(<%= asset_path('swagger-ui/images/explorer_icons.png') %>) no-repeat; -} -.swagger-section .authorize__btn_operation_login { - background-position: 0 0; - width: 18px; - margin-top: -6px; - margin-left: 4px; -} -.swagger-section .authorize__btn_operation_logout { - background-position: -30px 0; - width: 18px; - margin-top: -6px; - margin-left: 4px; -} -.swagger-section #auth_container { - color: #fff; - display: inline-block; - border: none; - padding: 5px; - width: 87px; - height: 13px; -} -.swagger-section #auth_container .authorize__btn { - color: #fff; -} -.swagger-section .auth_container { - padding: 0 0 10px; - margin-bottom: 5px; - border-bottom: solid 1px #CCC; - font-size: 0.9em; -} -.swagger-section .auth_container .auth__title { - color: #547f00; - font-size: 1.2em; -} -.swagger-section .auth_container .basic_auth__label { - display: inline-block; - width: 60px; -} -.swagger-section .auth_container .auth__description { - color: #999999; - margin-bottom: 5px; -} -.swagger-section .auth_container .auth__button { - margin-top: 10px; - height: 30px; -} -.swagger-section .auth_container .key_auth__field { - margin: 5px 0; -} -.swagger-section .auth_container .key_auth__label { - display: inline-block; - width: 60px; -} -.swagger-section .api-popup-dialog { - position: absolute; - display: none; -} -.swagger-section .api-popup-dialog-wrapper { - z-index: 1000; - width: 500px; - background: #FFF; - padding: 20px; - border: 1px solid #ccc; - border-radius: 5px; - font-size: 13px; - color: #777; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} -.swagger-section .api-popup-dialog-shadow { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 0.2; - background-color: gray; - z-index: 900; -} -.swagger-section .api-popup-dialog .api-popup-title { - font-size: 24px; - padding: 10px 0; -} -.swagger-section .api-popup-dialog .api-popup-title { - font-size: 24px; - padding: 10px 0; -} -.swagger-section .api-popup-dialog .error-msg { - padding-left: 5px; - padding-bottom: 5px; -} -.swagger-section .api-popup-dialog .api-popup-content { - max-height: 500px; - overflow-y: auto; -} -.swagger-section .api-popup-dialog .api-popup-authbtn { - height: 30px; -} -.swagger-section .api-popup-dialog .api-popup-cancel { - height: 30px; -} -.swagger-section .api-popup-scopes { - padding: 10px 20px; -} -.swagger-section .api-popup-scopes li { - padding: 5px 0; - line-height: 20px; -} -.swagger-section .api-popup-scopes li input { - position: relative; - top: 2px; -} -.swagger-section .api-popup-scopes .api-scope-desc { - padding-left: 20px; - font-style: italic; -} -.swagger-section .api-popup-actions { - padding-top: 10px; -} -.swagger-section .access { - float: right; -} -.swagger-section .auth { - float: right; -} -.swagger-section .api-ic { - height: 18px; - vertical-align: middle; - display: inline-block; - background: url(<%= asset_path('swagger-ui/images/explorer_icons.png') %>) no-repeat; -} -.swagger-section .api-ic .api_information_panel { - position: relative; - margin-top: 20px; - margin-left: -5px; - background: #FFF; - border: 1px solid #ccc; - border-radius: 5px; - display: none; - font-size: 13px; - max-width: 300px; - line-height: 30px; - color: black; - padding: 5px; -} -.swagger-section .api-ic .api_information_panel p .api-msg-enabled { - color: green; -} -.swagger-section .api-ic .api_information_panel p .api-msg-disabled { - color: red; -} -.swagger-section .api-ic:hover .api_information_panel { - position: absolute; - display: block; -} -.swagger-section .ic-info { - background-position: 0 0; - width: 18px; - margin-top: -6px; - margin-left: 4px; -} -.swagger-section .ic-warning { - background-position: -60px 0; - width: 18px; - margin-top: -6px; - margin-left: 4px; -} -.swagger-section .ic-error { - background-position: -30px 0; - width: 18px; - margin-top: -6px; - margin-left: 4px; -} -.swagger-section .ic-off { - background-position: -90px 0; - width: 58px; - margin-top: -4px; - cursor: pointer; -} -.swagger-section .ic-on { - background-position: -160px 0; - width: 58px; - margin-top: -4px; - cursor: pointer; -} -.swagger-section #header { - background-color: #89bf04; - padding: 9px 14px 19px 14px; - height: 23px; - min-width: 775px; -} -.swagger-section #input_baseUrl { - width: 400px; -} -.swagger-section #api_selector { - display: block; - clear: none; - float: right; -} -.swagger-section #api_selector .input { - display: inline-block; - clear: none; - margin: 0 10px 0 0; -} -.swagger-section #api_selector input { - font-size: 0.9em; - padding: 3px; - margin: 0; -} -.swagger-section #input_apiKey { - width: 200px; -} -.swagger-section #explore, -.swagger-section #auth_container .authorize__btn { - display: block; - text-decoration: none; - font-weight: bold; - padding: 6px 8px; - font-size: 0.9em; - color: white; - background-color: #547f00; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - -o-border-radius: 4px; - -ms-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; -} -.swagger-section #explore:hover, -.swagger-section #auth_container .authorize__btn:hover { - background-color: #547f00; -} -.swagger-section #header #logo { - font-size: 1.5em; - font-weight: bold; - text-decoration: none; - color: white; -} -.swagger-section #header #logo .logo__img { - display: block; - float: left; - margin-top: 2px; -} -.swagger-section #header #logo .logo__title { - display: inline-block; - padding: 5px 0 0 10px; -} -.swagger-section #content_message { - margin: 10px 15px; - font-style: italic; - color: #999999; -} -.swagger-section #message-bar { - min-height: 30px; - text-align: center; - padding-top: 10px; -} -.swagger-section .swagger-collapse:before { - content: "-"; -} -.swagger-section .swagger-expand:before { - content: "+"; -} -.swagger-section .error { - outline-color: #cc0000; - background-color: #f2dede; -} diff --git a/rswag-ui/vendor/assets/components/swagger-ui/css/style.css.erb b/rswag-ui/vendor/assets/components/swagger-ui/css/style.css.erb deleted file mode 100644 index 7667578..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/css/style.css.erb +++ /dev/null @@ -1,250 +0,0 @@ -.swagger-section #header a#logo { - font-size: 1.5em; - font-weight: bold; - text-decoration: none; - background: transparent url(<%= asset_path('swagger-ui/images/logo.png') %>) no-repeat left center; - padding: 20px 0 20px 40px; -} -#text-head { - font-size: 80px; - font-family: 'Roboto', sans-serif; - color: #ffffff; - float: right; - margin-right: 20%; -} -.navbar-fixed-top .navbar-nav { - height: auto; -} -.navbar-fixed-top .navbar-brand { - height: auto; -} -.navbar-header { - height: auto; -} -.navbar-inverse { - background-color: #000; - border-color: #000; -} -#navbar-brand { - margin-left: 20%; -} -.navtext { - font-size: 10px; -} -.h1, -h1 { - font-size: 60px; -} -.navbar-default .navbar-header .navbar-brand { - color: #a2dfee; -} -/* tag titles */ -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a { - color: #393939; - font-family: 'Arvo', serif; - font-size: 1.5em; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 a:hover { - color: black; -} -.swagger-section .swagger-ui-wrap ul#resources li.resource div.heading h2 { - color: #525252; - padding-left: 0px; - display: block; - clear: none; - float: left; - font-family: 'Arvo', serif; - font-weight: bold; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #0A0A0A; -} -.container1 { - width: 1500px; - margin: auto; - margin-top: 0; - background-image: url(<%= asset_path('swagger-ui/images/shield.png') %>); - background-repeat: no-repeat; - background-position: -40px -20px; - margin-bottom: 210px; -} -.container-inner { - width: 1200px; - margin: auto; - background-color: rgba(223, 227, 228, 0.75); - padding-bottom: 40px; - padding-top: 40px; - border-radius: 15px; -} -.header-content { - padding: 0; - width: 1000px; -} -.title1 { - font-size: 80px; - font-family: 'Vollkorn', serif; - color: #404040; - text-align: center; - padding-top: 40px; - padding-bottom: 100px; -} -#icon { - margin-top: -18px; -} -.subtext { - font-size: 25px; - font-style: italic; - color: #08b; - text-align: right; - padding-right: 250px; -} -.bg-primary { - background-color: #00468b; -} -.navbar-default .nav > li > a, -.navbar-default .nav > li > a:focus { - color: #08b; -} -.navbar-default .nav > li > a, -.navbar-default .nav > li > a:hover { - color: #08b; -} -.navbar-default .nav > li > a, -.navbar-default .nav > li > a:focus:hover { - color: #08b; -} -.text-faded { - font-size: 25px; - font-family: 'Vollkorn', serif; -} -.section-heading { - font-family: 'Vollkorn', serif; - font-size: 45px; - padding-bottom: 10px; -} -hr { - border-color: #00468b; - padding-bottom: 10px; -} -.description { - margin-top: 20px; - padding-bottom: 200px; -} -.description li { - font-family: 'Vollkorn', serif; - font-size: 25px; - color: #525252; - margin-left: 28%; - padding-top: 5px; -} -.gap { - margin-top: 200px; -} -.troubleshootingtext { - color: rgba(255, 255, 255, 0.7); - padding-left: 30%; -} -.troubleshootingtext li { - list-style-type: circle; - font-size: 25px; - padding-bottom: 5px; -} -.overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 1000; -} -.block.response_body.json:hover { - cursor: pointer; -} -.backdrop { - color: blue; -} -#myModal { - height: 100%; -} -.modal-backdrop { - bottom: 0; - position: fixed; -} -.curl { - padding: 10px; - font-family: "Anonymous Pro", "Menlo", "Consolas", "Bitstream Vera Sans Mono", "Courier New", monospace; - font-size: 0.9em; - max-height: 400px; - margin-top: 5px; - overflow-y: auto; - background-color: #fcf6db; - border: 1px solid #e5e0c6; - border-radius: 4px; -} -.curl_title { - font-size: 1.1em; - margin: 0; - padding: 15px 0 5px; - font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif; - font-weight: 500; - line-height: 1.1; -} -.footer { - display: none; -} -.swagger-section .swagger-ui-wrap h2 { - padding: 0; -} -h2 { - margin: 0; - margin-bottom: 5px; -} -.markdown p { - font-size: 15px; - font-family: 'Arvo', serif; -} -.swagger-section .swagger-ui-wrap .code { - font-size: 15px; - font-family: 'Arvo', serif; -} -.swagger-section .swagger-ui-wrap b { - font-family: 'Arvo', serif; -} -#signin:hover { - cursor: pointer; -} -.dropdown-menu { - padding: 15px; -} -.navbar-right .dropdown-menu { - left: 0; - right: auto; -} -#signinbutton { - width: 100%; - height: 32px; - font-size: 13px; - font-weight: bold; - color: #08b; -} -.navbar-default .nav > li .details { - color: #000000; - text-transform: none; - font-size: 15px; - font-weight: normal; - font-family: 'Open Sans', sans-serif; - font-style: italic; - line-height: 20px; - top: -2px; -} -.navbar-default .nav > li .details:hover { - color: black; -} -#signout { - width: 100%; - height: 32px; - font-size: 13px; - font-weight: bold; - color: #08b; -} diff --git a/rswag-ui/vendor/assets/components/swagger-ui/css/typography.css.erb b/rswag-ui/vendor/assets/components/swagger-ui/css/typography.css.erb deleted file mode 100644 index 76b1410..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/css/typography.css.erb +++ /dev/null @@ -1,14 +0,0 @@ -/* Google Font's Droid Sans */ -@font-face { - font-family: 'Droid Sans'; - font-style: normal; - font-weight: 400; - src: local('Droid Sans'), local('DroidSans'), url(<%= asset_path('swagger-ui/fonts/DroidSans.ttf') %>), format('truetype'); -} -/* Google Font's Droid Sans Bold */ -@font-face { - font-family: 'Droid Sans'; - font-style: normal; - font-weight: 700; - src: local('Droid Sans Bold'), local('DroidSans-Bold'), url(<%= asset_path('swagger-ui/fonts/DroidSans-Bold.ttf') %>), format('truetype'); -} diff --git a/rswag-ui/vendor/assets/components/swagger-ui/fonts/DroidSans-Bold.ttf b/rswag-ui/vendor/assets/components/swagger-ui/fonts/DroidSans-Bold.ttf deleted file mode 100644 index 036c4d1..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/fonts/DroidSans-Bold.ttf and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/fonts/DroidSans.ttf b/rswag-ui/vendor/assets/components/swagger-ui/fonts/DroidSans.ttf deleted file mode 100644 index e517a0c..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/fonts/DroidSans.ttf and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/collapse.gif b/rswag-ui/vendor/assets/components/swagger-ui/images/collapse.gif deleted file mode 100644 index 8843e8c..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/collapse.gif and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/expand.gif b/rswag-ui/vendor/assets/components/swagger-ui/images/expand.gif deleted file mode 100644 index 477bf13..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/expand.gif and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/explorer_icons.png b/rswag-ui/vendor/assets/components/swagger-ui/images/explorer_icons.png deleted file mode 100644 index be43b27..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/explorer_icons.png and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/favicon-16x16.png b/rswag-ui/vendor/assets/components/swagger-ui/images/favicon-16x16.png deleted file mode 100755 index 0f7e13b..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/favicon-16x16.png and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/favicon-32x32.png b/rswag-ui/vendor/assets/components/swagger-ui/images/favicon-32x32.png deleted file mode 100755 index b0a3352..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/favicon-32x32.png and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/favicon.ico b/rswag-ui/vendor/assets/components/swagger-ui/images/favicon.ico deleted file mode 100755 index 8b60bcf..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/favicon.ico and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/logo_small.png b/rswag-ui/vendor/assets/components/swagger-ui/images/logo_small.png deleted file mode 100644 index ce3908e..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/logo_small.png and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/pet_store_api.png b/rswag-ui/vendor/assets/components/swagger-ui/images/pet_store_api.png deleted file mode 100644 index 1192ad8..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/pet_store_api.png and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/throbber.gif b/rswag-ui/vendor/assets/components/swagger-ui/images/throbber.gif deleted file mode 100644 index 0639388..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/throbber.gif and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/images/wordnik_api.png b/rswag-ui/vendor/assets/components/swagger-ui/images/wordnik_api.png deleted file mode 100644 index dc0ddab..0000000 Binary files a/rswag-ui/vendor/assets/components/swagger-ui/images/wordnik_api.png and /dev/null differ diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/ca.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/ca.js deleted file mode 100644 index f8c815a..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/ca.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Advertència: Obsolet", - "Implementation Notes":"Notes d'implementació", - "Response Class":"Classe de la Resposta", - "Status":"Estatus", - "Parameters":"Paràmetres", - "Parameter":"Paràmetre", - "Value":"Valor", - "Description":"Descripció", - "Parameter Type":"Tipus del Paràmetre", - "Data Type":"Tipus de la Dada", - "Response Messages":"Missatges de la Resposta", - "HTTP Status Code":"Codi d'Estatus HTTP", - "Reason":"Raó", - "Response Model":"Model de la Resposta", - "Request URL":"URL de la Sol·licitud", - "Response Body":"Cos de la Resposta", - "Response Code":"Codi de la Resposta", - "Response Headers":"Capçaleres de la Resposta", - "Hide Response":"Amagar Resposta", - "Try it out!":"Prova-ho!", - "Show/Hide":"Mostrar/Amagar", - "List Operations":"Llista Operacions", - "Expand Operations":"Expandir Operacions", - "Raw":"Cru", - "can't parse JSON. Raw result":"no puc analitzar el JSON. Resultat cru", - "Example Value":"Valor d'Exemple", - "Model Schema":"Esquema del Model", - "Model":"Model", - "apply":"aplicar", - "Username":"Nom d'usuari", - "Password":"Contrasenya", - "Terms of service":"Termes del servei", - "Created by":"Creat per", - "See more at":"Veure més en", - "Contact the developer":"Contactar amb el desenvolupador", - "api version":"versió de la api", - "Response Content Type":"Tipus de Contingut de la Resposta", - "fetching resource":"recollint recurs", - "fetching resource list":"recollins llista de recursos", - "Explore":"Explorant", - "Show Swagger Petstore Example Apis":"Mostrar API d'Exemple Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"No es pot llegir del servidor. Potser no teniu la configuració de control d'accés apropiada.", - "Please specify the protocol for":"Si us plau, especifiqueu el protocol per a", - "Can't read swagger JSON from":"No es pot llegir el JSON de swagger des de", - "Finished Loading Resource Information. Rendering Swagger UI":"Finalitzada la càrrega del recurs informatiu. Renderitzant Swagger UI", - "Unable to read api":"No es pot llegir l'api", - "from path":"des de la ruta", - "server returned":"el servidor ha retornat" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/en.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/en.js deleted file mode 100644 index 9183136..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/en.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Warning: Deprecated", - "Implementation Notes":"Implementation Notes", - "Response Class":"Response Class", - "Status":"Status", - "Parameters":"Parameters", - "Parameter":"Parameter", - "Value":"Value", - "Description":"Description", - "Parameter Type":"Parameter Type", - "Data Type":"Data Type", - "Response Messages":"Response Messages", - "HTTP Status Code":"HTTP Status Code", - "Reason":"Reason", - "Response Model":"Response Model", - "Request URL":"Request URL", - "Response Body":"Response Body", - "Response Code":"Response Code", - "Response Headers":"Response Headers", - "Hide Response":"Hide Response", - "Headers":"Headers", - "Try it out!":"Try it out!", - "Show/Hide":"Show/Hide", - "List Operations":"List Operations", - "Expand Operations":"Expand Operations", - "Raw":"Raw", - "can't parse JSON. Raw result":"can't parse JSON. Raw result", - "Example Value":"Example Value", - "Model Schema":"Model Schema", - "Model":"Model", - "Click to set as parameter value":"Click to set as parameter value", - "apply":"apply", - "Username":"Username", - "Password":"Password", - "Terms of service":"Terms of service", - "Created by":"Created by", - "See more at":"See more at", - "Contact the developer":"Contact the developer", - "api version":"api version", - "Response Content Type":"Response Content Type", - "Parameter content type:":"Parameter content type:", - "fetching resource":"fetching resource", - "fetching resource list":"fetching resource list", - "Explore":"Explore", - "Show Swagger Petstore Example Apis":"Show Swagger Petstore Example Apis", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Can't read from server. It may not have the appropriate access-control-origin settings.", - "Please specify the protocol for":"Please specify the protocol for", - "Can't read swagger JSON from":"Can't read swagger JSON from", - "Finished Loading Resource Information. Rendering Swagger UI":"Finished Loading Resource Information. Rendering Swagger UI", - "Unable to read api":"Unable to read api", - "from path":"from path", - "server returned":"server returned" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/es.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/es.js deleted file mode 100644 index 13fa015..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/es.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Advertencia: Obsoleto", - "Implementation Notes":"Notas de implementación", - "Response Class":"Clase de la Respuesta", - "Status":"Status", - "Parameters":"Parámetros", - "Parameter":"Parámetro", - "Value":"Valor", - "Description":"Descripción", - "Parameter Type":"Tipo del Parámetro", - "Data Type":"Tipo del Dato", - "Response Messages":"Mensajes de la Respuesta", - "HTTP Status Code":"Código de Status HTTP", - "Reason":"Razón", - "Response Model":"Modelo de la Respuesta", - "Request URL":"URL de la Solicitud", - "Response Body":"Cuerpo de la Respuesta", - "Response Code":"Código de la Respuesta", - "Response Headers":"Encabezados de la Respuesta", - "Hide Response":"Ocultar Respuesta", - "Try it out!":"Pruébalo!", - "Show/Hide":"Mostrar/Ocultar", - "List Operations":"Listar Operaciones", - "Expand Operations":"Expandir Operaciones", - "Raw":"Crudo", - "can't parse JSON. Raw result":"no puede parsear el JSON. Resultado crudo", - "Example Value":"Valor de Ejemplo", - "Model Schema":"Esquema del Modelo", - "Model":"Modelo", - "apply":"aplicar", - "Username":"Nombre de usuario", - "Password":"Contraseña", - "Terms of service":"Términos de Servicio", - "Created by":"Creado por", - "See more at":"Ver más en", - "Contact the developer":"Contactar al desarrollador", - "api version":"versión de la api", - "Response Content Type":"Tipo de Contenido (Content Type) de la Respuesta", - "fetching resource":"buscando recurso", - "fetching resource list":"buscando lista del recurso", - "Explore":"Explorar", - "Show Swagger Petstore Example Apis":"Mostrar Api Ejemplo de Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"No se puede leer del servidor. Tal vez no tiene la configuración de control de acceso de origen (access-control-origin) apropiado.", - "Please specify the protocol for":"Por favor, especificar el protocola para", - "Can't read swagger JSON from":"No se puede leer el JSON de swagger desde", - "Finished Loading Resource Information. Rendering Swagger UI":"Finalizada la carga del recurso de Información. Mostrando Swagger UI", - "Unable to read api":"No se puede leer la api", - "from path":"desde ruta", - "server returned":"el servidor retornó" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/fr.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/fr.js deleted file mode 100644 index 388dff1..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/fr.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Avertissement : Obsolète", - "Implementation Notes":"Notes d'implémentation", - "Response Class":"Classe de la réponse", - "Status":"Statut", - "Parameters":"Paramètres", - "Parameter":"Paramètre", - "Value":"Valeur", - "Description":"Description", - "Parameter Type":"Type du paramètre", - "Data Type":"Type de données", - "Response Messages":"Messages de la réponse", - "HTTP Status Code":"Code de statut HTTP", - "Reason":"Raison", - "Response Model":"Modèle de réponse", - "Request URL":"URL appelée", - "Response Body":"Corps de la réponse", - "Response Code":"Code de la réponse", - "Response Headers":"En-têtes de la réponse", - "Hide Response":"Cacher la réponse", - "Headers":"En-têtes", - "Try it out!":"Testez !", - "Show/Hide":"Afficher/Masquer", - "List Operations":"Liste des opérations", - "Expand Operations":"Développer les opérations", - "Raw":"Brut", - "can't parse JSON. Raw result":"impossible de décoder le JSON. Résultat brut", - "Example Value":"Exemple la valeur", - "Model Schema":"Définition du modèle", - "Model":"Modèle", - "apply":"appliquer", - "Username":"Nom d'utilisateur", - "Password":"Mot de passe", - "Terms of service":"Conditions de service", - "Created by":"Créé par", - "See more at":"Voir plus sur", - "Contact the developer":"Contacter le développeur", - "api version":"version de l'api", - "Response Content Type":"Content Type de la réponse", - "fetching resource":"récupération de la ressource", - "fetching resource list":"récupération de la liste de ressources", - "Explore":"Explorer", - "Show Swagger Petstore Example Apis":"Montrer les Apis de l'exemple Petstore de Swagger", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Impossible de lire à partir du serveur. Il se peut que les réglages access-control-origin ne soient pas appropriés.", - "Please specify the protocol for":"Veuillez spécifier un protocole pour", - "Can't read swagger JSON from":"Impossible de lire le JSON swagger à partir de", - "Finished Loading Resource Information. Rendering Swagger UI":"Chargement des informations terminé. Affichage de Swagger UI", - "Unable to read api":"Impossible de lire l'api", - "from path":"à partir du chemin", - "server returned":"réponse du serveur" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/geo.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/geo.js deleted file mode 100644 index 609c20d..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/geo.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"ყურადღება: აღარ გამოიყენება", - "Implementation Notes":"იმპლემენტაციის აღწერა", - "Response Class":"რესპონს კლასი", - "Status":"სტატუსი", - "Parameters":"პარამეტრები", - "Parameter":"პარამეტრი", - "Value":"მნიშვნელობა", - "Description":"აღწერა", - "Parameter Type":"პარამეტრის ტიპი", - "Data Type":"მონაცემის ტიპი", - "Response Messages":"პასუხი", - "HTTP Status Code":"HTTP სტატუსი", - "Reason":"მიზეზი", - "Response Model":"რესპონს მოდელი", - "Request URL":"მოთხოვნის URL", - "Response Body":"პასუხის სხეული", - "Response Code":"პასუხის კოდი", - "Response Headers":"პასუხის ჰედერები", - "Hide Response":"დამალე პასუხი", - "Headers":"ჰედერები", - "Try it out!":"ცადე !", - "Show/Hide":"გამოჩენა/დამალვა", - "List Operations":"ოპერაციების სია", - "Expand Operations":"ოპერაციები ვრცლად", - "Raw":"ნედლი", - "can't parse JSON. Raw result":"JSON-ის დამუშავება ვერ მოხერხდა. ნედლი პასუხი", - "Example Value":"მაგალითი", - "Model Schema":"მოდელის სტრუქტურა", - "Model":"მოდელი", - "Click to set as parameter value":"პარამეტრისთვის მნიშვნელობის მისანიჭებლად, დააკლიკე", - "apply":"გამოყენება", - "Username":"მოხმარებელი", - "Password":"პაროლი", - "Terms of service":"მომსახურების პირობები", - "Created by":"შექმნა", - "See more at":"ნახე ვრცლად", - "Contact the developer":"დაუკავშირდი დეველოპერს", - "api version":"api ვერსია", - "Response Content Type":"პასუხის კონტენტის ტიპი", - "Parameter content type:":"პარამეტრის კონტენტის ტიპი:", - "fetching resource":"რესურსების მიღება", - "fetching resource list":"რესურსების სიის მიღება", - "Explore":"ნახვა", - "Show Swagger Petstore Example Apis":"ნახე Swagger Petstore სამაგალითო Api", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"სერვერთან დაკავშირება ვერ ხერხდება. შეამოწმეთ access-control-origin.", - "Please specify the protocol for":"მიუთითეთ პროტოკოლი", - "Can't read swagger JSON from":"swagger JSON წაკითხვა ვერ მოხერხდა", - "Finished Loading Resource Information. Rendering Swagger UI":"რესურსების ჩატვირთვა სრულდება. Swagger UI რენდერდება", - "Unable to read api":"api წაკითხვა ვერ მოხერხდა", - "from path":"მისამართიდან", - "server returned":"სერვერმა დააბრუნა" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/it.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/it.js deleted file mode 100644 index 8529c2a..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/it.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Attenzione: Deprecato", - "Implementation Notes":"Note di implementazione", - "Response Class":"Classe della risposta", - "Status":"Stato", - "Parameters":"Parametri", - "Parameter":"Parametro", - "Value":"Valore", - "Description":"Descrizione", - "Parameter Type":"Tipo di parametro", - "Data Type":"Tipo di dato", - "Response Messages":"Messaggi della risposta", - "HTTP Status Code":"Codice stato HTTP", - "Reason":"Motivo", - "Response Model":"Modello di risposta", - "Request URL":"URL della richiesta", - "Response Body":"Corpo della risposta", - "Response Code":"Oggetto della risposta", - "Response Headers":"Intestazioni della risposta", - "Hide Response":"Nascondi risposta", - "Try it out!":"Provalo!", - "Show/Hide":"Mostra/Nascondi", - "List Operations":"Mostra operazioni", - "Expand Operations":"Espandi operazioni", - "Raw":"Grezzo (raw)", - "can't parse JSON. Raw result":"non è possibile parsare il JSON. Risultato grezzo (raw).", - "Model Schema":"Schema del modello", - "Model":"Modello", - "apply":"applica", - "Username":"Nome utente", - "Password":"Password", - "Terms of service":"Condizioni del servizio", - "Created by":"Creato da", - "See more at":"Informazioni aggiuntive:", - "Contact the developer":"Contatta lo sviluppatore", - "api version":"versione api", - "Response Content Type":"Tipo di contenuto (content type) della risposta", - "fetching resource":"recuperando la risorsa", - "fetching resource list":"recuperando lista risorse", - "Explore":"Esplora", - "Show Swagger Petstore Example Apis":"Mostra le api di esempio di Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Non è possibile leggere dal server. Potrebbe non avere le impostazioni di controllo accesso origine (access-control-origin) appropriate.", - "Please specify the protocol for":"Si prega di specificare il protocollo per", - "Can't read swagger JSON from":"Impossibile leggere JSON swagger da:", - "Finished Loading Resource Information. Rendering Swagger UI":"Lettura informazioni risorse termianta. Swagger UI viene mostrata", - "Unable to read api":"Impossibile leggere la api", - "from path":"da cartella", - "server returned":"il server ha restituito" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/ja.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/ja.js deleted file mode 100755 index 3207bfc..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/ja.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"警告: 廃止予定", - "Implementation Notes":"実装メモ", - "Response Class":"レスポンスクラス", - "Status":"ステータス", - "Parameters":"パラメータ群", - "Parameter":"パラメータ", - "Value":"値", - "Description":"説明", - "Parameter Type":"パラメータタイプ", - "Data Type":"データタイプ", - "Response Messages":"レスポンスメッセージ", - "HTTP Status Code":"HTTPステータスコード", - "Reason":"理由", - "Response Model":"レスポンスモデル", - "Request URL":"リクエストURL", - "Response Body":"レスポンスボディ", - "Response Code":"レスポンスコード", - "Response Headers":"レスポンスヘッダ", - "Hide Response":"レスポンスを隠す", - "Headers":"ヘッダ", - "Try it out!":"実際に実行!", - "Show/Hide":"表示/非表示", - "List Operations":"操作一覧", - "Expand Operations":"操作の展開", - "Raw":"Raw", - "can't parse JSON. Raw result":"JSONへ解釈できません. 未加工の結果", - "Model Schema":"モデルスキーマ", - "Model":"モデル", - "apply":"実行", - "Username":"ユーザ名", - "Password":"パスワード", - "Terms of service":"サービス利用規約", - "Created by":"Created by", - "See more at":"See more at", - "Contact the developer":"開発者に連絡", - "api version":"APIバージョン", - "Response Content Type":"レスポンス コンテンツタイプ", - "fetching resource":"リソースの取得", - "fetching resource list":"リソース一覧の取得", - "Explore":"Explore", - "Show Swagger Petstore Example Apis":"SwaggerペットストアAPIの表示", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"サーバから読み込めません. 適切なaccess-control-origin設定を持っていない可能性があります.", - "Please specify the protocol for":"プロトコルを指定してください", - "Can't read swagger JSON from":"次からswagger JSONを読み込めません", - "Finished Loading Resource Information. Rendering Swagger UI":"リソース情報の読み込みが完了しました. Swagger UIを描画しています", - "Unable to read api":"APIを読み込めません", - "from path":"次のパスから", - "server returned":"サーバからの返答" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/ko-kr.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/ko-kr.js deleted file mode 100644 index 03c7626..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/ko-kr.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"경고:폐기예정됨", - "Implementation Notes":"구현 노트", - "Response Class":"응답 클래스", - "Status":"상태", - "Parameters":"매개변수들", - "Parameter":"매개변수", - "Value":"값", - "Description":"설명", - "Parameter Type":"매개변수 타입", - "Data Type":"데이터 타입", - "Response Messages":"응답 메세지", - "HTTP Status Code":"HTTP 상태 코드", - "Reason":"원인", - "Response Model":"응답 모델", - "Request URL":"요청 URL", - "Response Body":"응답 본문", - "Response Code":"응답 코드", - "Response Headers":"응답 헤더", - "Hide Response":"응답 숨기기", - "Headers":"헤더", - "Try it out!":"써보기!", - "Show/Hide":"보이기/숨기기", - "List Operations":"목록 작업", - "Expand Operations":"전개 작업", - "Raw":"원본", - "can't parse JSON. Raw result":"JSON을 파싱할수 없음. 원본결과:", - "Model Schema":"모델 스키마", - "Model":"모델", - "apply":"적용", - "Username":"사용자 이름", - "Password":"암호", - "Terms of service":"이용약관", - "Created by":"작성자", - "See more at":"추가정보:", - "Contact the developer":"개발자에게 문의", - "api version":"api버전", - "Response Content Type":"응답Content Type", - "fetching resource":"리소스 가져오기", - "fetching resource list":"리소스 목록 가져오기", - "Explore":"탐색", - "Show Swagger Petstore Example Apis":"Swagger Petstore 예제 보기", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"서버로부터 읽어들일수 없습니다. access-control-origin 설정이 올바르지 않을수 있습니다.", - "Please specify the protocol for":"다음을 위한 프로토콜을 정하세요", - "Can't read swagger JSON from":"swagger JSON 을 다음으로 부터 읽을수 없습니다", - "Finished Loading Resource Information. Rendering Swagger UI":"리소스 정보 불러오기 완료. Swagger UI 랜더링", - "Unable to read api":"api를 읽을 수 없습니다.", - "from path":"다음 경로로 부터", - "server returned":"서버 응답함." -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/pl.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/pl.js deleted file mode 100644 index ce41e91..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/pl.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Uwaga: Wycofane", - "Implementation Notes":"Uwagi Implementacji", - "Response Class":"Klasa Odpowiedzi", - "Status":"Status", - "Parameters":"Parametry", - "Parameter":"Parametr", - "Value":"Wartość", - "Description":"Opis", - "Parameter Type":"Typ Parametru", - "Data Type":"Typ Danych", - "Response Messages":"Wiadomości Odpowiedzi", - "HTTP Status Code":"Kod Statusu HTTP", - "Reason":"Przyczyna", - "Response Model":"Model Odpowiedzi", - "Request URL":"URL Wywołania", - "Response Body":"Treść Odpowiedzi", - "Response Code":"Kod Odpowiedzi", - "Response Headers":"Nagłówki Odpowiedzi", - "Hide Response":"Ukryj Odpowiedź", - "Headers":"Nagłówki", - "Try it out!":"Wypróbuj!", - "Show/Hide":"Pokaż/Ukryj", - "List Operations":"Lista Operacji", - "Expand Operations":"Rozwiń Operacje", - "Raw":"Nieprzetworzone", - "can't parse JSON. Raw result":"nie można przetworzyć pliku JSON. Nieprzetworzone dane", - "Model Schema":"Schemat Modelu", - "Model":"Model", - "apply":"użyj", - "Username":"Nazwa użytkownika", - "Password":"Hasło", - "Terms of service":"Warunki używania", - "Created by":"Utworzone przez", - "See more at":"Zobacz więcej na", - "Contact the developer":"Kontakt z deweloperem", - "api version":"wersja api", - "Response Content Type":"Typ Zasobu Odpowiedzi", - "fetching resource":"ładowanie zasobu", - "fetching resource list":"ładowanie listy zasobów", - "Explore":"Eksploruj", - "Show Swagger Petstore Example Apis":"Pokaż Przykładowe Api Swagger Petstore", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Brak połączenia z serwerem. Może on nie mieć odpowiednich ustawień access-control-origin.", - "Please specify the protocol for":"Proszę podać protokół dla", - "Can't read swagger JSON from":"Nie można odczytać swagger JSON z", - "Finished Loading Resource Information. Rendering Swagger UI":"Ukończono Ładowanie Informacji o Zasobie. Renderowanie Swagger UI", - "Unable to read api":"Nie można odczytać api", - "from path":"ze ścieżki", - "server returned":"serwer zwrócił" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/pt.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/pt.js deleted file mode 100644 index f2e7c13..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/pt.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Aviso: Depreciado", - "Implementation Notes":"Notas de Implementação", - "Response Class":"Classe de resposta", - "Status":"Status", - "Parameters":"Parâmetros", - "Parameter":"Parâmetro", - "Value":"Valor", - "Description":"Descrição", - "Parameter Type":"Tipo de parâmetro", - "Data Type":"Tipo de dados", - "Response Messages":"Mensagens de resposta", - "HTTP Status Code":"Código de status HTTP", - "Reason":"Razão", - "Response Model":"Modelo resposta", - "Request URL":"URL requisição", - "Response Body":"Corpo da resposta", - "Response Code":"Código da resposta", - "Response Headers":"Cabeçalho da resposta", - "Headers":"Cabeçalhos", - "Hide Response":"Esconder resposta", - "Try it out!":"Tente agora!", - "Show/Hide":"Mostrar/Esconder", - "List Operations":"Listar operações", - "Expand Operations":"Expandir operações", - "Raw":"Cru", - "can't parse JSON. Raw result":"Falha ao analisar JSON. Resulto cru", - "Model Schema":"Modelo esquema", - "Model":"Modelo", - "apply":"Aplicar", - "Username":"Usuário", - "Password":"Senha", - "Terms of service":"Termos do serviço", - "Created by":"Criado por", - "See more at":"Veja mais em", - "Contact the developer":"Contate o desenvolvedor", - "api version":"Versão api", - "Response Content Type":"Tipo de conteúdo da resposta", - "fetching resource":"busca recurso", - "fetching resource list":"buscando lista de recursos", - "Explore":"Explorar", - "Show Swagger Petstore Example Apis":"Show Swagger Petstore Example Apis", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Não é possível ler do servidor. Pode não ter as apropriadas configurações access-control-origin", - "Please specify the protocol for":"Por favor especifique o protocolo", - "Can't read swagger JSON from":"Não é possível ler o JSON Swagger de", - "Finished Loading Resource Information. Rendering Swagger UI":"Carregar informação de recurso finalizada. Renderizando Swagger UI", - "Unable to read api":"Não foi possível ler api", - "from path":"do caminho", - "server returned":"servidor retornou" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/ru.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/ru.js deleted file mode 100644 index 592744e..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/ru.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Предупреждение: Устарело", - "Implementation Notes":"Заметки", - "Response Class":"Пример ответа", - "Status":"Статус", - "Parameters":"Параметры", - "Parameter":"Параметр", - "Value":"Значение", - "Description":"Описание", - "Parameter Type":"Тип параметра", - "Data Type":"Тип данных", - "HTTP Status Code":"HTTP код", - "Reason":"Причина", - "Response Model":"Структура ответа", - "Request URL":"URL запроса", - "Response Body":"Тело ответа", - "Response Code":"HTTP код ответа", - "Response Headers":"Заголовки ответа", - "Hide Response":"Спрятать ответ", - "Headers":"Заголовки", - "Response Messages":"Что может прийти в ответ", - "Try it out!":"Попробовать!", - "Show/Hide":"Показать/Скрыть", - "List Operations":"Операции кратко", - "Expand Operations":"Операции подробно", - "Raw":"В сыром виде", - "can't parse JSON. Raw result":"Не удается распарсить ответ:", - "Example Value":"Пример", - "Model Schema":"Структура", - "Model":"Описание", - "Click to set as parameter value":"Нажмите, чтобы испльзовать в качестве значения параметра", - "apply":"применить", - "Username":"Имя пользователя", - "Password":"Пароль", - "Terms of service":"Условия использования", - "Created by":"Разработано", - "See more at":"Еще тут", - "Contact the developer":"Связаться с разработчиком", - "api version":"Версия API", - "Response Content Type":"Content Type ответа", - "Parameter content type:":"Content Type параметра:", - "fetching resource":"Получение ресурса", - "fetching resource list":"Получение ресурсов", - "Explore":"Показать", - "Show Swagger Petstore Example Apis":"Показать примеры АПИ", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Не удается получить ответ от сервера. Возможно, проблема с настройками доступа", - "Please specify the protocol for":"Пожалуйста, укажите протокол для", - "Can't read swagger JSON from":"Не получается прочитать swagger json из", - "Finished Loading Resource Information. Rendering Swagger UI":"Загрузка информации о ресурсах завершена. Рендерим", - "Unable to read api":"Не удалось прочитать api", - "from path":"по адресу", - "server returned":"сервер сказал" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/tr.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/tr.js deleted file mode 100644 index 16426a9..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/tr.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"Uyarı: Deprecated", - "Implementation Notes":"Gerçekleştirim Notları", - "Response Class":"Dönen Sınıf", - "Status":"Statü", - "Parameters":"Parametreler", - "Parameter":"Parametre", - "Value":"Değer", - "Description":"Açıklama", - "Parameter Type":"Parametre Tipi", - "Data Type":"Veri Tipi", - "Response Messages":"Dönüş Mesajı", - "HTTP Status Code":"HTTP Statü Kodu", - "Reason":"Gerekçe", - "Response Model":"Dönüş Modeli", - "Request URL":"İstek URL", - "Response Body":"Dönüş İçeriği", - "Response Code":"Dönüş Kodu", - "Response Headers":"Dönüş Üst Bilgileri", - "Hide Response":"Dönüşü Gizle", - "Headers":"Üst Bilgiler", - "Try it out!":"Dene!", - "Show/Hide":"Göster/Gizle", - "List Operations":"Operasyonları Listele", - "Expand Operations":"Operasyonları Aç", - "Raw":"Ham", - "can't parse JSON. Raw result":"JSON çözümlenemiyor. Ham sonuç", - "Model Schema":"Model Şema", - "Model":"Model", - "apply":"uygula", - "Username":"Kullanıcı Adı", - "Password":"Parola", - "Terms of service":"Servis şartları", - "Created by":"Oluşturan", - "See more at":"Daha fazlası için", - "Contact the developer":"Geliştirici ile İletişime Geçin", - "api version":"api versiyon", - "Response Content Type":"Dönüş İçerik Tipi", - "fetching resource":"kaynak getiriliyor", - "fetching resource list":"kaynak listesi getiriliyor", - "Explore":"Keşfet", - "Show Swagger Petstore Example Apis":"Swagger Petstore Örnek Api'yi Gör", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"Sunucudan okuma yapılamıyor. Sunucu access-control-origin ayarlarınızı kontrol edin.", - "Please specify the protocol for":"Lütfen istenen adres için protokol belirtiniz", - "Can't read swagger JSON from":"Swagger JSON bu kaynaktan okunamıyor", - "Finished Loading Resource Information. Rendering Swagger UI":"Kaynak baglantısı tamamlandı. Swagger UI gösterime hazırlanıyor", - "Unable to read api":"api okunamadı", - "from path":"yoldan", - "server returned":"sunucuya dönüldü" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/translator.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/translator.js deleted file mode 100644 index ffb879f..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/translator.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -/** - * Translator for documentation pages. - * - * To enable translation you should include one of language-files in your index.html - * after . - * For example - - * - * If you wish to translate some new texts you should do two things: - * 1. Add a new phrase pair ("New Phrase": "New Translation") into your language file (for example lang/ru.js). It will be great if you add it in other language files too. - * 2. Mark that text it templates this way New Phrase or . - * The main thing here is attribute data-sw-translate. Only inner html, title-attribute and value-attribute are going to translate. - * - */ -window.SwaggerTranslator = { - - _words:[], - - translate: function(sel) { - var $this = this; - sel = sel || '[data-sw-translate]'; - - $(sel).each(function() { - $(this).html($this._tryTranslate($(this).html())); - - $(this).val($this._tryTranslate($(this).val())); - $(this).attr('title', $this._tryTranslate($(this).attr('title'))); - }); - }, - - _tryTranslate: function(word) { - return this._words[$.trim(word)] !== undefined ? this._words[$.trim(word)] : word; - }, - - learn: function(wordsMap) { - this._words = wordsMap; - } -}; diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lang/zh-cn.js b/rswag-ui/vendor/assets/components/swagger-ui/lang/zh-cn.js deleted file mode 100644 index 570319b..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lang/zh-cn.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -/* jshint quotmark: double */ -window.SwaggerTranslator.learn({ - "Warning: Deprecated":"警告:已过时", - "Implementation Notes":"实现备注", - "Response Class":"响应类", - "Status":"状态", - "Parameters":"参数", - "Parameter":"参数", - "Value":"值", - "Description":"描述", - "Parameter Type":"参数类型", - "Data Type":"数据类型", - "Response Messages":"响应消息", - "HTTP Status Code":"HTTP状态码", - "Reason":"原因", - "Response Model":"响应模型", - "Request URL":"请求URL", - "Response Body":"响应体", - "Response Code":"响应码", - "Response Headers":"响应头", - "Hide Response":"隐藏响应", - "Headers":"头", - "Try it out!":"试一下!", - "Show/Hide":"显示/隐藏", - "List Operations":"显示操作", - "Expand Operations":"展开操作", - "Raw":"原始", - "can't parse JSON. Raw result":"无法解析JSON. 原始结果", - "Model Schema":"模型架构", - "Model":"模型", - "apply":"应用", - "Username":"用户名", - "Password":"密码", - "Terms of service":"服务条款", - "Created by":"创建者", - "See more at":"查看更多:", - "Contact the developer":"联系开发者", - "api version":"api版本", - "Response Content Type":"响应Content Type", - "fetching resource":"正在获取资源", - "fetching resource list":"正在获取资源列表", - "Explore":"浏览", - "Show Swagger Petstore Example Apis":"显示 Swagger Petstore 示例 Apis", - "Can't read from server. It may not have the appropriate access-control-origin settings.":"无法从服务器读取。可能没有正确设置access-control-origin。", - "Please specify the protocol for":"请指定协议:", - "Can't read swagger JSON from":"无法读取swagger JSON于", - "Finished Loading Resource Information. Rendering Swagger UI":"已加载资源信息。正在渲染Swagger UI", - "Unable to read api":"无法读取api", - "from path":"从路径", - "server returned":"服务器返回" -}); diff --git a/rswag-ui/vendor/assets/components/swagger-ui/lib/backbone-min.js b/rswag-ui/vendor/assets/components/swagger-ui/lib/backbone-min.js deleted file mode 100644 index a3f544b..0000000 --- a/rswag-ui/vendor/assets/components/swagger-ui/lib/backbone-min.js +++ /dev/null @@ -1,15 +0,0 @@ -// Backbone.js 1.1.2 - -(function(t,e){if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,s){t.Backbone=e(t,s,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore");e(t,exports,i)}else{t.Backbone=e(t,{},t._,t.jQuery||t.Zepto||t.ender||t.$)}})(this,function(t,e,i,r){var s=t.Backbone;var n=[];var a=n.push;var o=n.slice;var h=n.splice;e.VERSION="1.1.2";e.$=r;e.noConflict=function(){t.Backbone=s;return this};e.emulateHTTP=false;e.emulateJSON=false;var u=e.Events={on:function(t,e,i){if(!c(this,"on",t,[e,i])||!e)return this;this._events||(this._events={});var r=this._events[t]||(this._events[t]=[]);r.push({callback:e,context:i,ctx:i||this});return this},once:function(t,e,r){if(!c(this,"once",t,[e,r])||!e)return this;var s=this;var n=i.once(function(){s.off(t,n);e.apply(this,arguments)});n._callback=e;return this.on(t,n,r)},off:function(t,e,r){var s,n,a,o,h,u,l,f;if(!this._events||!c(this,"off",t,[e,r]))return this;if(!t&&!e&&!r){this._events=void 0;return this}o=t?[t]:i.keys(this._events);for(h=0,u=o.length;h").attr(t);this.setElement(r,false)}else{this.setElement(i.result(this,"el"),false)}}});e.sync=function(t,r,s){var n=T[t];i.defaults(s||(s={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var a={type:n,dataType:"json"};if(!s.url){a.url=i.result(r,"url")||M()}if(s.data==null&&r&&(t==="create"||t==="update"||t==="patch")){a.contentType="application/json";a.data=JSON.stringify(s.attrs||r.toJSON(s))}if(s.emulateJSON){a.contentType="application/x-www-form-urlencoded";a.data=a.data?{model:a.data}:{}}if(s.emulateHTTP&&(n==="PUT"||n==="DELETE"||n==="PATCH")){a.type="POST";if(s.emulateJSON)a.data._method=n;var o=s.beforeSend;s.beforeSend=function(t){t.setRequestHeader("X-HTTP-Method-Override",n);if(o)return o.apply(this,arguments)}}if(a.type!=="GET"&&!s.emulateJSON){a.processData=false}if(a.type==="PATCH"&&k){a.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}}var h=s.xhr=e.ajax(i.extend(a,s));r.trigger("request",r,h,s);return h};var k=typeof window!=="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);var T={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var $=e.Router=function(t){t||(t={});if(t.routes)this.routes=t.routes;this._bindRoutes();this.initialize.apply(this,arguments)};var S=/\((.*?)\)/g;var H=/(\(\?)?:\w+/g;var A=/\*\w+/g;var I=/[\-{}\[\]+?.,\\\^$|#\s]/g;i.extend($.prototype,u,{initialize:function(){},route:function(t,r,s){if(!i.isRegExp(t))t=this._routeToRegExp(t);if(i.isFunction(r)){s=r;r=""}if(!s)s=this[r];var n=this;e.history.route(t,function(i){var a=n._extractParameters(t,i);n.execute(s,a);n.trigger.apply(n,["route:"+r].concat(a));n.trigger("route",r,a);e.history.trigger("route",n,r,a)});return this},execute:function(t,e){if(t)t.apply(this,e)},navigate:function(t,i){e.history.navigate(t,i);return this},_bindRoutes:function(){if(!this.routes)return;this.routes=i.result(this,"routes");var t,e=i.keys(this.routes);while((t=e.pop())!=null){this.route(t,this.routes[t])}},_routeToRegExp:function(t){t=t.replace(I,"\\$&").replace(S,"(?:$1)?").replace(H,function(t,e){return e?t:"([^/?]+)"}).replace(A,"([^?]*?)");return new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var r=t.exec(e).slice(1);return i.map(r,function(t,e){if(e===r.length-1)return t||null;return t?decodeURIComponent(t):null})}});var N=e.History=function(){this.handlers=[];i.bindAll(this,"checkUrl");if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var R=/^[#\/]|\s+$/g;var O=/^\/+|\/+$/g;var P=/msie [\w.]+/;var C=/\/$/;var j=/#.*$/;N.started=false;i.extend(N.prototype,u,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getFragment:function(t,e){if(t==null){if(this._hasPushState||!this._wantsHashChange||e){t=decodeURI(this.location.pathname+this.location.search);var i=this.root.replace(C,"");if(!t.indexOf(i))t=t.slice(i.length)}else{t=this.getHash()}}return t.replace(R,"")},start:function(t){if(N.started)throw new Error("Backbone.history has already been started");N.started=true;this.options=i.extend({root:"/"},this.options,t);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var r=this.getFragment();var s=document.documentMode;var n=P.exec(navigator.userAgent.toLowerCase())&&(!s||s<=7);this.root=("/"+this.root+"/").replace(O,"/");if(n&&this._wantsHashChange){var a=e.$('