rswag-api 2.12.0 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/generators/rswag/api/install/templates/rswag_api.rb +1 -1
- data/lib/rswag/api/configuration.rb +11 -3
- data/lib/rswag/api/middleware.rb +5 -7
- data/lib/rswag/api.rb +24 -1
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e80990b064d9bad51bb3eb217987dba1400c5f0b1ec68d903a6f34229f049d6
|
4
|
+
data.tar.gz: eb379a7fa481b8b623d4880d1f9fa9b77531b7b21f766a825ee7c21a4a36daf8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f63243aa5dbb57b92d781f453e4860ca777765f2fdb76a63dee8e4076c9619fa36350ebeb472fb2108528fcd2164c939a67bc109fe55178011b2741b350b5417
|
7
|
+
data.tar.gz: e30f6dee44a3bb6145684fa82d7166c3b023b6a5b262b094670dce637652bb2893012df420a21eaa5857a79657aaef3cbc189dcfd9d35bed41660b6bfeb8b4d9
|
@@ -4,7 +4,7 @@ Rswag::Api.configure do |c|
|
|
4
4
|
# This is used by the Swagger middleware to serve requests for API descriptions
|
5
5
|
# NOTE: If you're using rswag-specs to generate Swagger, you'll need to ensure
|
6
6
|
# that it's configured to generate files in the same folder
|
7
|
-
c.
|
7
|
+
c.openapi_root = Rails.root.to_s + '/swagger'
|
8
8
|
|
9
9
|
# Inject a lambda function to alter the returned Swagger prior to serialization
|
10
10
|
# The function will have access to the rack env for the current request
|
@@ -1,11 +1,19 @@
|
|
1
1
|
module Rswag
|
2
2
|
module Api
|
3
3
|
class Configuration
|
4
|
-
attr_accessor :
|
4
|
+
attr_accessor :openapi_root, :swagger_filter, :swagger_headers
|
5
5
|
|
6
|
-
def
|
6
|
+
def resolve_openapi_root(env)
|
7
7
|
path_params = env['action_dispatch.request.path_parameters'] || {}
|
8
|
-
|
8
|
+
|
9
|
+
if path_params.key?(:swagger_root)
|
10
|
+
Rswag::Api.deprecator.warn(
|
11
|
+
'swagger_root is deprecated and will be removed from rswag-api 3.0 (use openapi_root instead)'
|
12
|
+
)
|
13
|
+
return path_params[:swagger_root]
|
14
|
+
end
|
15
|
+
|
16
|
+
path_params[:openapi_root] || openapi_root
|
9
17
|
end
|
10
18
|
end
|
11
19
|
end
|
data/lib/rswag/api/middleware.rb
CHANGED
@@ -5,7 +5,6 @@ require 'rack/mime'
|
|
5
5
|
module Rswag
|
6
6
|
module Api
|
7
7
|
class Middleware
|
8
|
-
|
9
8
|
def initialize(app, config)
|
10
9
|
@app = app
|
11
10
|
@config = config
|
@@ -15,10 +14,9 @@ module Rswag
|
|
15
14
|
path = env['PATH_INFO']
|
16
15
|
# Sanitize the filename for directory traversal by expanding, and ensuring
|
17
16
|
# its starts with the root directory.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
17
|
+
openapi_root = @config.resolve_openapi_root(env)
|
18
|
+
filename = File.expand_path(File.join(openapi_root, path))
|
19
|
+
return @app.call(env) unless filename.start_with? openapi_root.to_s
|
22
20
|
|
23
21
|
if env['REQUEST_METHOD'] == 'GET' && File.file?(filename)
|
24
22
|
swagger = parse_file(filename)
|
@@ -30,11 +28,11 @@ module Rswag
|
|
30
28
|
return [
|
31
29
|
'200',
|
32
30
|
headers,
|
33
|
-
[
|
31
|
+
[body]
|
34
32
|
]
|
35
33
|
end
|
36
34
|
|
37
|
-
|
35
|
+
@app.call(env)
|
38
36
|
end
|
39
37
|
|
40
38
|
private
|
data/lib/rswag/api.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
|
+
require 'active_support/deprecation'
|
1
2
|
require 'rswag/api/configuration'
|
2
|
-
require 'rswag/api/engine'
|
3
|
+
require 'rswag/api/engine' if defined?(Rails::Engine)
|
3
4
|
|
4
5
|
module Rswag
|
5
6
|
module Api
|
7
|
+
RENAMED_METHODS = {
|
8
|
+
swagger_root: :openapi_root
|
9
|
+
}.freeze
|
10
|
+
private_constant :RENAMED_METHODS
|
11
|
+
|
6
12
|
def self.configure
|
7
13
|
yield(config)
|
8
14
|
end
|
@@ -10,5 +16,22 @@ module Rswag
|
|
10
16
|
def self.config
|
11
17
|
@config ||= Configuration.new
|
12
18
|
end
|
19
|
+
|
20
|
+
def self.deprecator
|
21
|
+
@deprecator ||= ActiveSupport::Deprecation.new('3.0', 'rswag-api')
|
22
|
+
end
|
23
|
+
|
24
|
+
Configuration.class_eval do
|
25
|
+
RENAMED_METHODS.each do |old_name, new_name|
|
26
|
+
define_method("#{old_name}=") do |*args, &block|
|
27
|
+
public_send("#{new_name}=", *args, &block)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Api.deprecator.deprecate_methods(
|
33
|
+
Configuration,
|
34
|
+
RENAMED_METHODS.to_h { |old_name, new_name| ["#{old_name}=".to_sym, "#{new_name}=".to_sym] }
|
35
|
+
)
|
13
36
|
end
|
14
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rswag-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richie Morris
|
@@ -10,8 +10,28 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-11-
|
13
|
+
date: 2023-11-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ">="
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.1'
|
22
|
+
- - "<"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '7.2'
|
25
|
+
type: :runtime
|
26
|
+
prerelease: false
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '3.1'
|
32
|
+
- - "<"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '7.2'
|
15
35
|
- !ruby/object:Gem::Dependency
|
16
36
|
name: railties
|
17
37
|
requirement: !ruby/object:Gem::Requirement
|