rswag-api 2.1.0 → 2.3.2

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: 4a619111fdd8a670fc3c02438872a2bc3ac74a51b1493afacb7fa0d69fb8f264
4
- data.tar.gz: c1c9e70d901f6d93eb7a45269330085f3fdbf9d2343a253609308c6872c87e62
3
+ metadata.gz: 4d6e406c1fae102d2fd4c15b6b643fb8e1976edab4f07c8b6a85b87e6b9220ff
4
+ data.tar.gz: 23f6675fe724e257b16fbf6ec1d2cda567faf8c06ba860bff26dfdc848921a07
5
5
  SHA512:
6
- metadata.gz: b174fe9ebd7719e3b83ed10fd4c9a72cb076f39b64f9a8b3a23ebb11d5d4d19e7c0bd9e2812beaf021a660115a868b21c3287cefcdbe349b0273d3ece30e9e5b
7
- data.tar.gz: e59cd9b3d248efdfb515cc724e9d4973e360dd184797c91d9105dd8cafa1c04729c2790b1b5d6fc15572fa34c30af8d611e7df1a97344aa1554756b2082d5fbc
6
+ metadata.gz: e3a334ea2eea804b7f2454f769df98fb36d572a169e0400d413ad709eca1d2bad2ff4a7adf81836af31aceda70a4a4d8d68805d54cb163cfa605711e8ac45541
7
+ data.tar.gz: b3714e5bcd0202b840a140a09318c16286c3619a6af3aa5aa844dcafb91ff2f9528e5e09b23ca40a5ee012bf78007c4bdb79a9ab347afedefbf8f873340c5e03
@@ -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.0
4
+ version: 2.3.2
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-16 00:00:00.000000000 Z
13
+ date: 2021-01-28 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: []