workato-connector-sdk 0.1.1 → 0.1.2
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 +5 -5
- data/README.md +9 -8
- data/lib/workato/cli/generators/connector_generator.rb +4 -1
- data/lib/workato/cli/main.rb +5 -3
- data/lib/workato/cli/push_command.rb +29 -17
- data/lib/workato/connector/sdk/dsl/time.rb +8 -1
- data/lib/workato/connector/sdk/version.rb +1 -1
- data/templates/Gemfile.erb +1 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b81c1b9e954ad72d48fdf3a32fa33cb3de02a3115d00e14868226234c98f32ee
|
4
|
+
data.tar.gz: 22b5572360e2dfd03938acc98857fdd9c8e0bb9d097af83aaf871404bb3312ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9d2044bf8f7959198c2a5ee791661dd4be30a5474b74dc6c40ea8b359b99e8d1acfd965b44727c27194e5a8efab8f3d50f6703370ef0a4a00868034d1ca80d9
|
7
|
+
data.tar.gz: a40cbb8272f22247b29be7b15be2708f1339329e771fd2a994ac9e174ddb67c2bba0e0a0474fe5a68fcd457220d884b0e56f50321b9611f436136202881d17f7
|
data/README.md
CHANGED
@@ -15,6 +15,7 @@ This guide below showcases how you can do the following things:
|
|
15
15
|
1. Install [RVM ("Ruby Version Manager")](http://rvm.io/) or a Ruby manager of your choice. You can find more at [here](https://www.ruby-lang.org/en/documentation/installation/)
|
16
16
|
2. Choose between Ruby versions `2.4.10` `2.5.X` or `2.7.X`. Our preferred version is `2.7.X`.
|
17
17
|
3. Verify you're running a valid ruby version. Do this by running either `ruby -v` or the commands within your version manager. i.e., `rvm current` if you have installed RVM.
|
18
|
+
4. For Windows you need tzinfo-data gem installed as well. `gem install tzinfo-data`
|
18
19
|
|
19
20
|
```bash
|
20
21
|
ruby -v
|
@@ -38,7 +39,7 @@ Commands:
|
|
38
39
|
workato generate <SUBCOMMAND> # Generates code from template
|
39
40
|
workato help [COMMAND] # Describe available commands or one specific command
|
40
41
|
workato new <CONNECTOR_PATH> # Inits new connector folder
|
41
|
-
workato push
|
42
|
+
workato push # Upload and release connector's code
|
42
43
|
|
43
44
|
Options:
|
44
45
|
[--verbose], [--no-verbose]
|
@@ -124,11 +125,11 @@ You don't need to create this file. It'll be created later on. This file just ho
|
|
124
125
|
|
125
126
|
### 2.5 README.MD
|
126
127
|
This file shows up on your Github project (or other Git software you use). Use it to document what your connector does! **Not created via `workato new <PATH>` commands.**
|
127
|
-
When you use the `workato push
|
128
|
+
When you use the `workato push` command to sync your connector with your Workato workspace, this is the default file for your connector's description.
|
128
129
|
|
129
130
|
### 2.6 logo.png
|
130
131
|
The logo of your connector. **Not created via `workato new <PATH>` commands.**
|
131
|
-
When you use the `workato push
|
132
|
+
When you use the `workato push` command to sync your connector with your Workato workspace, this is the default file for your connector's logo.
|
132
133
|
|
133
134
|
### 2.7 connector.rb
|
134
135
|
Well, this is your actual connector code. This file should be a replica of your connector code in Workato.
|
@@ -223,7 +224,7 @@ Commands:
|
|
223
224
|
workato generate <SUBCOMMAND> # Generates code from template
|
224
225
|
workato help [COMMAND] # Describe available commands or one specific command
|
225
226
|
workato new <CONNECTOR_PATH> # Inits new connector folder
|
226
|
-
workato push
|
227
|
+
workato push # Upload and release connector's code
|
227
228
|
|
228
229
|
Options:
|
229
230
|
[--verbose], [--no-verbose]
|
@@ -362,7 +363,7 @@ Please select default HTTP mocking behavior suitable for your project?
|
|
362
363
|
workato help push
|
363
364
|
|
364
365
|
Usage:
|
365
|
-
workato push
|
366
|
+
workato push
|
366
367
|
|
367
368
|
Options:
|
368
369
|
-t, [--title=TITLE] # Connector title on the Workato Platform
|
@@ -375,7 +376,8 @@ Options:
|
|
375
376
|
[--environment=ENVIRONMENT] # Server to push connector code to
|
376
377
|
# Default: live
|
377
378
|
# Possible values: preview, preview-eu, live, live-eu
|
378
|
-
[--
|
379
|
+
[--folder=FOLDER] # Folder ID if you what to push to folder other than Home
|
380
|
+
[--verbose], [--no-verbose]
|
379
381
|
|
380
382
|
Upload and release connector's code
|
381
383
|
```
|
@@ -1086,8 +1088,7 @@ jobs:
|
|
1086
1088
|
# env:
|
1087
1089
|
# WORKATO_API_EMAIL: ${{ secrets.WORKATO_DEV_ENVIRONMENT_API_EMAIL}}
|
1088
1090
|
# WORKATO_API_TOKEN: ${{ secrets.WORKATO_DEV_ENVIRONMENT_API_TOKEN}}
|
1089
|
-
#
|
1090
|
-
# run: workato push $WORKATO_API_FOLDER
|
1091
|
+
# run: workato push
|
1091
1092
|
```
|
1092
1093
|
|
1093
1094
|
You may also add more Github actions for rubocop to automate this.
|
@@ -30,7 +30,7 @@ module Workato
|
|
30
30
|
def create_spec_files
|
31
31
|
template('.rspec.erb', '.rspec')
|
32
32
|
|
33
|
-
|
33
|
+
say(<<~HELP)
|
34
34
|
Please select default HTTP mocking behavior suitable for your project?
|
35
35
|
|
36
36
|
1 - secure. Cause an error to be raised for any unknown requests, all request recordings are encrypted.
|
@@ -39,8 +39,11 @@ module Workato
|
|
39
39
|
Example: VCR_RECORD_MODE=once bundle exec rspec spec/actions/test_action_spec.rb
|
40
40
|
|
41
41
|
2 - simple. Record new interaction if it is a new request, requests are stored as plain text and expose secret tokens.
|
42
|
+
|
42
43
|
HELP
|
43
44
|
|
45
|
+
@vcr_record_mode = ask('Your choice:')
|
46
|
+
|
44
47
|
MasterKeyGenerator.new.call if @vcr_record_mode == '1'
|
45
48
|
|
46
49
|
template('spec/spec_helper.rb.erb', 'spec/spec_helper.rb')
|
data/lib/workato/cli/main.rb
CHANGED
@@ -95,7 +95,7 @@ module Workato
|
|
95
95
|
desc 'generate <SUBCOMMAND>', 'Generates code from template'
|
96
96
|
subcommand('generate', GenerateCommand)
|
97
97
|
|
98
|
-
desc 'push
|
98
|
+
desc 'push', "Upload and release connector's code"
|
99
99
|
method_option :title,
|
100
100
|
type: :string,
|
101
101
|
aliases: '-t',
|
@@ -130,10 +130,12 @@ module Workato
|
|
130
130
|
enum: Workato::CLI::PushCommand::ENVIRONMENTS.keys,
|
131
131
|
default: 'live',
|
132
132
|
desc: 'Server to push connector code to'
|
133
|
+
method_option :folder,
|
134
|
+
type: :string,
|
135
|
+
desc: 'Folder ID if you what to push to folder other than Home'
|
133
136
|
|
134
|
-
def push
|
137
|
+
def push
|
135
138
|
PushCommand.new(
|
136
|
-
folder: folder,
|
137
139
|
options: options
|
138
140
|
).call
|
139
141
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'uri'
|
4
4
|
require 'ruby-progressbar'
|
5
5
|
require 'zip'
|
6
|
+
require 'fileutils'
|
6
7
|
|
7
8
|
module Workato
|
8
9
|
module CLI
|
@@ -19,6 +20,7 @@ module Workato
|
|
19
20
|
'live-eu' => 'https://app.eu.workato.com'
|
20
21
|
}.freeze
|
21
22
|
|
23
|
+
API_USER_PATH = '/api/users/me'
|
22
24
|
API_IMPORT_PATH = '/api/packages/import'
|
23
25
|
API_PACKAGE_PATH = '/api/packages'
|
24
26
|
IMPORT_IN_PROGRESS = 'in_progress'
|
@@ -30,19 +32,19 @@ module Workato
|
|
30
32
|
AWAIT_IMPORT_SLEEP_INTERVAL = 15 # seconds
|
31
33
|
AWAIT_IMPORT_TIMEOUT_INTERVAL = 120 # seconds
|
32
34
|
|
33
|
-
def initialize(
|
34
|
-
@folder_id = folder
|
35
|
+
def initialize(options:)
|
35
36
|
@options = options
|
36
37
|
@api_base_url = ENVIRONMENTS.fetch(options[:environment])
|
37
38
|
@api_email = options[:api_email] || ENV[WORKATO_API_EMAIL_ENV]
|
38
39
|
@api_token = options[:api_token] || ENV[WORKATO_API_TOKEN_ENV]
|
40
|
+
@folder_id = options[:folder]
|
39
41
|
end
|
40
42
|
|
41
43
|
def call
|
42
|
-
|
44
|
+
zip_file_path = build_package
|
43
45
|
say_status :success, 'Build package' if verbose?
|
44
46
|
|
45
|
-
import_id = import_package(
|
47
|
+
import_id = import_package(zip_file_path)
|
46
48
|
say_status :success, 'Upload package' if verbose?
|
47
49
|
say_status :waiting, 'Process package' if verbose?
|
48
50
|
|
@@ -55,13 +57,12 @@ module Workato
|
|
55
57
|
rescue StandardError => e
|
56
58
|
say e.message
|
57
59
|
ensure
|
58
|
-
|
60
|
+
FileUtils.rm_f(zip_file_path) if zip_file_path
|
59
61
|
end
|
60
62
|
|
61
63
|
private
|
62
64
|
|
63
65
|
attr_reader :options,
|
64
|
-
:folder_id,
|
65
66
|
:api_token,
|
66
67
|
:api_email,
|
67
68
|
:api_base_url
|
@@ -78,16 +79,13 @@ module Workato
|
|
78
79
|
end
|
79
80
|
|
80
81
|
def build_package
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
add_logo(archive)
|
82
|
+
::Dir::Tmpname.create(['connector', '.zip']) do |path|
|
83
|
+
::Zip::File.open(path, ::Zip::File::CREATE) do |archive|
|
84
|
+
add_connector(archive)
|
85
|
+
add_manifest(archive)
|
86
|
+
add_logo(archive)
|
87
|
+
end
|
88
88
|
end
|
89
|
-
|
90
|
-
zip_file
|
91
89
|
end
|
92
90
|
|
93
91
|
def add_connector(archive)
|
@@ -110,11 +108,11 @@ module Workato
|
|
110
108
|
end
|
111
109
|
end
|
112
110
|
|
113
|
-
def import_package(
|
111
|
+
def import_package(zip_file_path)
|
114
112
|
url = "#{api_base_url}#{API_IMPORT_PATH}/#{folder_id}"
|
115
113
|
response = RestClient.post(
|
116
114
|
url,
|
117
|
-
File.open(
|
115
|
+
File.open(zip_file_path),
|
118
116
|
auth_headers.merge(
|
119
117
|
'Content-Type' => 'application/zip'
|
120
118
|
)
|
@@ -197,7 +195,21 @@ module Workato
|
|
197
195
|
}
|
198
196
|
end
|
199
197
|
|
198
|
+
def folder_id
|
199
|
+
@folder_id ||=
|
200
|
+
begin
|
201
|
+
url = "#{api_base_url}#{API_USER_PATH}"
|
202
|
+
response = RestClient.get(url, auth_headers)
|
203
|
+
|
204
|
+
json = JSON.parse(response.body)
|
205
|
+
json.fetch('root_folder_id').tap do |folder_id|
|
206
|
+
say_status :success, "Fetch root folder ID: #{folder_id}" if verbose?
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
200
211
|
private_constant :IMPORT_IN_PROGRESS,
|
212
|
+
:API_USER_PATH,
|
201
213
|
:API_IMPORT_PATH,
|
202
214
|
:API_PACKAGE_PATH,
|
203
215
|
:PACKAGE_ENTRY_NAME,
|
@@ -18,4 +18,11 @@ module Workato
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
begin
|
22
|
+
::Time.zone = Workato::Connector::Sdk::DEFAULT_TIME_ZONE
|
23
|
+
rescue TZInfo::DataSourceNotFound
|
24
|
+
puts ''
|
25
|
+
puts "tzinfo-data is not present. Please install gem 'tzinfo-data' by 'gem install tzinfo-data'"
|
26
|
+
puts ''
|
27
|
+
exit!
|
28
|
+
end
|
data/templates/Gemfile.erb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workato-connector-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Abolmasov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -369,8 +369,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
369
369
|
- !ruby/object:Gem::Version
|
370
370
|
version: '0'
|
371
371
|
requirements: []
|
372
|
-
|
373
|
-
rubygems_version: 2.6.14.4
|
372
|
+
rubygems_version: 3.2.3
|
374
373
|
signing_key:
|
375
374
|
specification_version: 4
|
376
375
|
summary: Gem for running adapter's code outside Workato infrastructure
|