3scale_toolbox 0.14.0 → 0.15.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/3scale_toolbox.gemspec +2 -1
- data/README.md +21 -3
- data/lib/3scale_toolbox.rb +5 -1
- data/lib/3scale_toolbox/attribute_filters.rb +2 -0
- data/lib/3scale_toolbox/attribute_filters/attribute_filter.rb +9 -0
- data/lib/3scale_toolbox/attribute_filters/service_id_from_ref_filter.rb +30 -0
- data/lib/3scale_toolbox/commands/activedocs_command/apply_command.rb +1 -1
- data/lib/3scale_toolbox/commands/activedocs_command/list_command.rb +18 -1
- data/lib/3scale_toolbox/commands/import_command/openapi.rb +26 -5
- data/lib/3scale_toolbox/commands/import_command/openapi/create_activedocs_step.rb +4 -17
- data/lib/3scale_toolbox/commands/import_command/openapi/create_service_step.rb +1 -5
- data/lib/3scale_toolbox/commands/import_command/openapi/mapping_rule.rb +3 -2
- data/lib/3scale_toolbox/commands/import_command/openapi/step.rb +43 -5
- data/lib/3scale_toolbox/commands/import_command/openapi/update_policies_step.rb +7 -11
- data/lib/3scale_toolbox/commands/import_command/openapi/update_service_oidc_conf_step.rb +2 -17
- data/lib/3scale_toolbox/commands/import_command/openapi/update_service_proxy_step.rb +10 -10
- data/lib/3scale_toolbox/openapi.rb +2 -0
- data/lib/3scale_toolbox/openapi/oas3.rb +232 -0
- data/lib/3scale_toolbox/openapi/swagger.rb +192 -0
- data/lib/3scale_toolbox/tasks/copy_service_proxy_task.rb +1 -0
- data/lib/3scale_toolbox/version.rb +1 -1
- data/licenses.xml +161 -1
- data/resources/oas3_meta_schema.json +1654 -0
- metadata +24 -6
- data/lib/3scale_toolbox/commands/import_command/openapi/threescale_api_spec.rb +0 -80
- data/lib/3scale_toolbox/swagger.rb +0 -1
- data/lib/3scale_toolbox/swagger/swagger.rb +0 -123
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf0d2a187e793d654f6e6cef6990cfabaada5072f3a72b9820b1fed1ac13ddfb
|
4
|
+
data.tar.gz: c1b56e8e76059e0143444ff9ef12da633b97ef74b0fccb6875480be8b22cf9e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2bf8c3a1f5860a3c6d24fa5fbc976b9b3361ea8ef6a57bbc0707d5f3900a31d8022e9596080bf8129d47116d13d3ab4d2ae7bfc41e246d179adf0f757c7c598
|
7
|
+
data.tar.gz: 3a206838d82a662f56276e7d98291cf74f5bc69eb9f39de239bb3d15f457e62b81e336ee1d0438a508fdecc46f692b49610627ef6413d05788b4c9f1a8c3f2e5
|
data/3scale_toolbox.gemspec
CHANGED
@@ -34,9 +34,10 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_development_dependency 'rake', '~> 10.0'
|
35
35
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
36
36
|
spec.add_development_dependency 'webmock', '~> 3.4'
|
37
|
-
spec.required_ruby_version = '>= 2.
|
37
|
+
spec.required_ruby_version = '>= 2.5'
|
38
38
|
|
39
39
|
spec.add_dependency '3scale-api', '~> 0.6.0'
|
40
40
|
spec.add_dependency 'cri', '~> 2.15'
|
41
41
|
spec.add_dependency 'json-schema', '~> 2.8'
|
42
|
+
spec.add_dependency 'oas_parser', '~> 0.20'
|
42
43
|
end
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# 3scale toolbox
|
2
|
-
[](https://circleci.com/gh/3scale/3scale_toolbox)
|
3
3
|
|
4
4
|
This software is licensed under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0).
|
5
5
|
|
@@ -9,6 +9,7 @@ See the LICENSE and NOTICE files that should have been provided along with this
|
|
9
9
|
3scale toolbox is a set of tools to help you manage your 3scale product. Using the [3scale API Ruby Client](https://github.com/3scale/3scale-api-ruby).
|
10
10
|
|
11
11
|
## Table of contents
|
12
|
+
* [Requirements](#requirements)
|
12
13
|
* [Installation](#installation)
|
13
14
|
* [Usage](#usage)
|
14
15
|
* [Copy a service](docs/copy-service.md)
|
@@ -32,10 +33,27 @@ See the LICENSE and NOTICE files that should have been provided along with this
|
|
32
33
|
* [Troubleshooting](#troubleshooting)
|
33
34
|
* [Contributing](#contributing)
|
34
35
|
|
36
|
+
## Requirements
|
37
|
+
Supported Ruby interpreters
|
38
|
+
|
39
|
+
* MRI 2.5
|
40
|
+
* MRI 2.6
|
41
|
+
|
35
42
|
## Installation
|
36
43
|
Install the toolbox:
|
37
44
|
|
38
|
-
|
45
|
+
```
|
46
|
+
$ gem install 3scale_toolbox
|
47
|
+
```
|
48
|
+
|
49
|
+
The [3scale toolbox packaging repo](https://github.com/3scale/3scale_toolbox_packaging)
|
50
|
+
provides packages and installation/deployment steps for the following platforms:
|
51
|
+
* CentOS/Fedora
|
52
|
+
* Ubuntu/Debian
|
53
|
+
* Mac OS X
|
54
|
+
* Windows
|
55
|
+
* Docker
|
56
|
+
* Kubernetes / Openshift
|
39
57
|
|
40
58
|
## Usage
|
41
59
|
|
@@ -178,7 +196,7 @@ $ 3scale service_list my-3scale-instance
|
|
178
196
|
|
179
197
|
It is a requirement that we include a file describing all the licenses used in the product, so that users can examine it.
|
180
198
|
|
181
|
-
Run `rake license_finder:check` to check licenses when dependencies change.
|
199
|
+
Run `rake license_finder:check` to check licenses when dependencies change.
|
182
200
|
|
183
201
|
Run `rake license_finder:report > licenses.xml` to update licenses file.
|
184
202
|
|
data/lib/3scale_toolbox.rb
CHANGED
@@ -6,20 +6,24 @@ require 'time'
|
|
6
6
|
require 'csv'
|
7
7
|
require 'net/http'
|
8
8
|
require 'pathname'
|
9
|
+
require 'oas_parser'
|
9
10
|
require '3scale/api'
|
11
|
+
require 'json-schema'
|
12
|
+
require 'erb'
|
10
13
|
|
11
14
|
require '3scale_toolbox/version'
|
12
15
|
require '3scale_toolbox/helper'
|
13
16
|
require '3scale_toolbox/error'
|
14
17
|
require '3scale_toolbox/proxy_logger'
|
15
18
|
require '3scale_toolbox/resource_reader'
|
16
|
-
require '3scale_toolbox/swagger'
|
17
19
|
require '3scale_toolbox/configuration'
|
18
20
|
require '3scale_toolbox/remotes'
|
19
21
|
require '3scale_toolbox/3scale_client_factory'
|
20
22
|
require '3scale_toolbox/entities'
|
21
23
|
require '3scale_toolbox/tasks'
|
24
|
+
require '3scale_toolbox/attribute_filters'
|
22
25
|
require '3scale_toolbox/base_command'
|
26
|
+
require '3scale_toolbox/openapi'
|
23
27
|
require '3scale_toolbox/commands'
|
24
28
|
require '3scale_toolbox/cli'
|
25
29
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module ThreeScaleToolbox
|
2
|
+
module AttributeFilters
|
3
|
+
class ServiceIDFilterFromServiceRef
|
4
|
+
include AttributeFilter
|
5
|
+
|
6
|
+
attr_reader :remote, :service_ref, :service_id_key
|
7
|
+
|
8
|
+
def initialize(remote, service_ref, service_id_key)
|
9
|
+
@remote = remote
|
10
|
+
@service_ref = service_ref
|
11
|
+
@service_id_key = service_id_key
|
12
|
+
end
|
13
|
+
|
14
|
+
def filter(enumerable)
|
15
|
+
svc_id = find_service
|
16
|
+
enumerable.select { |e| e.key?(service_id_key) && e[service_id_key].to_s == svc_id.to_s }
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def find_service
|
22
|
+
svc_id = -1
|
23
|
+
Entities::Service.find(remote: remote, ref: service_ref).tap do |svc|
|
24
|
+
svc_id = svc.id if !svc.nil?
|
25
|
+
end
|
26
|
+
svc_id
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -20,7 +20,7 @@ module ThreeScaleToolbox
|
|
20
20
|
option :i, :'service-id', "Specify the Service ID associated to the ActiveDocs", argument: :required
|
21
21
|
option :p, :'publish', "Specify it to publish the ActiveDocs on the Developer Portal. Otherwise it will be hidden", argument: :forbidden
|
22
22
|
option nil, :'hide', "Specify it to hide the ActiveDocs on the Developer Portal", argument: :forbidden
|
23
|
-
option nil, :'skip-swagger-validations', "
|
23
|
+
option nil, :'skip-swagger-validations', "Skip validation of the Swagger specification. true or false", argument: :required, transform: ThreeScaleToolbox::Helper::BooleanTransformer.new
|
24
24
|
option :d, :'description', "Specify the description of the ActiveDocs", argument: :required
|
25
25
|
option :s, :'name', "Specify the name of the ActiveDocs", argument: :required
|
26
26
|
option nil, :'openapi-spec', "Specify the swagger spec. Can be a file, an URL or '-' to read from stdin. This option is mandatory when applying the ActiveDoc for the first time", argument: :required
|
@@ -14,6 +14,7 @@ module ThreeScaleToolbox
|
|
14
14
|
runner ListSubcommand
|
15
15
|
|
16
16
|
param :remote
|
17
|
+
option :s, :'service-ref', "Filter the ActiveDocs by Service reference", argument: :required
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
@@ -42,8 +43,24 @@ module ThreeScaleToolbox
|
|
42
43
|
puts fields_to_show.map { |e| e.upcase }.join("\t")
|
43
44
|
end
|
44
45
|
|
46
|
+
def service_ref_filter
|
47
|
+
options[:'service-ref']
|
48
|
+
end
|
49
|
+
|
50
|
+
def filters
|
51
|
+
res = []
|
52
|
+
if !service_ref_filter.nil?
|
53
|
+
res << AttributeFilters::ServiceIDFilterFromServiceRef.new(remote, service_ref_filter, "service_id")
|
54
|
+
end
|
55
|
+
res
|
56
|
+
end
|
57
|
+
|
58
|
+
def filtered_activedocs(activedocs)
|
59
|
+
filters.reduce(activedocs) { |current_list, filter| filter.filter(current_list) }
|
60
|
+
end
|
61
|
+
|
45
62
|
def print_results(activedocs, fields_to_show)
|
46
|
-
activedocs.each do |activedoc|
|
63
|
+
filtered_activedocs(activedocs).each do |activedoc|
|
47
64
|
puts fields_to_show.map { |field| activedoc.fetch(field, '(empty)') }.join("\t")
|
48
65
|
end
|
49
66
|
end
|
@@ -2,7 +2,6 @@ require '3scale_toolbox/commands/import_command/openapi/method'
|
|
2
2
|
require '3scale_toolbox/commands/import_command/openapi/mapping_rule'
|
3
3
|
require '3scale_toolbox/commands/import_command/openapi/operation'
|
4
4
|
require '3scale_toolbox/commands/import_command/openapi/step'
|
5
|
-
require '3scale_toolbox/commands/import_command/openapi/threescale_api_spec'
|
6
5
|
require '3scale_toolbox/commands/import_command/openapi/create_method_step'
|
7
6
|
require '3scale_toolbox/commands/import_command/openapi/create_mapping_rule_step'
|
8
7
|
require '3scale_toolbox/commands/import_command/openapi/create_service_step'
|
@@ -30,6 +29,7 @@ module ThreeScaleToolbox
|
|
30
29
|
option :t, 'target_system_name', 'Target system name', argument: :required
|
31
30
|
flag nil, 'activedocs-hidden', 'Create ActiveDocs in hidden state'
|
32
31
|
flag nil, 'skip-openapi-validation', 'Skip OpenAPI schema validation'
|
32
|
+
flag nil, 'prefix-matching', 'Use prefix matching instead of strict matching on mapping rules derived from openapi operations'
|
33
33
|
option nil, 'oidc-issuer-endpoint', 'OIDC Issuer Endpoint', argument: :required
|
34
34
|
option nil, 'default-credentials-userkey', 'Default credentials policy userkey', argument: :required
|
35
35
|
option nil, 'override-private-basepath', 'Override the basepath for the private URLs', argument: :required
|
@@ -37,6 +37,8 @@ module ThreeScaleToolbox
|
|
37
37
|
option nil, 'staging-public-base-url', 'Custom public staging URL', argument: :required
|
38
38
|
option nil, 'production-public-base-url', 'Custom public production URL', argument: :required
|
39
39
|
option nil, 'override-private-base-url', 'Custom private base URL', argument: :required
|
40
|
+
option nil, 'backend-api-secret-token', 'Custom secret token sent by the API gateway to the backend API',argument: :required
|
41
|
+
option nil, 'backend-api-host-header', 'Custom host header sent by the API gateway to the backend API', argument: :required
|
40
42
|
param :openapi_resource
|
41
43
|
|
42
44
|
runner OpenAPISubcommand
|
@@ -69,10 +71,9 @@ module ThreeScaleToolbox
|
|
69
71
|
end
|
70
72
|
|
71
73
|
def create_context
|
72
|
-
openapi_resource = load_resource(arguments[:openapi_resource])
|
73
74
|
{
|
74
75
|
api_spec_resource: openapi_resource,
|
75
|
-
api_spec:
|
76
|
+
api_spec: openapi_parser,
|
76
77
|
threescale_client: threescale_client(fetch_required_option(:destination)),
|
77
78
|
target_system_name: options[:target_system_name],
|
78
79
|
activedocs_published: !options[:'activedocs-hidden'],
|
@@ -80,14 +81,34 @@ module ThreeScaleToolbox
|
|
80
81
|
default_credentials_userkey: options[:'default-credentials-userkey'],
|
81
82
|
skip_openapi_validation: options[:'skip-openapi-validation'],
|
82
83
|
override_private_basepath: options[:'override-private-basepath'],
|
84
|
+
override_public_basepath: options[:'override-public-basepath'],
|
83
85
|
production_public_base_url: options[:'production-public-base-url'],
|
84
86
|
staging_public_base_url: options[:'staging-public-base-url'],
|
85
87
|
override_private_base_url: options[:'override-private-base-url'],
|
88
|
+
backend_api_secret_token: options[:'backend-api-secret-token'],
|
89
|
+
backend_api_host_header: options[:'backend-api-host-header'],
|
90
|
+
prefix_matching: options[:'prefix-matching'],
|
86
91
|
}
|
87
92
|
end
|
88
93
|
|
89
|
-
def
|
90
|
-
|
94
|
+
def openapi_resource
|
95
|
+
@openapi_resource ||= load_resource(openapi_path)
|
96
|
+
end
|
97
|
+
|
98
|
+
def openapi_path
|
99
|
+
arguments[:openapi_resource]
|
100
|
+
end
|
101
|
+
|
102
|
+
def validate
|
103
|
+
!options[:'skip-openapi-validation']
|
104
|
+
end
|
105
|
+
|
106
|
+
def openapi_parser
|
107
|
+
if openapi_resource.key?('openapi')
|
108
|
+
ThreeScaleToolbox::OpenAPI::OAS3.build(openapi_path, openapi_resource, validate: validate)
|
109
|
+
else
|
110
|
+
ThreeScaleToolbox::OpenAPI::Swagger.build(openapi_resource, validate: validate)
|
111
|
+
end
|
91
112
|
rescue JSON::Schema::ValidationError => e
|
92
113
|
raise ThreeScaleToolbox::Error, "OpenAPI schema validation failed: #{e.message}"
|
93
114
|
end
|
@@ -53,26 +53,13 @@ module ThreeScaleToolbox
|
|
53
53
|
# Other processing steps can work with original openapi spec
|
54
54
|
Helper.hash_deep_dup(resource).tap do |activedocs|
|
55
55
|
# public production base URL
|
56
|
-
URI(service.proxy.fetch('endpoint')).tap do |uri|
|
57
|
-
activedocs['host'] = "#{uri.host}:#{uri.port}"
|
58
|
-
activedocs['schemes'] = [uri.scheme]
|
59
|
-
end
|
60
|
-
|
61
56
|
# the basePath field is updated to a new value only when overriden by optional param
|
62
|
-
|
63
|
-
|
57
|
+
api_spec.set_server_url(activedocs,
|
58
|
+
URI.join(service.proxy.fetch('endpoint'), public_base_path))
|
64
59
|
# security definitions
|
65
60
|
# just valid for oauth2 when oidc_issuer_endpoint is supplied
|
66
|
-
if !security.nil? && security
|
67
|
-
|
68
|
-
if %w[implicit accessCode].include?(security.flow)
|
69
|
-
activedocs['securityDefinitions'][security.id]['authorizationUrl'] = authorization_url
|
70
|
-
end
|
71
|
-
|
72
|
-
# tokenUrl
|
73
|
-
if %w[password application accessCode].include?(security.flow)
|
74
|
-
activedocs['securityDefinitions'][security.id]['tokenUrl'] = token_url
|
75
|
-
end
|
61
|
+
if !api_spec.security.nil? && api_spec.security[:type] == 'oauth2' && !oidc_issuer_endpoint.nil?
|
62
|
+
api_spec.set_oauth2_urls(activedocs, api_spec.security[:id], authorization_url, token_url)
|
76
63
|
end
|
77
64
|
end
|
78
65
|
end
|
@@ -33,7 +33,7 @@ module ThreeScaleToolbox
|
|
33
33
|
default_service_settings.tap do |svc|
|
34
34
|
svc['name'] = service_name
|
35
35
|
svc['description'] = service_description
|
36
|
-
svc['backend_version'] =
|
36
|
+
svc['backend_version'] = api_spec.service_backend_version
|
37
37
|
svc['system_name'] = service_system_name
|
38
38
|
svc['deployment_option'] = 'self_managed' if !production_public_base_url.nil? || !staging_public_base_url.nil?
|
39
39
|
end
|
@@ -50,10 +50,6 @@ module ThreeScaleToolbox
|
|
50
50
|
def service_description
|
51
51
|
api_spec.description
|
52
52
|
end
|
53
|
-
|
54
|
-
def backend_version
|
55
|
-
api_spec.backend_version
|
56
|
-
end
|
57
53
|
end
|
58
54
|
end
|
59
55
|
end
|
@@ -31,7 +31,21 @@ module ThreeScaleToolbox
|
|
31
31
|
# api_spec.operations are readonly
|
32
32
|
# store operations in context
|
33
33
|
# each operation can be extended with extra information to be used later
|
34
|
-
context[:operations] ||=
|
34
|
+
context[:operations] ||= build_3scale_operations
|
35
|
+
end
|
36
|
+
|
37
|
+
def build_3scale_operations
|
38
|
+
api_spec.operations.map do |op|
|
39
|
+
Operation.new(
|
40
|
+
base_path: base_path,
|
41
|
+
public_base_path: public_base_path,
|
42
|
+
path: op[:path],
|
43
|
+
verb: op[:verb],
|
44
|
+
operationId: op[:operation_id],
|
45
|
+
description: op[:description],
|
46
|
+
prefix_matching: prefix_matching,
|
47
|
+
)
|
48
|
+
end
|
35
49
|
end
|
36
50
|
|
37
51
|
def target_system_name
|
@@ -43,10 +57,6 @@ module ThreeScaleToolbox
|
|
43
57
|
context[:api_spec_resource]
|
44
58
|
end
|
45
59
|
|
46
|
-
def security
|
47
|
-
api_spec.security
|
48
|
-
end
|
49
|
-
|
50
60
|
def oidc_issuer_endpoint
|
51
61
|
context[:oidc_issuer_endpoint]
|
52
62
|
end
|
@@ -59,6 +69,10 @@ module ThreeScaleToolbox
|
|
59
69
|
context[:override_private_basepath]
|
60
70
|
end
|
61
71
|
|
72
|
+
def override_public_basepath
|
73
|
+
context[:override_public_basepath]
|
74
|
+
end
|
75
|
+
|
62
76
|
def production_public_base_url
|
63
77
|
context[:production_public_base_url]
|
64
78
|
end
|
@@ -70,6 +84,30 @@ module ThreeScaleToolbox
|
|
70
84
|
def override_private_base_url
|
71
85
|
context[:override_private_base_url]
|
72
86
|
end
|
87
|
+
|
88
|
+
def backend_api_secret_token
|
89
|
+
context[:backend_api_secret_token]
|
90
|
+
end
|
91
|
+
|
92
|
+
def backend_api_host_header
|
93
|
+
context[:backend_api_host_header]
|
94
|
+
end
|
95
|
+
|
96
|
+
def prefix_matching
|
97
|
+
context[:prefix_matching]
|
98
|
+
end
|
99
|
+
|
100
|
+
def base_path
|
101
|
+
api_spec.base_path || '/'
|
102
|
+
end
|
103
|
+
|
104
|
+
def public_base_path
|
105
|
+
override_public_basepath || base_path
|
106
|
+
end
|
107
|
+
|
108
|
+
def private_base_path
|
109
|
+
override_private_basepath || base_path
|
110
|
+
end
|
73
111
|
end
|
74
112
|
end
|
75
113
|
end
|
@@ -33,7 +33,7 @@ module ThreeScaleToolbox
|
|
33
33
|
|
34
34
|
def add_anonymous_access_policy(policies)
|
35
35
|
# only on 'open api' security req
|
36
|
-
return unless security.nil?
|
36
|
+
return unless api_spec.security.nil?
|
37
37
|
|
38
38
|
return if policies.any? { |policy| policy['name'] == 'default_credentials' }
|
39
39
|
|
@@ -60,12 +60,12 @@ module ThreeScaleToolbox
|
|
60
60
|
|
61
61
|
def add_rh_sso_keycloak_role_check_policy(policies)
|
62
62
|
# only applies to oauth2 sec type
|
63
|
-
return if security.nil? || security
|
63
|
+
return if api_spec.security.nil? || api_spec.security[:type] != 'oauth2'
|
64
64
|
|
65
65
|
return if policies.any? { |policy| policy['name'] == 'keycloak_role_check' }
|
66
66
|
|
67
67
|
# only when there are scopes defined
|
68
|
-
return if security
|
68
|
+
return if api_spec.security[:scopes].empty?
|
69
69
|
|
70
70
|
policies << keycloak_policy
|
71
71
|
end
|
@@ -79,7 +79,7 @@ module ThreeScaleToolbox
|
|
79
79
|
scopes: [
|
80
80
|
{
|
81
81
|
realm_roles: [],
|
82
|
-
client_roles: security
|
82
|
+
client_roles: api_spec.security[:scopes].map { |scope| { 'name': scope } }
|
83
83
|
}
|
84
84
|
]
|
85
85
|
},
|
@@ -88,7 +88,7 @@ module ThreeScaleToolbox
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def add_url_rewritting_policy(policies)
|
91
|
-
return if private_base_path ==
|
91
|
+
return if private_base_path == public_base_path
|
92
92
|
|
93
93
|
url_rewritting_policy_idx = policies.find_index do |policy|
|
94
94
|
policy['name'] == 'url_rewriting'
|
@@ -101,10 +101,6 @@ module ThreeScaleToolbox
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
-
def private_base_path
|
105
|
-
override_private_basepath || api_spec.base_path
|
106
|
-
end
|
107
|
-
|
108
104
|
def url_rewritting_policy
|
109
105
|
regex = url_rewritting_policy_regex
|
110
106
|
replace = url_rewritting_policy_replace
|
@@ -128,11 +124,11 @@ module ThreeScaleToolbox
|
|
128
124
|
end
|
129
125
|
|
130
126
|
def url_rewritting_policy_regex
|
131
|
-
"^#{
|
127
|
+
"^#{public_base_path}"
|
132
128
|
end
|
133
129
|
|
134
130
|
def url_rewritting_policy_replace
|
135
|
-
|
131
|
+
private_base_path
|
136
132
|
end
|
137
133
|
end
|
138
134
|
end
|