enfcli 3.3.4 → 3.4.0.pre.alpha
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/Gemfile.lock +3 -3
- data/lib/enfapi.rb +224 -50
- data/lib/enfcli/commands/captive.rb +485 -0
- data/lib/enfcli/commands/xdns.rb +446 -0
- data/lib/enfcli/version.rb +1 -1
- data/lib/enfcli.rb +11 -1
- data/lib/enfthor.rb +12 -12
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed23993cf8999c35cb290c1c5a694cb4b4ccdd2c4b9d55094c1ba80994eadc0c
|
4
|
+
data.tar.gz: 1ee8c5491dcab964f307832b18cff6def37feb6e04b528a3e0829b7572ad69a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c3dd1750b398ae9b37b7161bf8839df7f788a1c383e706b9087a0330b9fc3f8d0c606c93cf558470a8035e4f35a5c7e007aecb4b739baca146950900c438cf8
|
7
|
+
data.tar.gz: 78a255e25b8048bc813cc9a026ce051857d483ff0779352f7b2b81c6e0e3d9427678630b26fe3b9c350a99b5e1d39670f39711fd05289ce68c5fe0fa8c0ebf04
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
enfcli (3.
|
4
|
+
enfcli (3.4.0.pre.alpha)
|
5
5
|
rest-client (~> 2.0)
|
6
6
|
terminal-table
|
7
7
|
thor (~> 0.20.0)
|
@@ -55,8 +55,8 @@ GEM
|
|
55
55
|
thor (0.20.3)
|
56
56
|
unf (0.1.4)
|
57
57
|
unf_ext
|
58
|
-
unf_ext (0.0.7.
|
59
|
-
unicode-display_width (1.
|
58
|
+
unf_ext (0.0.7.6)
|
59
|
+
unicode-display_width (1.6.0)
|
60
60
|
vcr (4.0.0)
|
61
61
|
webmock (3.4.2)
|
62
62
|
addressable (>= 2.3.6)
|
data/lib/enfapi.rb
CHANGED
@@ -18,6 +18,7 @@ require 'singleton'
|
|
18
18
|
require 'json'
|
19
19
|
require 'date'
|
20
20
|
require 'base64'
|
21
|
+
require 'cgi'
|
21
22
|
|
22
23
|
#
|
23
24
|
# NOTE: When api's are refactored into individual classes
|
@@ -30,25 +31,109 @@ module EnfApi
|
|
30
31
|
def self.to_json(hash)
|
31
32
|
JSON.generate(hash)
|
32
33
|
end
|
33
|
-
|
34
|
+
|
35
|
+
def self.url_encode(str)
|
36
|
+
CGI.escape( str ).gsub("+", "%20")
|
37
|
+
end
|
38
|
+
|
34
39
|
class ERROR < StandardError
|
35
40
|
def initialize(msg = "ENF Api Error")
|
36
41
|
super
|
37
42
|
end
|
38
43
|
end
|
39
44
|
|
45
|
+
class Dns
|
46
|
+
include Singleton
|
47
|
+
|
48
|
+
def initialize
|
49
|
+
@version = "2019-05-27"
|
50
|
+
@xdns_base_url = "/api/xdns/#{@version}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def list_zones(domain)
|
54
|
+
EnfApi::API.instance.get "#{@xdns_base_url}/zones?enf_domain=#{domain}"
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_dns_zone(new_zone)
|
58
|
+
json = EnfApi::to_json(new_zone)
|
59
|
+
EnfApi::API.instance.post "#{@xdns_base_url}/zones", json
|
60
|
+
end
|
61
|
+
|
62
|
+
def update_dns_zone(zone_id, updated_zone)
|
63
|
+
json = EnfApi::to_json(updated_zone)
|
64
|
+
EnfApi::API.instance.put "#{@xdns_base_url}/zones/#{zone_id}", json
|
65
|
+
end
|
66
|
+
|
67
|
+
def delete_dns_zone(zone_id)
|
68
|
+
EnfApi::API.instance.delete "#{@xdns_base_url}/zones/#{zone_id}"
|
69
|
+
end
|
70
|
+
|
71
|
+
def add_networks_to_zone(zone_id, add_networks)
|
72
|
+
json = EnfApi::to_json(add_networks)
|
73
|
+
EnfApi::API.instance.post "#{@xdns_base_url}/zones/#{zone_id}/networks", json
|
74
|
+
end
|
75
|
+
|
76
|
+
def replace_networks_in_zone(zone_id, replace_networks)
|
77
|
+
json = EnfApi::to_json(replace_networks)
|
78
|
+
EnfApi::API.instance.put "#{@xdns_base_url}/zones/#{zone_id}/networks", json
|
79
|
+
end
|
80
|
+
|
81
|
+
def list_networks_in_zone(zone_id)
|
82
|
+
EnfApi::API.instance.get "#{@xdns_base_url}/zones/#{zone_id}/networks"
|
83
|
+
end
|
84
|
+
|
85
|
+
def delete_networks_from_zone(zone_id, delete_networks)
|
86
|
+
EnfApi::API.instance.delete "#{@xdns_base_url}/zones/#{zone_id}/networks?delete=#{delete_networks}"
|
87
|
+
end
|
88
|
+
|
89
|
+
def list_zones_in_network(network)
|
90
|
+
EnfApi::API.instance.get "#{@xdns_base_url}/networks/#{network}/zones"
|
91
|
+
end
|
92
|
+
|
93
|
+
def provision_server(network, new_server)
|
94
|
+
json = EnfApi::to_json(new_server)
|
95
|
+
EnfApi::API.instance.post "#{@xdns_base_url}/networks/#{network}/servers", json
|
96
|
+
end
|
97
|
+
|
98
|
+
def list_servers(network)
|
99
|
+
EnfApi::API.instance.get "#{@xdns_base_url}/networks/#{network}/servers"
|
100
|
+
end
|
101
|
+
|
102
|
+
def delete_server(network, server_ipv6)
|
103
|
+
EnfApi::API.instance.delete "#{@xdns_base_url}/networks/#{network}/servers/#{server_ipv6}"
|
104
|
+
end
|
105
|
+
|
106
|
+
def create_dns_record(zone_id, new_record)
|
107
|
+
json = EnfApi::to_json(new_record)
|
108
|
+
EnfApi::API.instance.post "#{@xdns_base_url}/zones/#{zone_id}/records", json
|
109
|
+
end
|
110
|
+
|
111
|
+
def list_dns_records(zone_id)
|
112
|
+
EnfApi::API.instance.get "#{@xdns_base_url}/zones/#{zone_id}/records"
|
113
|
+
end
|
114
|
+
|
115
|
+
def query(network, type, name)
|
116
|
+
EnfApi::API.instance.get "#{@xdns_base_url}/networks/#{network}/query/#{type}/#{name}"
|
117
|
+
end
|
118
|
+
|
119
|
+
def delete_dns_record(record_id)
|
120
|
+
EnfApi::API.instance.delete "#{@xdns_base_url}/records/#{record_id}"
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
40
125
|
class Firewall
|
41
126
|
include Singleton
|
42
|
-
|
127
|
+
|
43
128
|
def list_firewall_rules(network)
|
44
129
|
EnfApi::API.instance.get "/api/xfw/v1/#{network}/rule"
|
45
130
|
end
|
46
|
-
|
47
|
-
def add_firewall_rule(network, rule)
|
131
|
+
|
132
|
+
def add_firewall_rule(network, rule)
|
48
133
|
rule_json = EnfApi::to_json(rule)
|
49
134
|
EnfApi::API.instance.post "/api/xfw/v1/#{network}/rule", rule_json
|
50
135
|
end
|
51
|
-
|
136
|
+
|
52
137
|
def delete_firewall_rules(network, id = nil)
|
53
138
|
# Same method to call to delete all firewall rules in a network. if id is nil
|
54
139
|
EnfApi::API.instance.delete "/api/xfw/v1/#{network}/rule/#{id}"
|
@@ -59,7 +144,7 @@ module EnfApi
|
|
59
144
|
include Singleton
|
60
145
|
|
61
146
|
## NO_TEST
|
62
|
-
def provision_group(new_group)
|
147
|
+
def provision_group(new_group)
|
63
148
|
json = EnfApi::to_json(new_group)
|
64
149
|
EnfApi::API.instance.post "/api/xiam/v1/groups", json
|
65
150
|
end
|
@@ -71,7 +156,7 @@ module EnfApi
|
|
71
156
|
end
|
72
157
|
|
73
158
|
## NO_TEST
|
74
|
-
def add_group_to_network(gid, ipv6_network)
|
159
|
+
def add_group_to_network(gid, ipv6_network)
|
75
160
|
json = EnfApi::to_json(ipv6_network)
|
76
161
|
EnfApi::API.instance.post "/api/xiam/v1/groups/#{gid}/networks", json
|
77
162
|
end
|
@@ -87,23 +172,110 @@ module EnfApi
|
|
87
172
|
end
|
88
173
|
|
89
174
|
## NO_TEST
|
90
|
-
def provision_endpoint(new_endpoint)
|
175
|
+
def provision_endpoint(new_endpoint)
|
91
176
|
json = EnfApi::to_json(new_endpoint)
|
92
177
|
EnfApi::API.instance.post "/api/xiam/v1/endpoints", json
|
93
178
|
end
|
94
179
|
|
95
180
|
## NO_TEST
|
96
|
-
def update_endpoint_key(ipv6, credentials)
|
181
|
+
def update_endpoint_key(ipv6, credentials)
|
97
182
|
json = EnfApi::to_json(credentials)
|
98
183
|
EnfApi::API.instance.post "/api/xiam/v1/endpoints/#{ipv6}/credentials", json
|
99
184
|
end
|
100
|
-
|
185
|
+
|
186
|
+
end
|
187
|
+
|
188
|
+
##############################################################################
|
189
|
+
#
|
190
|
+
# Captive
|
191
|
+
#
|
192
|
+
##############################################################################
|
193
|
+
class Captive
|
194
|
+
include Singleton
|
195
|
+
|
196
|
+
## NO_TEST
|
197
|
+
def list_wifi_configurations
|
198
|
+
EnfApi::API.instance.get "/api/captive/v1/wifi"
|
199
|
+
end
|
200
|
+
|
201
|
+
## NO_TEST
|
202
|
+
def create_wifi_configuration(new_wifi_config)
|
203
|
+
json = EnfApi::to_json(new_wifi_config)
|
204
|
+
EnfApi::API.instance.post "/api/captive/v1/wifi", json
|
205
|
+
end
|
206
|
+
|
207
|
+
# Get the wifi configuration using the wifi id
|
208
|
+
## NO_TEST
|
209
|
+
def get_wifi_configuration(wifi_id, version = nil)
|
210
|
+
url = "/api/captive/v1/wifi/#{wifi_id}"
|
211
|
+
url = "#{url}?version=#{version}" if version
|
212
|
+
EnfApi::API.instance.get url
|
213
|
+
end
|
214
|
+
|
215
|
+
# Update an existing wifi configuration
|
216
|
+
## NO_TEST
|
217
|
+
def update_wifi_configuration(wifi_id, updated_wifi_config)
|
218
|
+
json = EnfApi::to_json(updated_wifi_config)
|
219
|
+
EnfApi::API.instance.put "/api/captive/v1/wifi/#{wifi_id}", json
|
220
|
+
end
|
221
|
+
|
222
|
+
|
223
|
+
# Post the new device
|
224
|
+
## NO_TEST
|
225
|
+
def create_device(new_dev_hash)
|
226
|
+
json = EnfApi.to_json(new_dev_hash)
|
227
|
+
EnfApi::API.instance.post "/api/captive/v1/device", json
|
228
|
+
end
|
229
|
+
|
230
|
+
# Get the list of devices
|
231
|
+
## NO_TEST
|
232
|
+
def list_devices(network)
|
233
|
+
url = "/api/captive/v1/device"
|
234
|
+
url = "#{url}?#{network}" if network
|
235
|
+
EnfApi::API.instance.get url
|
236
|
+
end
|
237
|
+
|
238
|
+
# Get a specific device detail
|
239
|
+
## NO_TEST
|
240
|
+
def get_device(dev_id)
|
241
|
+
EnfApi::API.instance.get "/api/captive/v1/device/#{dev_id}"
|
242
|
+
end
|
243
|
+
|
244
|
+
# Post the new profile
|
245
|
+
## NO_TEST
|
246
|
+
def create_profile(new_profile_hash)
|
247
|
+
json = EnfApi.to_json(new_profile_hash)
|
248
|
+
EnfApi::API.instance.post "/api/captive/v1/profile", json
|
249
|
+
end
|
250
|
+
|
251
|
+
|
252
|
+
# Get the list of profiles
|
253
|
+
# name is a substring of the profile names to be returned
|
254
|
+
## NO_TEST
|
255
|
+
def list_profiles(name = nil)
|
256
|
+
url = "/api/captive/v1/profile"
|
257
|
+
url = "#{url}?#{name}" if name
|
258
|
+
EnfApi::API.instance.get url
|
259
|
+
end
|
260
|
+
|
261
|
+
# Get detail on a specific profile
|
262
|
+
## NO_TEST
|
263
|
+
def get_profile (profile_id)
|
264
|
+
EnfApi::API.instance.get "/api/captive/v1/profile/#{profile_id}"
|
265
|
+
end
|
266
|
+
|
267
|
+
# Send update PUT request for profile
|
268
|
+
## NO_TEST
|
269
|
+
def update_profile (id, profile_updates)
|
270
|
+
json = EnfApi.to_json(profile_updates)
|
271
|
+
EnfApi::API.instance.put "/api/captive/v1/profile/#{id}", json
|
272
|
+
end
|
101
273
|
end
|
102
274
|
|
103
275
|
class NetworkManager
|
104
276
|
include Singleton
|
105
277
|
end
|
106
|
-
|
278
|
+
|
107
279
|
class API
|
108
280
|
include Singleton
|
109
281
|
|
@@ -128,7 +300,7 @@ module EnfApi
|
|
128
300
|
case response.code
|
129
301
|
when 200
|
130
302
|
# get resp from json
|
131
|
-
resp = from_json(response.body)
|
303
|
+
resp = from_json(response.body)
|
132
304
|
|
133
305
|
# set request headers for subsequent api calls
|
134
306
|
token = resp[:data][0][:token]
|
@@ -144,28 +316,28 @@ module EnfApi
|
|
144
316
|
|
145
317
|
def get(request_uri)
|
146
318
|
@api[request_uri].get(@headers) {|response, request, result|
|
147
|
-
process_api_response response, request, result
|
319
|
+
process_api_response response, request, result
|
148
320
|
}
|
149
321
|
end
|
150
322
|
|
151
323
|
def post(request_uri, request_body = '')
|
152
324
|
@api[request_uri].post(request_body, @headers) {|response, request, result|
|
153
|
-
process_api_response response, request, result
|
325
|
+
process_api_response response, request, result
|
154
326
|
}
|
155
327
|
end
|
156
328
|
|
157
329
|
def put(request_uri, request_body = '')
|
158
330
|
@api[request_uri].put(request_body, @headers) {|response, request, result|
|
159
|
-
process_api_response response, request, result
|
331
|
+
process_api_response response, request, result
|
160
332
|
}
|
161
|
-
end
|
333
|
+
end
|
162
334
|
|
163
335
|
def delete(request_uri)
|
164
336
|
@api[request_uri].delete(@headers) {|response, request, result|
|
165
|
-
process_api_response response, request, result
|
337
|
+
process_api_response response, request, result
|
166
338
|
}
|
167
|
-
end
|
168
|
-
|
339
|
+
end
|
340
|
+
|
169
341
|
############################################################################################################################
|
170
342
|
# NOT READY API. MOVE ABOVE THIS LINE AFTER RSPEC OR INTO OWN CLASS
|
171
343
|
############################################################################################################################
|
@@ -175,47 +347,47 @@ module EnfApi
|
|
175
347
|
}
|
176
348
|
end
|
177
349
|
|
178
|
-
def list_enfnws
|
350
|
+
def list_enfnws
|
179
351
|
@api["/api/xcr/v2/enfnws"].get( @headers) {|response, request, result|
|
180
352
|
process_api_response response, request, result
|
181
353
|
}
|
182
354
|
end
|
183
|
-
|
184
|
-
def list_domains
|
355
|
+
|
356
|
+
def list_domains
|
185
357
|
@api["/api/xcr/v2/domains"].get( @headers) {|response, request, result|
|
186
358
|
process_api_response response, request, result
|
187
359
|
}
|
188
360
|
end
|
189
|
-
|
190
|
-
def get_domain(domain_id)
|
361
|
+
|
362
|
+
def get_domain(domain_id)
|
191
363
|
@api["/api/xcr/v2/domains/#{domain_id}"].get( @headers) {|response, request, result|
|
192
364
|
process_api_response response, request, result
|
193
365
|
}
|
194
366
|
end
|
195
367
|
|
196
368
|
def create_domain(domain_hash)
|
197
|
-
json = to_json( domain_hash )
|
369
|
+
json = to_json( domain_hash )
|
198
370
|
@api["/api/xcr/v2/domains"].post( json, @headers) {|response, request, result|
|
199
371
|
process_api_response response, request, result
|
200
372
|
}
|
201
373
|
end
|
202
374
|
|
203
375
|
def update_domain_rate_limits(domain_network, limit, limits_hash)
|
204
|
-
json = to_json( limits_hash )
|
376
|
+
json = to_json( limits_hash )
|
205
377
|
@api["/api/xcr/v2/domains/#{domain_network}/ep_rate_limits/#{limit}"].put( json, @headers) {|response, request, result|
|
206
378
|
process_api_response response, request, result
|
207
379
|
}
|
208
380
|
end
|
209
381
|
|
210
382
|
def update_network_rate_limits(network, limit, limits_hash)
|
211
|
-
json = to_json( limits_hash )
|
383
|
+
json = to_json( limits_hash )
|
212
384
|
@api["/api/xcr/v2/nws/#{network}/ep_rate_limits/#{limit}"].put( json, @headers) {|response, request, result|
|
213
385
|
process_api_response response, request, result
|
214
386
|
}
|
215
387
|
end
|
216
388
|
|
217
389
|
def update_ep_rate_limits(ipv6, limit, limits_hash)
|
218
|
-
json = to_json( limits_hash )
|
390
|
+
json = to_json( limits_hash )
|
219
391
|
@api["/api/xcr/v2/cxns/#{ipv6}/ep_rate_limits/#{limit}"].put( json, @headers) {|response, request, result|
|
220
392
|
process_api_response response, request, result
|
221
393
|
}
|
@@ -224,7 +396,7 @@ module EnfApi
|
|
224
396
|
def get_domain_rate_limits(domain_network, filter = nil)
|
225
397
|
api_url = "/api/xcr/v2/domains/#{domain_network}/ep_rate_limits"
|
226
398
|
api_url = "#{api_url}/#{filter}" if filter
|
227
|
-
|
399
|
+
|
228
400
|
@api[api_url].get( @headers) {|response, request, result|
|
229
401
|
process_api_response response, request, result
|
230
402
|
}
|
@@ -233,7 +405,7 @@ module EnfApi
|
|
233
405
|
def get_network_rate_limits(network, filter = nil)
|
234
406
|
api_url = "/api/xcr/v2/nws/#{network}/ep_rate_limits"
|
235
407
|
api_url = "#{api_url}/#{filter}" if filter
|
236
|
-
|
408
|
+
|
237
409
|
@api[api_url].get( @headers) {|response, request, result|
|
238
410
|
process_api_response response, request, result
|
239
411
|
}
|
@@ -242,7 +414,7 @@ module EnfApi
|
|
242
414
|
def get_ep_rate_limits(ipv6, filter = nil)
|
243
415
|
api_url = "/api/xcr/v2/cxns/#{ipv6}/ep_rate_limits"
|
244
416
|
api_url = "#{api_url}/#{filter}" if filter
|
245
|
-
|
417
|
+
|
246
418
|
@api[api_url].get( @headers) {|response, request, result|
|
247
419
|
process_api_response response, request, result
|
248
420
|
}
|
@@ -258,35 +430,35 @@ module EnfApi
|
|
258
430
|
@api["/api/xcr/v2/domains/#{domain_network}/status"].delete( @headers) {|response, request, result|
|
259
431
|
process_api_response response, request, result
|
260
432
|
}
|
261
|
-
end
|
433
|
+
end
|
262
434
|
|
263
435
|
def create_nw(nw_hash)
|
264
436
|
json = to_json(nw_hash)
|
265
|
-
domain_id = nw_hash[:domain_id]
|
437
|
+
domain_id = nw_hash[:domain_id]
|
266
438
|
@api["/api/xcr/v2/domains/#{domain_id}/nws"].post(json, @headers) {|response, request, result|
|
267
439
|
process_api_response response, request, result
|
268
440
|
}
|
269
441
|
end
|
270
|
-
|
271
|
-
def list_nw_connections(domain_id, network_cidr, file = nil)
|
442
|
+
|
443
|
+
def list_nw_connections(domain_id, network_cidr, file = nil)
|
272
444
|
@api["/api/xcr/v2/domains/#{domain_id}/nws/#{network_cidr}/cxns"].get(@headers) {|response, request, result|
|
273
445
|
process_api_response response, request, result
|
274
446
|
}
|
275
447
|
end
|
276
448
|
|
277
|
-
def list_endpoint_events(ipv6)
|
449
|
+
def list_endpoint_events(ipv6)
|
278
450
|
@api["/api/xcr/v2/cxns/#{ipv6}/events"].get(@headers) {|response, request, result|
|
279
451
|
process_api_response response, request, result
|
280
452
|
}
|
281
453
|
end
|
282
454
|
|
283
|
-
def list_network_events(network_cidr)
|
455
|
+
def list_network_events(network_cidr)
|
284
456
|
@api["/api/xcr/v2/nws/#{network_cidr}/events"].get(@headers) {|response, request, result|
|
285
457
|
process_api_response response, request, result
|
286
458
|
}
|
287
459
|
end
|
288
460
|
|
289
|
-
def get_endpoint(ipv6)
|
461
|
+
def get_endpoint(ipv6)
|
290
462
|
@api["/api/xcr/v2/cxns/#{ipv6}"].get(@headers) {|response, request, result|
|
291
463
|
process_api_response response, request, result
|
292
464
|
}
|
@@ -295,19 +467,19 @@ module EnfApi
|
|
295
467
|
def update_endpoint(ipv6, name)
|
296
468
|
hash = { :ipv6 => ipv6, :name => name }
|
297
469
|
json = to_json( hash )
|
298
|
-
|
470
|
+
|
299
471
|
@api["/api/xcr/v2/cxns/#{ipv6}"].put( json, @headers) {|response, request, result|
|
300
|
-
process_api_response response, request, result
|
472
|
+
process_api_response response, request, result
|
301
473
|
}
|
302
474
|
end
|
303
475
|
|
304
|
-
def activate_enfnw(subnet)
|
476
|
+
def activate_enfnw(subnet)
|
305
477
|
@api["/api/xcr/v2/enfnws/#{subnet}"].put( '', @headers) {|response, request, result|
|
306
|
-
process_api_response response, request, result
|
478
|
+
process_api_response response, request, result
|
307
479
|
}
|
308
480
|
end
|
309
481
|
|
310
|
-
def list_domain_users(domain_network)
|
482
|
+
def list_domain_users(domain_network)
|
311
483
|
@api["/api/xcr/v2/domains/#{domain_network}/users"].get( @headers) {|response, request, result|
|
312
484
|
puts response.code
|
313
485
|
process_api_response response, request, result
|
@@ -324,10 +496,10 @@ module EnfApi
|
|
324
496
|
json = to_json( hash )
|
325
497
|
@api["/api/xcr/v2/domains/#{domain_network}/invites"].post( json, @headers) { |response, request, result|
|
326
498
|
process_api_response response, request, result
|
327
|
-
}
|
499
|
+
}
|
328
500
|
end
|
329
501
|
|
330
|
-
def cancel_invite(email)
|
502
|
+
def cancel_invite(email)
|
331
503
|
@api["/api/xcr/v2/invites/#{email}"].delete( @headers) {|response, request, result|
|
332
504
|
process_api_response response, request, result
|
333
505
|
}
|
@@ -336,7 +508,7 @@ module EnfApi
|
|
336
508
|
def resend_invite(email)
|
337
509
|
@api["/api/xcr/v2/invites/#{email}"].put( "{}", @headers) {|response, request, result|
|
338
510
|
process_api_response response, request, result
|
339
|
-
}
|
511
|
+
}
|
340
512
|
end
|
341
513
|
|
342
514
|
############################################################################################################################
|
@@ -351,7 +523,7 @@ module EnfApi
|
|
351
523
|
when 201
|
352
524
|
# return response body
|
353
525
|
from_json(response.body)
|
354
|
-
|
526
|
+
|
355
527
|
when 400
|
356
528
|
# api returns and error
|
357
529
|
raise EnfApi::ERROR, api_error_msg(from_json(response.body))
|
@@ -363,12 +535,12 @@ module EnfApi
|
|
363
535
|
when 403
|
364
536
|
# api returns and error
|
365
537
|
raise EnfApi::ERROR, "AUTHORIZATION_ERROR: User is not authorized to perform this operation!"
|
366
|
-
|
538
|
+
|
367
539
|
else
|
368
540
|
raise EnfApi::ERROR, "Unexpected error! Please try again!"
|
369
541
|
end
|
370
542
|
end
|
371
|
-
|
543
|
+
|
372
544
|
def from_json(string)
|
373
545
|
begin
|
374
546
|
JSON.parse(string, {:symbolize_names => true})
|
@@ -386,10 +558,12 @@ module EnfApi
|
|
386
558
|
reason = err[:reason]
|
387
559
|
reason = Base64.decode64(reason)
|
388
560
|
"#{reason}"
|
389
|
-
|
561
|
+
elsif err.key?(:error)
|
390
562
|
code = err[:error][:code]
|
391
563
|
text = err[:error][:text]
|
392
564
|
"#{code.upcase}: #{text}"
|
565
|
+
else
|
566
|
+
"UNKNOWN_ERROR: server did not respond with properly formatted error message."
|
393
567
|
end
|
394
568
|
end
|
395
569
|
|