etna 0.1.22 → 0.1.27
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/etna.completion +119 -2
- data/lib/commands.rb +83 -2
- data/lib/etna.rb +2 -0
- data/lib/etna/client.rb +15 -36
- data/lib/etna/clients/base_client.rb +39 -0
- data/lib/etna/clients/janus/client.rb +2 -13
- data/lib/etna/clients/janus/models.rb +2 -1
- data/lib/etna/clients/magma/client.rb +2 -17
- data/lib/etna/clients/magma/models.rb +7 -3
- data/lib/etna/clients/magma/workflows.rb +2 -0
- data/lib/etna/clients/magma/workflows/crud_workflow.rb +10 -4
- data/lib/etna/clients/magma/workflows/materialize_magma_record_files_workflow.rb +111 -0
- data/lib/etna/clients/magma/workflows/walk_model_tree_workflow.rb +101 -0
- data/lib/etna/clients/metis/client.rb +22 -9
- data/lib/etna/clients/metis/models.rb +12 -3
- data/lib/etna/clients/metis/workflows.rb +1 -0
- data/lib/etna/clients/metis/workflows/sync_metis_data_workflow.rb +110 -0
- data/lib/etna/clients/polyphemus/client.rb +18 -13
- data/lib/etna/clients/polyphemus/models.rb +27 -1
- data/lib/etna/filesystem.rb +313 -0
- data/lib/etna/formatting.rb +16 -0
- data/lib/etna/spec/vcr.rb +7 -0
- data/lib/etna/test_auth.rb +7 -3
- data/lib/helpers.rb +9 -3
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99facdcccd4282d230f93f3ccd779af9f5f58878c5a33e2be0209e95b715a88e
|
4
|
+
data.tar.gz: b56796ac6f84ec988a07275bdaf78d14d12409cf7c3b0a4d2b8b30c0009d8130
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4a505a48d40c6ed15a97810002809260d43f9420c9339d5a00c6c78957430751cfa609312e99d6c50346cb0ebad300cc7bb6fbba12fde602e43005981556eab
|
7
|
+
data.tar.gz: 3edfd8838451970ed00a470c6b843a0e4b166c31ed7bb67eb2a8a1ce42c217414e6c92776aa4d4db2e0fa0cc2c27f50e2b05b339a28f4893c9137ec71ff8e2ff
|
data/etna.completion
CHANGED
@@ -77,7 +77,7 @@ all_flag_completion_names="$all_flag_completion_names "
|
|
77
77
|
string_flag_completion_names="$string_flag_completion_names "
|
78
78
|
while [[ "$#" != "0" ]]; do
|
79
79
|
if [[ "$#" == "1" ]]; then
|
80
|
-
all_completion_names="apply_template attributes copy_template help"
|
80
|
+
all_completion_names="apply_template attributes copy_template help load_from_redcap"
|
81
81
|
all_completion_names="$all_completion_names $all_flag_completion_names"
|
82
82
|
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
83
83
|
return
|
@@ -136,7 +136,7 @@ all_flag_completion_names="$all_flag_completion_names "
|
|
136
136
|
string_flag_completion_names="$string_flag_completion_names "
|
137
137
|
while [[ "$#" != "0" ]]; do
|
138
138
|
if [[ "$#" == "1" ]]; then
|
139
|
-
all_completion_names="create_file_linking_csv help update_from_csv"
|
139
|
+
all_completion_names="create_file_linking_csv help load_table_from_csv update_from_csv"
|
140
140
|
all_completion_names="$all_completion_names $all_flag_completion_names"
|
141
141
|
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
142
142
|
return
|
@@ -252,6 +252,68 @@ return
|
|
252
252
|
fi
|
253
253
|
done
|
254
254
|
return
|
255
|
+
elif [[ "$1" == "load_table_from_csv" ]]; then
|
256
|
+
shift
|
257
|
+
if [[ "$#" == "1" ]]; then
|
258
|
+
all_completion_names="__project_name__"
|
259
|
+
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
260
|
+
return
|
261
|
+
fi
|
262
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
263
|
+
return
|
264
|
+
fi
|
265
|
+
shift
|
266
|
+
if [[ "$#" == "1" ]]; then
|
267
|
+
all_completion_names="__model_name__"
|
268
|
+
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
269
|
+
return
|
270
|
+
fi
|
271
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
272
|
+
return
|
273
|
+
fi
|
274
|
+
shift
|
275
|
+
if [[ "$#" == "1" ]]; then
|
276
|
+
all_completion_names="__file_path__"
|
277
|
+
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
278
|
+
return
|
279
|
+
fi
|
280
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
281
|
+
return
|
282
|
+
fi
|
283
|
+
shift
|
284
|
+
all_flag_completion_names="$all_flag_completion_names --execute "
|
285
|
+
string_flag_completion_names="$string_flag_completion_names "
|
286
|
+
while [[ "$#" != "0" ]]; do
|
287
|
+
if [[ "$#" == "1" ]]; then
|
288
|
+
all_completion_names=""
|
289
|
+
all_completion_names="$all_completion_names $all_flag_completion_names"
|
290
|
+
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
291
|
+
return
|
292
|
+
fi
|
293
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
294
|
+
return
|
295
|
+
elif [[ -z "$(echo $all_flag_completion_names | xargs)" ]]; then
|
296
|
+
return
|
297
|
+
elif [[ "$all_flag_completion_names" =~ $1\ ]]; then
|
298
|
+
all_flag_completion_names="${all_flag_completion_names//$1\ /}"
|
299
|
+
a=$1
|
300
|
+
shift
|
301
|
+
if [[ "$string_flag_completion_names" =~ $a\ ]]; then
|
302
|
+
if [[ "$#" == "1" ]]; then
|
303
|
+
a="${a//--/}"
|
304
|
+
a="${a//-/_}"
|
305
|
+
i="_completions_for_$a"
|
306
|
+
all_completion_names="${!i}"
|
307
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
308
|
+
return
|
309
|
+
fi
|
310
|
+
shift
|
311
|
+
fi
|
312
|
+
else
|
313
|
+
return
|
314
|
+
fi
|
315
|
+
done
|
316
|
+
return
|
255
317
|
elif [[ "$1" == "update_from_csv" ]]; then
|
256
318
|
shift
|
257
319
|
if [[ "$#" == "1" ]]; then
|
@@ -417,6 +479,61 @@ return
|
|
417
479
|
fi
|
418
480
|
done
|
419
481
|
return
|
482
|
+
elif [[ "$1" == "load_from_redcap" ]]; then
|
483
|
+
shift
|
484
|
+
if [[ "$#" == "1" ]]; then
|
485
|
+
all_completion_names="__project_name__"
|
486
|
+
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
487
|
+
return
|
488
|
+
fi
|
489
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
490
|
+
return
|
491
|
+
fi
|
492
|
+
shift
|
493
|
+
if [[ "$#" == "1" ]]; then
|
494
|
+
all_completion_names="__redcap_tokens__"
|
495
|
+
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
496
|
+
return
|
497
|
+
fi
|
498
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
499
|
+
return
|
500
|
+
fi
|
501
|
+
shift
|
502
|
+
all_flag_completion_names="$all_flag_completion_names --commit --models --mode "
|
503
|
+
string_flag_completion_names="$string_flag_completion_names --models --mode "
|
504
|
+
declare _completions_for_models="__models__"
|
505
|
+
declare _completions_for_mode="__mode__"
|
506
|
+
while [[ "$#" != "0" ]]; do
|
507
|
+
if [[ "$#" == "1" ]]; then
|
508
|
+
all_completion_names=""
|
509
|
+
all_completion_names="$all_completion_names $all_flag_completion_names"
|
510
|
+
if [[ -z "$(echo $all_completion_names | xargs)" ]]; then
|
511
|
+
return
|
512
|
+
fi
|
513
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
514
|
+
return
|
515
|
+
elif [[ -z "$(echo $all_flag_completion_names | xargs)" ]]; then
|
516
|
+
return
|
517
|
+
elif [[ "$all_flag_completion_names" =~ $1\ ]]; then
|
518
|
+
all_flag_completion_names="${all_flag_completion_names//$1\ /}"
|
519
|
+
a=$1
|
520
|
+
shift
|
521
|
+
if [[ "$string_flag_completion_names" =~ $a\ ]]; then
|
522
|
+
if [[ "$#" == "1" ]]; then
|
523
|
+
a="${a//--/}"
|
524
|
+
a="${a//-/_}"
|
525
|
+
i="_completions_for_$a"
|
526
|
+
all_completion_names="${!i}"
|
527
|
+
COMPREPLY=($(compgen -W "$all_completion_names" -- "$1"))
|
528
|
+
return
|
529
|
+
fi
|
530
|
+
shift
|
531
|
+
fi
|
532
|
+
else
|
533
|
+
return
|
534
|
+
fi
|
535
|
+
done
|
536
|
+
return
|
420
537
|
elif [[ -z "$(echo $all_flag_completion_names | xargs)" ]]; then
|
421
538
|
return
|
422
539
|
elif [[ "$all_flag_completion_names" =~ $1\ ]]; then
|
data/lib/commands.rb
CHANGED
@@ -54,7 +54,7 @@ class EtnaApp
|
|
54
54
|
boolean_flags << '--ignore-ssl'
|
55
55
|
|
56
56
|
def execute(host, ignore_ssl: false)
|
57
|
-
polyphemus_client
|
57
|
+
polyphemus_client = Etna::Clients::Polyphemus.new(
|
58
58
|
host: host,
|
59
59
|
token: token(ignore_environment: true),
|
60
60
|
ignore_ssl: ignore_ssl)
|
@@ -62,7 +62,7 @@ class EtnaApp
|
|
62
62
|
polyphemus_client: polyphemus_client,
|
63
63
|
config_file: EtnaApp.config_file_path)
|
64
64
|
config = workflow.update_configuration_file(ignore_ssl: ignore_ssl)
|
65
|
-
logger
|
65
|
+
logger&.info("Updated #{config.environment} configuration from #{host}.")
|
66
66
|
end
|
67
67
|
|
68
68
|
def setup(config)
|
@@ -299,6 +299,87 @@ class EtnaApp
|
|
299
299
|
workflow.write_csv_io(filename: file)
|
300
300
|
end
|
301
301
|
end
|
302
|
+
|
303
|
+
class LoadTableFromCsv < Etna::Command
|
304
|
+
include WithEtnaClients
|
305
|
+
|
306
|
+
boolean_flags << '--execute'
|
307
|
+
|
308
|
+
def execute(project_name, model_name, file_path, execute: false)
|
309
|
+
request = Etna::Clients::Magma::RetrievalRequest.new(project_name: project_name)
|
310
|
+
request.model_name = model_name
|
311
|
+
request.attribute_names = 'all'
|
312
|
+
request.record_names = 'all'
|
313
|
+
model = magma_client.retrieve(request).models.model(model_name)
|
314
|
+
model_parent_name = model.template.attributes.all.select do |attribute|
|
315
|
+
attribute.attribute_type == Etna::Clients::Magma::AttributeType::PARENT
|
316
|
+
end.first.name
|
317
|
+
|
318
|
+
other_attribute_names = model.template.attributes.all.reject do |attribute|
|
319
|
+
attribute.attribute_type == Etna::Clients::Magma::AttributeType::PARENT
|
320
|
+
end.map do |attribute|
|
321
|
+
attribute.name
|
322
|
+
end
|
323
|
+
|
324
|
+
# NOTE: This does not call ensure_parent currently because of MVIR1 consent--
|
325
|
+
# if the timepoint doesn't exist, the patient may be no study? (one example, at least)
|
326
|
+
update_request = Etna::Clients::Magma::UpdateRequest.new(project_name: project_name)
|
327
|
+
|
328
|
+
data = CSV.parse(File.read(file_path), headers: true)
|
329
|
+
|
330
|
+
data.by_row.each do |row|
|
331
|
+
revision = {}
|
332
|
+
other_attribute_names.each do |attribute_name|
|
333
|
+
revision[attribute_name] = row[attribute_name] unless row[attribute_name].nil?
|
334
|
+
end
|
335
|
+
update_request.append_table(model_parent_name, row[model_parent_name], model_name, revision)
|
336
|
+
end
|
337
|
+
|
338
|
+
puts update_request
|
339
|
+
|
340
|
+
if execute
|
341
|
+
magma_client.update_json(update_request)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
class LoadFromRedcap < Etna::Command
|
348
|
+
include WithEtnaClients
|
349
|
+
include WithLogger
|
350
|
+
include StrongConfirmation
|
351
|
+
|
352
|
+
boolean_flags << '--commit'
|
353
|
+
string_flags << '--models'
|
354
|
+
string_flags << '--mode'
|
355
|
+
|
356
|
+
def execute(project_name, redcap_tokens, models: "all", mode: nil, commit: false)
|
357
|
+
raise "Must provide at least one REDCap token (comma-separated)." unless redcap_tokens.split(',').length > 0
|
358
|
+
|
359
|
+
puts "NOTE: This is a **preview** of what the data loading will look like. Use the --commit flag to load records into Magma." unless commit
|
360
|
+
|
361
|
+
polyphemus_client.job(Etna::Clients::Polyphemus::RedcapJobRequest.new(
|
362
|
+
model_names: "all" == models ? "all" : models.split(','),
|
363
|
+
mode: mode,
|
364
|
+
redcap_tokens: redcap_tokens.split(','),
|
365
|
+
project_name: project_name,
|
366
|
+
commit: commit
|
367
|
+
)) do |response|
|
368
|
+
response.read_body do |chunk|
|
369
|
+
puts clean_sne_message(chunk)
|
370
|
+
end
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
def clean_sne_message(chunk)
|
375
|
+
chunk.split("\n").reject do |c|
|
376
|
+
c.start_with?("retry:") || c.start_with?("event:")
|
377
|
+
end.map do |c|
|
378
|
+
c.gsub("data:", "").strip
|
379
|
+
end.reject do |c|
|
380
|
+
c.empty?
|
381
|
+
end
|
382
|
+
end
|
302
383
|
end
|
303
384
|
end
|
304
385
|
end
|
data/lib/etna.rb
CHANGED
@@ -18,6 +18,8 @@ require_relative './etna/spec'
|
|
18
18
|
require_relative './etna/clients'
|
19
19
|
require_relative './etna/csvs'
|
20
20
|
require_relative './etna/environment_scoped'
|
21
|
+
require_relative './etna/filesystem'
|
22
|
+
require_relative './etna/formatting'
|
21
23
|
|
22
24
|
class EtnaApp
|
23
25
|
include Etna::Application
|
data/lib/etna/client.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
|
-
require 'net/http/persistent'
|
2
1
|
require 'net/http/post/multipart'
|
3
2
|
require 'singleton'
|
4
3
|
require 'rack/utils'
|
5
4
|
|
6
5
|
module Etna
|
7
6
|
class Client
|
8
|
-
def initialize(host, token, routes_available: true,
|
7
|
+
def initialize(host, token, routes_available: true, ignore_ssl: false)
|
9
8
|
@host = host.sub(%r!/$!, '')
|
10
9
|
@token = token
|
11
|
-
@persistent = persistent
|
12
10
|
@ignore_ssl = ignore_ssl
|
13
11
|
|
14
12
|
if routes_available
|
@@ -38,6 +36,10 @@ module Etna
|
|
38
36
|
query_request(Net::HTTP::Get, endpoint, params, &block)
|
39
37
|
end
|
40
38
|
|
39
|
+
def head(endpoint, params = {}, &block)
|
40
|
+
query_request(Net::HTTP::Head, endpoint, params, &block)
|
41
|
+
end
|
42
|
+
|
41
43
|
def options(endpoint, params = {}, &block)
|
42
44
|
query_request(Net::HTTP::Options, endpoint, params, &block)
|
43
45
|
end
|
@@ -79,16 +81,6 @@ module Etna
|
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
82
|
-
def persistent_connection
|
83
|
-
@http ||= begin
|
84
|
-
http = Net::HTTP::Persistent.new
|
85
|
-
http.read_timeout = 3600
|
86
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if @ignore_ssl
|
87
|
-
http
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
|
92
84
|
def body_request(type, endpoint, params = {}, &block)
|
93
85
|
uri = request_uri(endpoint)
|
94
86
|
req = type.new(uri.request_uri, request_params)
|
@@ -141,36 +133,23 @@ module Etna
|
|
141
133
|
|
142
134
|
def request(uri, data)
|
143
135
|
if block_given?
|
144
|
-
|
145
|
-
|
136
|
+
verify_mode = @ignore_ssl ?
|
137
|
+
OpenSSL::SSL::VERIFY_NONE :
|
138
|
+
OpenSSL::SSL::VERIFY_PEER
|
139
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: true, verify_mode: verify_mode) do |http|
|
140
|
+
http.request(data) do |response|
|
146
141
|
status_check!(response)
|
147
142
|
yield response
|
148
143
|
end
|
149
|
-
else
|
150
|
-
verify_mode = @ignore_ssl ?
|
151
|
-
OpenSSL::SSL::VERIFY_NONE :
|
152
|
-
OpenSSL::SSL::VERIFY_PEER
|
153
|
-
Net::HTTP.start(uri.host, uri.port, use_ssl: true, verify_mode: verify_mode) do |http|
|
154
|
-
http.request(data) do |response|
|
155
|
-
status_check!(response)
|
156
|
-
yield response
|
157
|
-
end
|
158
|
-
end
|
159
144
|
end
|
160
145
|
else
|
161
|
-
|
162
|
-
|
146
|
+
verify_mode = @ignore_ssl ?
|
147
|
+
OpenSSL::SSL::VERIFY_NONE :
|
148
|
+
OpenSSL::SSL::VERIFY_PEER
|
149
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: true, verify_mode: verify_mode) do |http|
|
150
|
+
response = http.request(data)
|
163
151
|
status_check!(response)
|
164
152
|
return response
|
165
|
-
else
|
166
|
-
verify_mode = @ignore_ssl ?
|
167
|
-
OpenSSL::SSL::VERIFY_NONE :
|
168
|
-
OpenSSL::SSL::VERIFY_PEER
|
169
|
-
Net::HTTP.start(uri.host, uri.port, use_ssl: true, verify_mode: verify_mode) do |http|
|
170
|
-
response = http.request(data)
|
171
|
-
status_check!(response)
|
172
|
-
return response
|
173
|
-
end
|
174
153
|
end
|
175
154
|
end
|
176
155
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'base64'
|
2
|
+
require 'json'
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
module Etna
|
6
|
+
module Clients
|
7
|
+
class BaseClient
|
8
|
+
attr_reader :host, :token, :ignore_ssl
|
9
|
+
def initialize(host:, token:, ignore_ssl: false)
|
10
|
+
raise "#{self.class.name} client configuration is missing host." unless host
|
11
|
+
raise "#{self.class.name} client configuration is missing token." unless token
|
12
|
+
|
13
|
+
@token = token
|
14
|
+
raise "Your token is expired." if token_expired?
|
15
|
+
|
16
|
+
@etna_client = ::Etna::Client.new(
|
17
|
+
host,
|
18
|
+
token,
|
19
|
+
routes_available: false,
|
20
|
+
ignore_ssl: ignore_ssl)
|
21
|
+
@host = host
|
22
|
+
@ignore_ssl = ignore_ssl
|
23
|
+
end
|
24
|
+
|
25
|
+
def token_expired?
|
26
|
+
# Has the token already expired?
|
27
|
+
token_will_expire?(0)
|
28
|
+
end
|
29
|
+
|
30
|
+
def token_will_expire?(offset=3000)
|
31
|
+
# offset in seconds
|
32
|
+
# Will the user's token expire in the given amount of time?
|
33
|
+
epoch_seconds = JSON.parse(Base64.urlsafe_decode64(token.split('.')[1]))["exp"]
|
34
|
+
expiration = DateTime.strptime(epoch_seconds.to_s, "%s")
|
35
|
+
expiration <= DateTime.now.new_offset + offset
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,23 +1,12 @@
|
|
1
|
-
require 'net/http/persistent'
|
2
1
|
require 'net/http/post/multipart'
|
3
2
|
require 'singleton'
|
4
3
|
require_relative '../../client'
|
5
4
|
require_relative './models'
|
5
|
+
require_relative '../base_client'
|
6
6
|
|
7
7
|
module Etna
|
8
8
|
module Clients
|
9
|
-
class Janus
|
10
|
-
def initialize(host:, token:, persistent: true, ignore_ssl: false)
|
11
|
-
raise 'Janus client configuration is missing host.' unless host
|
12
|
-
raise 'Janus client configuration is missing token.' unless token
|
13
|
-
@etna_client = ::Etna::Client.new(
|
14
|
-
host,
|
15
|
-
token,
|
16
|
-
routes_available: false,
|
17
|
-
persistent: persistent,
|
18
|
-
ignore_ssl: ignore_ssl)
|
19
|
-
end
|
20
|
-
|
9
|
+
class Janus < Etna::Clients::BaseClient
|
21
10
|
def get_project(get_project_request = GetProjectRequest.new)
|
22
11
|
html = nil
|
23
12
|
@etna_client.get(
|
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
require_relative '../../json_serializable_struct'
|
3
|
+
require_relative '../base_client'
|
3
4
|
|
4
5
|
# TODO: In the near future, I'd like to transition to specifying apis via SWAGGER and generating model stubs from the
|
5
6
|
# common definitions. For nowe I've written them out by hand here.
|
6
7
|
module Etna
|
7
8
|
module Clients
|
8
|
-
class Janus
|
9
|
+
class Janus < Etna::Clients::BaseClient
|
9
10
|
class GetProjectRequest < Struct.new(:project_name, keyword_init: true)
|
10
11
|
include JsonSerializableStruct
|
11
12
|
|
@@ -1,27 +1,12 @@
|
|
1
|
-
require 'net/http/persistent'
|
2
1
|
require 'net/http/post/multipart'
|
3
2
|
require 'singleton'
|
3
|
+
require_relative '../base_client'
|
4
4
|
require_relative '../../client'
|
5
5
|
require_relative './models'
|
6
6
|
|
7
7
|
module Etna
|
8
8
|
module Clients
|
9
|
-
class Magma
|
10
|
-
attr_reader :host, :token, :ignore_ssl
|
11
|
-
def initialize(host:, token:, persistent: true, ignore_ssl: false)
|
12
|
-
raise 'Magma client configuration is missing host.' unless host
|
13
|
-
raise 'Magma client configuration is missing token.' unless token
|
14
|
-
@etna_client = ::Etna::Client.new(
|
15
|
-
host,
|
16
|
-
token,
|
17
|
-
routes_available: false,
|
18
|
-
persistent: persistent,
|
19
|
-
ignore_ssl: ignore_ssl)
|
20
|
-
@host = host
|
21
|
-
@token = token
|
22
|
-
@ignore_ssl = ignore_ssl
|
23
|
-
end
|
24
|
-
|
9
|
+
class Magma < Etna::Clients::BaseClient
|
25
10
|
# This endpoint returns models and records by name:
|
26
11
|
# e.g. params:
|
27
12
|
# {
|