rswag-api 2.1.1 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
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: []