rswag-api 2.1.1 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fdb4e3352a6d79128a80330791bfe3a82561c4e658c2e531316368098ddc2d26
4
- data.tar.gz: b21ab1fd96389fb193f9fd487c214b2ef6f0a30f010e9a07c9a2ab4ebb6f2ae9
3
+ metadata.gz: 9b73417261746971615d57f1e030552148fa2ff53f1071ed350ed8ddf092720a
4
+ data.tar.gz: 5365ebf8d3c67f6da3eef8ed1ff2c6819f312d64b6adad9fb39a2b1c3413cc82
5
5
  SHA512:
6
- metadata.gz: 3dd345e95c82de2c375b71bbe4b443ee78f3648924ef12d84d44a9a1a144df3abbc40d35e57497eb58b94927890d997df2981aa4ced47ad75055b4e824196124
7
- data.tar.gz: 3091da2ac5c5c54acdb23c4b643a27b6917a2685835a0599603078069e6eacf214705e992e535e005104b00bfd3fc14465670362c3a579ef33a7e7d6749f5723
6
+ metadata.gz: 2f1ca03959d88e66ab71a10290f2e8eba689926a04b2a6a559f4c9eef77bab95f5c7e0c63572a7868a03b7607048fc704f6923c62089176df7a2bb0a89c9837f
7
+ data.tar.gz: 662b0d2d6aa382372486ca40532d364413a18434a171d971e8f4f3a3fde672ad82d909baabbf11617a96a6d12b1f452945d4b16be529d9154041ea0c6e8c56d3
@@ -5,4 +5,4 @@ Example:
5
5
  rails generate rswag:api:install
6
6
 
7
7
  This will create:
8
- config/initializers/rswag-api.rb
8
+ config/initializers/rswag_api.rb
@@ -7,7 +7,7 @@ module Rswag
7
7
  source_root File.expand_path('../templates', __FILE__)
8
8
 
9
9
  def add_initializer
10
- template('rswag-api.rb', 'config/initializers/rswag-api.rb')
10
+ template('rswag_api.rb', 'config/initializers/rswag_api.rb')
11
11
  end
12
12
 
13
13
  def add_routes
@@ -1,7 +1,7 @@
1
1
  module Rswag
2
2
  module Api
3
3
  class Configuration
4
- attr_accessor :swagger_root, :swagger_filter
4
+ attr_accessor :swagger_root, :swagger_filter, :swagger_headers
5
5
 
6
6
  def resolve_swagger_root(env)
7
7
  path_params = env['action_dispatch.request.path_parameters'] || {}
@@ -1,8 +1,10 @@
1
1
  require 'json'
2
+ require 'yaml'
3
+ require 'rack/mime'
2
4
 
3
5
  module Rswag
4
6
  module Api
5
- class Middleware
7
+ class Middleware
6
8
 
7
9
  def initialize(app, config)
8
10
  @app = app
@@ -14,24 +16,47 @@ module Rswag
14
16
  filename = "#{@config.resolve_swagger_root(env)}/#{path}"
15
17
 
16
18
  if env['REQUEST_METHOD'] == 'GET' && File.file?(filename)
17
- swagger = load_json(filename)
19
+ swagger = parse_file(filename)
18
20
  @config.swagger_filter.call(swagger, env) unless @config.swagger_filter.nil?
21
+ mime = Rack::Mime.mime_type(::File.extname(path), 'text/plain')
22
+ headers = { 'Content-Type' => mime }.merge(@config.swagger_headers || {})
23
+ body = unload_swagger(filename, swagger)
19
24
 
20
25
  return [
21
26
  '200',
22
- { 'Content-Type' => 'application/json' },
23
- [ JSON.dump(swagger) ]
27
+ headers,
28
+ [ body ]
24
29
  ]
25
30
  end
26
-
31
+
27
32
  return @app.call(env)
28
33
  end
29
34
 
30
35
  private
31
36
 
37
+ def parse_file(filename)
38
+ if /\.ya?ml$/ === filename
39
+ load_yaml(filename)
40
+ else
41
+ load_json(filename)
42
+ end
43
+ end
44
+
45
+ def load_yaml(filename)
46
+ YAML.safe_load(File.read(filename))
47
+ end
48
+
32
49
  def load_json(filename)
33
50
  JSON.parse(File.read(filename))
34
51
  end
52
+
53
+ def unload_swagger(filename, swagger)
54
+ if /\.ya?ml$/ === filename
55
+ YAML.dump(swagger)
56
+ else
57
+ JSON.dump(swagger)
58
+ end
59
+ end
35
60
  end
36
61
  end
37
62
  end
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rswag-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richie Morris
8
+ - Greg Myers
9
+ - Jay Danielian
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2019-10-18 00:00:00.000000000 Z
13
+ date: 2021-02-07 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: railties
@@ -19,7 +21,7 @@ dependencies:
19
21
  version: '3.1'
20
22
  - - "<"
21
23
  - !ruby/object:Gem::Version
22
- version: '6.1'
24
+ version: '7.0'
23
25
  type: :runtime
24
26
  prerelease: false
25
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,9 +31,10 @@ dependencies:
29
31
  version: '3.1'
30
32
  - - "<"
31
33
  - !ruby/object:Gem::Version
32
- version: '6.1'
33
- description: Open up your API to the phenomenal Swagger ecosystem by exposing Swagger
34
- files, that describe your service, as JSON endpoints
34
+ version: '7.0'
35
+ description: 'Open up your API to the phenomenal OpenAPI ecosystem by exposing OpenAPI
36
+ files, that describe your service, as JSON endpoints. More about the OpenAPI initiative
37
+ here: http://spec.openapis.org/'
35
38
  email:
36
39
  - domaindrivendev@gmail.com
37
40
  executables: []
@@ -42,12 +45,12 @@ files:
42
45
  - Rakefile
43
46
  - lib/generators/rswag/api/install/USAGE
44
47
  - lib/generators/rswag/api/install/install_generator.rb
45
- - lib/generators/rswag/api/install/templates/rswag-api.rb
48
+ - lib/generators/rswag/api/install/templates/rswag_api.rb
46
49
  - lib/rswag/api.rb
47
50
  - lib/rswag/api/configuration.rb
48
51
  - lib/rswag/api/engine.rb
49
52
  - lib/rswag/api/middleware.rb
50
- homepage: https://github.com/domaindrivendev/rswag
53
+ homepage: https://github.com/rswag/rswag
51
54
  licenses:
52
55
  - MIT
53
56
  metadata: {}
@@ -66,9 +69,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
69
  - !ruby/object:Gem::Version
67
70
  version: '0'
68
71
  requirements: []
69
- rubyforge_project:
70
- rubygems_version: 2.7.7
72
+ rubygems_version: 3.0.6
71
73
  signing_key:
72
74
  specification_version: 4
73
- summary: A Rails Engine that exposes Swagger files as JSON endpoints
75
+ summary: A Rails Engine that exposes OpenAPI (formerly called Swagger) files as JSON
76
+ endpoints
74
77
  test_files: []