3scale_toolbox 0.10.0 → 0.11.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/README.md +21 -144
- data/lib/3scale_toolbox.rb +0 -1
- data/lib/3scale_toolbox/commands.rb +12 -0
- data/lib/3scale_toolbox/commands/3scale_command.rb +1 -1
- data/lib/3scale_toolbox/commands/account_command.rb +23 -0
- data/lib/3scale_toolbox/commands/account_command/find_command.rb +41 -0
- data/lib/3scale_toolbox/commands/activedocs_command.rb +32 -0
- data/lib/3scale_toolbox/commands/activedocs_command/apply_command.rb +127 -0
- data/lib/3scale_toolbox/commands/activedocs_command/create_command.rb +65 -0
- data/lib/3scale_toolbox/commands/activedocs_command/delete_command.rb +49 -0
- data/lib/3scale_toolbox/commands/activedocs_command/list_command.rb +54 -0
- data/lib/3scale_toolbox/commands/application_command.rb +30 -0
- data/lib/3scale_toolbox/commands/application_command/apply_command.rb +179 -0
- data/lib/3scale_toolbox/commands/application_command/create_command.rb +110 -0
- data/lib/3scale_toolbox/commands/application_command/delete_command.rb +57 -0
- data/lib/3scale_toolbox/commands/application_command/list_command.rb +124 -0
- data/lib/3scale_toolbox/commands/application_command/show_command.rb +72 -0
- data/lib/3scale_toolbox/commands/copy_command/copy_service.rb +97 -28
- data/lib/3scale_toolbox/commands/import_command/import_csv.rb +16 -17
- data/lib/3scale_toolbox/commands/import_command/openapi.rb +14 -10
- data/lib/3scale_toolbox/commands/import_command/openapi/create_service_step.rb +3 -2
- data/lib/3scale_toolbox/commands/import_command/openapi/method.rb +0 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/step.rb +8 -1
- data/lib/3scale_toolbox/commands/import_command/openapi/update_service_proxy_step.rb +17 -7
- data/lib/3scale_toolbox/commands/methods_command.rb +4 -4
- data/lib/3scale_toolbox/commands/methods_command/apply_command.rb +2 -2
- data/lib/3scale_toolbox/commands/methods_command/create_command.rb +1 -1
- data/lib/3scale_toolbox/commands/metrics_command.rb +4 -4
- data/lib/3scale_toolbox/commands/metrics_command/apply_command.rb +2 -2
- data/lib/3scale_toolbox/commands/metrics_command/create_command.rb +1 -1
- data/lib/3scale_toolbox/commands/plans_command/apply_command.rb +7 -7
- data/lib/3scale_toolbox/commands/plans_command/create_command.rb +5 -5
- data/lib/3scale_toolbox/commands/policy_registry_command.rb +22 -0
- data/lib/3scale_toolbox/commands/policy_registry_command/copy_command.rb +85 -0
- data/lib/3scale_toolbox/commands/proxy_config_command.rb +30 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/list_command.rb +78 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/promote_command.rb +68 -0
- data/lib/3scale_toolbox/commands/proxy_config_command/show_command.rb +88 -0
- data/lib/3scale_toolbox/commands/service_command.rb +34 -0
- data/lib/3scale_toolbox/commands/service_command/apply_command.rb +77 -0
- data/lib/3scale_toolbox/commands/service_command/create_command.rb +59 -0
- data/lib/3scale_toolbox/commands/service_command/delete_command.rb +49 -0
- data/lib/3scale_toolbox/commands/service_command/list_command.rb +50 -0
- data/lib/3scale_toolbox/commands/service_command/show_command.rb +63 -0
- data/lib/3scale_toolbox/commands/update_command/update_service.rb +6 -3
- data/lib/3scale_toolbox/entities.rb +4 -0
- data/lib/3scale_toolbox/entities/account.rb +63 -0
- data/lib/3scale_toolbox/entities/activedocs.rb +88 -0
- data/lib/3scale_toolbox/entities/application.rb +124 -0
- data/lib/3scale_toolbox/entities/application_plan.rb +28 -4
- data/lib/3scale_toolbox/entities/base_entity.rb +44 -0
- data/lib/3scale_toolbox/entities/proxy_config.rb +58 -0
- data/lib/3scale_toolbox/entities/service.rb +42 -8
- data/lib/3scale_toolbox/error.rb +8 -0
- data/lib/3scale_toolbox/tasks.rb +2 -1
- data/lib/3scale_toolbox/tasks/bump_proxy_version_task.rb +32 -0
- data/lib/3scale_toolbox/tasks/copy_service_settings_task.rb +38 -0
- data/lib/3scale_toolbox/version.rb +1 -1
- metadata +36 -5
- data/lib/3scale_toolbox/tasks/update_service_settings_task.rb +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b92f14c66af8c902ae8c68e2052f1fa95fa251eff222665f69e8758a5c4fae5
|
4
|
+
data.tar.gz: 77193321a8835f5e55276a6e454765c4a66f00b42af58a9d2ccecd3a60359804
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc467460e0db0d22ac18d8c5e8265bc9e3fd6fbb154f0f58d3b222b03a1d1d05980f16d9f21e9414822702bf119e7d6207282a57198af7344e9bf71d335df2d9
|
7
|
+
data.tar.gz: e24bc998136917729814dfcf634e9da8c68a20a6987f5a2080aff6811605904dc160ec1e763e2f06870e0062633f1a8f0abf21145b6cc074fac249ea71afb14e
|
data/README.md
CHANGED
@@ -11,14 +11,18 @@ See the LICENSE and NOTICE files that should have been provided along with this
|
|
11
11
|
## Table of contents
|
12
12
|
* [Installation](#installation)
|
13
13
|
* [Usage](#usage)
|
14
|
-
* [Copy a service](
|
15
|
-
* [
|
16
|
-
* [Import from CSV](#import-from-csv)
|
14
|
+
* [Copy a service](docs/copy-service.md)
|
15
|
+
* [Import from CSV](docs/import-csv.md)
|
17
16
|
* [Import from OpenAPI definition](docs/openapi.md)
|
18
17
|
* [Export/Import Application Plan](docs/export-import-app-plan.md)
|
19
18
|
* Create, Apply, List, Show, Delete [Application plan](docs/app-plan.md)
|
20
19
|
* Create, Apply, List, Delete [Metric](docs/metric.md)
|
21
20
|
* Create, Apply, List, Delete [Method](docs/method.md)
|
21
|
+
* Create, Apply, List, Show, Delete [Service](docs/service.md)
|
22
|
+
* Create, Apply, List, Delete [ActiveDocs](docs/activedocs.md)
|
23
|
+
* List, Show, Promote [Proxy Configuration](docs/proxy-config.md)
|
24
|
+
* [Copy Policy Registry](docs/copy-policy-registry.md)
|
25
|
+
* Create, Apply, List, Show, Delete, Suspend, Resume [Applications](docs/applications.md)
|
22
26
|
* [Remotes](docs/remotes.md)
|
23
27
|
* [Development](#development)
|
24
28
|
* [Testing](#testing)
|
@@ -46,11 +50,20 @@ DESCRIPTION
|
|
46
50
|
3scale toolbox to manage your API from the terminal.
|
47
51
|
|
48
52
|
COMMANDS
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
53
|
+
account account super command
|
54
|
+
activedocs activedocs super command
|
55
|
+
application application super command
|
56
|
+
application-plan application-plan super command
|
57
|
+
copy copy super command
|
58
|
+
help show help
|
59
|
+
import import super command
|
60
|
+
method method super command
|
61
|
+
metric metric super command
|
62
|
+
policy-registry policy-registry super command
|
63
|
+
proxy-config proxy-config super command
|
64
|
+
remote remotes super command
|
65
|
+
service services super command
|
66
|
+
update update super command
|
54
67
|
|
55
68
|
OPTIONS
|
56
69
|
-c --config-file=<value> 3scale toolbox configuration file (default:
|
@@ -62,142 +75,6 @@ OPTIONS
|
|
62
75
|
--verbose Verbose mode
|
63
76
|
```
|
64
77
|
|
65
|
-
### Copy a service
|
66
|
-
Will create a new service, copy existing proxy settings, pricing rules, activedocs, metrics, methods, application plans and mapping rules.
|
67
|
-
|
68
|
-
3scale instances can be either a [URL](docs/remotes.md#remote-urls) or the name of a [remote](docs/remotes.md).
|
69
|
-
|
70
|
-
Help message:
|
71
|
-
|
72
|
-
```shell
|
73
|
-
$ 3scale copy service --help
|
74
|
-
NAME
|
75
|
-
service - Copy service
|
76
|
-
|
77
|
-
USAGE
|
78
|
-
3scale copy service [opts] -s <src> -d <dst>
|
79
|
-
<service_id>
|
80
|
-
|
81
|
-
DESCRIPTION
|
82
|
-
Will create a new services, copy existing proxy settings, metrics,
|
83
|
-
methods, policies, application plans and mapping rules.
|
84
|
-
|
85
|
-
OPTIONS
|
86
|
-
-d --destination=<value> 3scale target instance. Url or
|
87
|
-
remote name
|
88
|
-
-s --source=<value> 3scale source instance. Url or
|
89
|
-
remote name
|
90
|
-
-t --target_system_name=<value> Target system name. Default to
|
91
|
-
source system name
|
92
|
-
|
93
|
-
OPTIONS FOR COPY
|
94
|
-
-h --help show help for this command
|
95
|
-
-k --insecure Proceed and operate even for server
|
96
|
-
connections otherwise considered
|
97
|
-
insecure
|
98
|
-
-v --version Prints the version of this command
|
99
|
-
--verbose Verbose mode
|
100
|
-
```
|
101
|
-
|
102
|
-
```shell
|
103
|
-
3scale copy service NUMBER --source=foo --destination=https://access_token@foo2-admin.3scale.net
|
104
|
-
```
|
105
|
-
|
106
|
-
### Update a service
|
107
|
-
|
108
|
-
Will update existing service, update proxy settings, pricing rules, activedocs, metrics, methods, application plans and mapping rules.
|
109
|
-
|
110
|
-
3scale instances can be either a [URL](docs/remotes.md#remote-urls) or the name of a [remote](docs/remotes.md).
|
111
|
-
|
112
|
-
Help message:
|
113
|
-
|
114
|
-
```shell
|
115
|
-
NAME
|
116
|
-
service - Update service
|
117
|
-
|
118
|
-
USAGE
|
119
|
-
3scale update service [opts] -s <src> -d <dst>
|
120
|
-
<src_service_id> <dst_service_id>
|
121
|
-
|
122
|
-
DESCRIPTION
|
123
|
-
Will update existing service, update proxy settings, metrics, methods,
|
124
|
-
application plans, policies and mapping rules.
|
125
|
-
|
126
|
-
OPTIONS
|
127
|
-
-d --destination=<value> 3scale target instance. Url or
|
128
|
-
remote name
|
129
|
-
-f --force Overwrites the mapping rules by deleting
|
130
|
-
all rules from target service first
|
131
|
-
-r --rules-only Updates only the mapping rules
|
132
|
-
-s --source=<value> 3scale source instance. Url or
|
133
|
-
remote name
|
134
|
-
|
135
|
-
OPTIONS FOR UPDATE
|
136
|
-
-h --help show help for this command
|
137
|
-
-k --insecure Proceed and operate even for server
|
138
|
-
connections otherwise considered insecure
|
139
|
-
-v --version Prints the version of this command
|
140
|
-
--verbose Verbose mode
|
141
|
-
```
|
142
|
-
|
143
|
-
Example:
|
144
|
-
|
145
|
-
```shell
|
146
|
-
$ 3scale update service -s https://9874598743@source.example.com -d foo 3 2
|
147
|
-
```
|
148
|
-
|
149
|
-
### Import from CSV
|
150
|
-
|
151
|
-
Will create new services, metrics, methods, and mapping rules having as source comma separated values (CSV) formatted file.
|
152
|
-
|
153
|
-
3scale instances can be either a [URL](docs/remotes.md#remote-urls) or the name of a [remote](docs/remotes.md).
|
154
|
-
|
155
|
-
CSV header
|
156
|
-
|
157
|
-
```csv
|
158
|
-
service_name,endpoint_name,endpoint_http_method,endpoint_path,auth_mode,endpoint_system_name,type
|
159
|
-
```
|
160
|
-
|
161
|
-
File example
|
162
|
-
|
163
|
-
```csv
|
164
|
-
service_name,endpoint_name,endpoint_http_method,endpoint_path,auth_mode,endpoint_system_name,type
|
165
|
-
Movies ,Movies (Biography),GET,/movies/biography/,api_key,movies_biography,metric
|
166
|
-
Movies ,Movies (Drama),GET,/movies/drama/,api_key,movies_drama,method
|
167
|
-
```
|
168
|
-
|
169
|
-
Help message:
|
170
|
-
|
171
|
-
```shell
|
172
|
-
$ 3scale import csv -h
|
173
|
-
NAME
|
174
|
-
csv - Import csv file
|
175
|
-
|
176
|
-
USAGE
|
177
|
-
3scale import csv [opts] -d <dst> -f <file>
|
178
|
-
|
179
|
-
DESCRIPTION
|
180
|
-
Create new services, metrics, methods and mapping rules from CSV
|
181
|
-
formatted file
|
182
|
-
|
183
|
-
OPTIONS
|
184
|
-
-d --destination=<value> 3scale target instance. Url or remote name
|
185
|
-
-f --file=<value> CSV formatted file
|
186
|
-
|
187
|
-
OPTIONS FOR IMPORT
|
188
|
-
-h --help show help for this command
|
189
|
-
-k --insecure Proceed and operate even for server
|
190
|
-
connections otherwise considered insecure
|
191
|
-
-v --version Prints the version of this command
|
192
|
-
--verbose Verbose mode
|
193
|
-
```
|
194
|
-
|
195
|
-
Example:
|
196
|
-
|
197
|
-
```shell
|
198
|
-
3scale import csv --destination=https://provider_key@user-admin.3scale.net --file=examples/import_example.csv
|
199
|
-
```
|
200
|
-
|
201
78
|
## Development
|
202
79
|
|
203
80
|
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec 3scale` to use the gem in this directory, ignoring other installed copies of this gem.
|
data/lib/3scale_toolbox.rb
CHANGED
@@ -7,6 +7,12 @@ require '3scale_toolbox/commands/remote_command'
|
|
7
7
|
require '3scale_toolbox/commands/plans_command'
|
8
8
|
require '3scale_toolbox/commands/metrics_command'
|
9
9
|
require '3scale_toolbox/commands/methods_command'
|
10
|
+
require '3scale_toolbox/commands/service_command'
|
11
|
+
require '3scale_toolbox/commands/activedocs_command'
|
12
|
+
require '3scale_toolbox/commands/account_command'
|
13
|
+
require '3scale_toolbox/commands/proxy_config_command'
|
14
|
+
require '3scale_toolbox/commands/policy_registry_command'
|
15
|
+
require '3scale_toolbox/commands/application_command'
|
10
16
|
|
11
17
|
module ThreeScaleToolbox
|
12
18
|
module Commands
|
@@ -19,6 +25,12 @@ module ThreeScaleToolbox
|
|
19
25
|
ThreeScaleToolbox::Commands::PlansCommand,
|
20
26
|
ThreeScaleToolbox::Commands::MetricsCommand,
|
21
27
|
ThreeScaleToolbox::Commands::MethodsCommand,
|
28
|
+
ThreeScaleToolbox::Commands::ServiceCommand,
|
29
|
+
ThreeScaleToolbox::Commands::ActiveDocsCommand,
|
30
|
+
ThreeScaleToolbox::Commands::AccountCommand,
|
31
|
+
ThreeScaleToolbox::Commands::ProxyConfigCommand,
|
32
|
+
ThreeScaleToolbox::Commands::PolicyRegistryCommand,
|
33
|
+
ThreeScaleToolbox::Commands::ApplicationCommand,
|
22
34
|
].freeze
|
23
35
|
end
|
24
36
|
end
|
@@ -10,7 +10,7 @@ module ThreeScaleToolbox
|
|
10
10
|
summary '3scale toolbox'
|
11
11
|
description '3scale toolbox to manage your API from the terminal.'
|
12
12
|
option :c, 'config-file', '3scale toolbox configuration file',
|
13
|
-
|
13
|
+
argument: :required, default: ThreeScaleToolbox.default_config_file
|
14
14
|
flag :v, :version, 'Prints the version of this command' do
|
15
15
|
puts ThreeScaleToolbox::VERSION
|
16
16
|
exit 0
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require '3scale_toolbox/commands/account_command/find_command'
|
2
|
+
|
3
|
+
module ThreeScaleToolbox
|
4
|
+
module Commands
|
5
|
+
module AccountCommand
|
6
|
+
include ThreeScaleToolbox::Command
|
7
|
+
|
8
|
+
def self.command
|
9
|
+
Cri::Command.define do
|
10
|
+
name 'account'
|
11
|
+
usage 'acccount <sub-command> [options]'
|
12
|
+
summary 'account super command'
|
13
|
+
description 'Accounts commands'
|
14
|
+
|
15
|
+
run do |_opts, _args, cmd|
|
16
|
+
puts cmd.help
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
add_subcommand(Find::FindSubcommand)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'cri'
|
2
|
+
require '3scale_toolbox/base_command'
|
3
|
+
|
4
|
+
module ThreeScaleToolbox
|
5
|
+
module Commands
|
6
|
+
module AccountCommand
|
7
|
+
module Find
|
8
|
+
class FindSubcommand < Cri::CommandRunner
|
9
|
+
include ThreeScaleToolbox::Command
|
10
|
+
|
11
|
+
def self.command
|
12
|
+
Cri::Command.define do
|
13
|
+
name 'find'
|
14
|
+
usage 'find [opts] <remote> <text>'
|
15
|
+
summary 'find account'
|
16
|
+
description 'Find account by email, provider key or service token'
|
17
|
+
|
18
|
+
option :a, :'print-all', 'Print all the account info', argument: :forbidden
|
19
|
+
param :remote
|
20
|
+
param :text
|
21
|
+
|
22
|
+
runner FindSubcommand
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
client = threescale_client(arguments[:remote])
|
28
|
+
account = ThreeScaleToolbox::Entities::Account.find_by_text(arguments[:text], client)
|
29
|
+
if account.nil?
|
30
|
+
puts 'Account not found'
|
31
|
+
return
|
32
|
+
end
|
33
|
+
|
34
|
+
account.verbose = options[:'print-all']
|
35
|
+
puts account
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'cri'
|
2
|
+
require '3scale_toolbox/base_command'
|
3
|
+
require '3scale_toolbox/commands/activedocs_command/delete_command'
|
4
|
+
require '3scale_toolbox/commands/activedocs_command/create_command'
|
5
|
+
require '3scale_toolbox/commands/activedocs_command/apply_command'
|
6
|
+
require '3scale_toolbox/commands/activedocs_command/list_command'
|
7
|
+
|
8
|
+
module ThreeScaleToolbox
|
9
|
+
module Commands
|
10
|
+
module ActiveDocsCommand
|
11
|
+
include ThreeScaleToolbox::Command
|
12
|
+
|
13
|
+
def self.command
|
14
|
+
Cri::Command.define do
|
15
|
+
name 'activedocs'
|
16
|
+
usage 'activedocs <sub-command> [options]'
|
17
|
+
summary 'activedocs super command'
|
18
|
+
description 'Manage your ActiveDocs'
|
19
|
+
|
20
|
+
run do |_opts, _args, cmd|
|
21
|
+
puts cmd.help
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
add_subcommand(Delete::DeleteSubcommand)
|
27
|
+
add_subcommand(Create::CreateSubcommand)
|
28
|
+
add_subcommand(Apply::ApplySubcommand)
|
29
|
+
add_subcommand(List::ListSubcommand)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
module ThreeScaleToolbox
|
2
|
+
module Commands
|
3
|
+
module ActiveDocsCommand
|
4
|
+
module Apply
|
5
|
+
class ApplySubcommand < Cri::CommandRunner
|
6
|
+
include ThreeScaleToolbox::Command
|
7
|
+
include ThreeScaleToolbox::ResourceReader
|
8
|
+
|
9
|
+
def self.command
|
10
|
+
Cri::Command.define do
|
11
|
+
name 'apply'
|
12
|
+
usage 'apply <remote> <activedocs_id_or_system_name>'
|
13
|
+
summary 'Update activedocs'
|
14
|
+
description 'Create or update an ActiveDocs'
|
15
|
+
runner ApplySubcommand
|
16
|
+
|
17
|
+
param :remote
|
18
|
+
param :activedocs_id_or_system_name
|
19
|
+
|
20
|
+
option :i, :'service-id', "Specify the Service ID associated to the ActiveDocs", argument: :required
|
21
|
+
option :p, :'publish', "Specify it to publish the ActiveDocs on the Developer Portal. Otherwise it will be hidden", argument: :forbidden
|
22
|
+
option nil, :'hide', "Specify it to hide the ActiveDocs on the Developer Portal", argument: :forbidden
|
23
|
+
option nil, :'skip-swagger-validations', "Specify it to skip validation of the Swagger specification", argument: :forbidden
|
24
|
+
option :d, :'description', "Specify the description of the ActiveDocs", argument: :required
|
25
|
+
option :s, :'name', "Specify the name of the ActiveDocs", argument: :required
|
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
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def run
|
31
|
+
res = activedocs
|
32
|
+
validate_option_params
|
33
|
+
if !res
|
34
|
+
res = Entities::ActiveDocs::create(remote: remote, attrs: create_activedocs_attrs)
|
35
|
+
else
|
36
|
+
res.update(activedocs_attrs) unless activedocs_attrs.empty?
|
37
|
+
end
|
38
|
+
|
39
|
+
output_msg_array = ["Applied ActiveDocs id: #{res.id}"]
|
40
|
+
output_msg_array << "Published" if option_publish
|
41
|
+
output_msg_array << "Hidden" if option_hide
|
42
|
+
puts output_msg_array.join(";")
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def remote
|
48
|
+
@remote ||= threescale_client(arguments[:remote])
|
49
|
+
end
|
50
|
+
|
51
|
+
def validate_option_params
|
52
|
+
if option_publish && option_hide
|
53
|
+
raise ThreeScaleToolbox::Error.new("--publish and --hide are mutually exclusive")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def check_openapi_spec_defined
|
58
|
+
if !option_openapi_spec
|
59
|
+
raise ThreeScaleToolbox::Error.new("--openapi-spec is mandatory when ActiveDocs is created")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def activedocs
|
64
|
+
@activedocs ||= find_activedocs
|
65
|
+
end
|
66
|
+
|
67
|
+
def ref
|
68
|
+
arguments[:activedocs_id_or_system_name]
|
69
|
+
end
|
70
|
+
|
71
|
+
def find_activedocs
|
72
|
+
Entities::ActiveDocs.find(remote: remote, ref: ref)
|
73
|
+
end
|
74
|
+
|
75
|
+
def option_publish
|
76
|
+
options.fetch(:publish, false)
|
77
|
+
end
|
78
|
+
|
79
|
+
def option_hide
|
80
|
+
options.fetch(:hide, false)
|
81
|
+
end
|
82
|
+
|
83
|
+
def option_openapi_spec
|
84
|
+
options[:'openapi-spec']
|
85
|
+
end
|
86
|
+
|
87
|
+
def activedocs_json_spec
|
88
|
+
@json_spec ||= read_activedocs_json_spec
|
89
|
+
end
|
90
|
+
|
91
|
+
def read_activedocs_json_spec
|
92
|
+
activedoc_spec = option_openapi_spec
|
93
|
+
activedoc_spec_content = load_resource(activedoc_spec)
|
94
|
+
JSON.pretty_generate(activedoc_spec_content)
|
95
|
+
end
|
96
|
+
|
97
|
+
def activedocs_attrs
|
98
|
+
activedocs_basic_attrs.tap do |params|
|
99
|
+
params["body"] = activedocs_json_spec if !option_openapi_spec.nil?
|
100
|
+
params["published"] = true if option_publish
|
101
|
+
params["published"] = false if option_hide
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def activedocs_basic_attrs
|
106
|
+
{
|
107
|
+
"service_id" => options[:'service-id'],
|
108
|
+
"skip_swagger_validations" => options[:'skip-swagger-validations'],
|
109
|
+
"description" => options[:'description'],
|
110
|
+
"system_name" => options[:'system-name'],
|
111
|
+
"name" => options[:name],
|
112
|
+
}.compact
|
113
|
+
end
|
114
|
+
|
115
|
+
def create_activedocs_attrs
|
116
|
+
check_openapi_spec_defined
|
117
|
+
activedocs_attrs.merge(
|
118
|
+
"system_name" => ref,
|
119
|
+
"name" => ref,
|
120
|
+
"body" => activedocs_json_spec,
|
121
|
+
) { |_key, oldval, _newval| oldval } # receiver of the merge message has key priority
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|