arangorb 0.1.0 → 1.0.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/ArangoRB.gemspec +2 -2
  3. data/README.md +418 -123
  4. data/lib/ArangoRB_AQL.rb +90 -103
  5. data/lib/ArangoRB_Col.rb +476 -159
  6. data/lib/ArangoRB_DB.rb +305 -79
  7. data/lib/ArangoRB_Doc.rb +112 -114
  8. data/lib/ArangoRB_Edg.rb +81 -62
  9. data/lib/ArangoRB_Gra.rb +125 -76
  10. data/lib/ArangoRB_Index.rb +144 -0
  11. data/lib/ArangoRB_Ser.rb +439 -18
  12. data/lib/ArangoRB_Task.rb +136 -0
  13. data/lib/ArangoRB_Tra.rb +47 -42
  14. data/lib/ArangoRB_Tran.rb +48 -0
  15. data/lib/ArangoRB_User.rb +152 -0
  16. data/lib/ArangoRB_Ver.rb +74 -57
  17. data/lib/arangorb.rb +4 -0
  18. data/spec/arangoRB_helper.rb +2 -9
  19. data/spec/arangoRestart_helper.rb +14 -0
  20. data/spec/lib/{arangoAQL_helper.rb → 0.1.0/arangoAQL_helper.rb} +2 -21
  21. data/spec/lib/{arangoC_helper.rb → 0.1.0/arangoC_helper.rb} +40 -19
  22. data/spec/lib/{arangoDB_helper.rb → 0.1.0/arangoDB_helper.rb} +13 -13
  23. data/spec/lib/{arangoDoc_helper.rb → 0.1.0/arangoDoc_helper.rb} +10 -23
  24. data/spec/lib/0.1.0/arangoE_helper.rb +50 -0
  25. data/spec/lib/{arangoG_helper.rb → 0.1.0/arangoG_helper.rb} +7 -21
  26. data/spec/lib/0.1.0/arangoS_helper.rb +37 -0
  27. data/spec/lib/0.1.0/arangoT_helper.rb +48 -0
  28. data/spec/lib/{arangoV_helper.rb → 0.1.0/arangoV_helper.rb} +6 -22
  29. data/spec/lib/1.0.0/arangoC_helper.rb +73 -0
  30. data/spec/lib/1.0.0/arangoDB_helper.rb +81 -0
  31. data/spec/lib/1.0.0/arangoI_helper.rb +43 -0
  32. data/spec/lib/1.0.0/arangoS_helper.rb +196 -0
  33. data/spec/lib/1.0.0/arangoTa_helper.rb +49 -0
  34. data/spec/lib/1.0.0/arangoTr_helper.rb +15 -0
  35. data/spec/lib/1.0.0/arangoU_helper.rb +72 -0
  36. data/spec/lib/arangoRB_0.1.0_helper.rb +9 -0
  37. data/spec/lib/arangoRB_1.0.0_helper.rb +6 -0
  38. data/spec/spec_helper.rb +34 -0
  39. metadata +28 -15
  40. data/spec/lib/arangoE_helper.rb +0 -70
  41. data/spec/lib/arangoS_helper.rb +0 -28
  42. data/spec/lib/arangoT_helper.rb +0 -67
data/lib/ArangoRB_DB.rb CHANGED
@@ -1,26 +1,30 @@
1
1
  # === DATABASE ===
2
2
 
3
- class ArangoDB < ArangoS
4
- def initialize(database: @@database)
3
+ class ArangoDatabase < ArangoServer
4
+ def initialize(database: @@database) # TESTED
5
5
  if database.is_a?(String)
6
6
  @database = database
7
+ elsif database.is_a?(ArangoDatabase)
8
+ @database = database.database
7
9
  else
8
- raise "database should be a String, not a #{database.class}"
10
+ raise "database should be a String or an ArangoDatabase instance, not a #{database.class}"
9
11
  end
10
12
  end
11
13
 
12
- attr_reader :database
14
+ attr_reader :database # TESTED
13
15
 
14
16
  # === GET ===
15
17
 
16
- def self.info
17
- result = get("/_api/database/current")
18
- @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"]
18
+ def info # TESTED
19
+ result = self.class.get("/_db/#{@database}/_api/database/current", @@request)
20
+ return result.headers["x-arango-async-id"] if @@async == "store"
21
+ result = result.parsed_response
22
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].delete_if{|k,v| k == "error" || k == "code"}
19
23
  end
20
24
 
21
25
  # === POST ===
22
26
 
23
- def create(username: nil, passwd: nil, users: nil)
27
+ def create(username: nil, passwd: nil, users: nil) # TESTED
24
28
  body = {
25
29
  "name" => @database,
26
30
  "username" => username,
@@ -28,83 +32,100 @@ class ArangoDB < ArangoS
28
32
  "users" => users
29
33
  }
30
34
  body = body.delete_if{|k,v| v.nil?}.to_json
31
- new_DB = { :body => body }
32
- result = self.class.post("/_api/database", new_DB)
33
- @@verbose ? result : result["error"] ? result["errorMessage"] : ArangoDB.new(database: @database)
35
+ request = @@request.merge({ :body => body })
36
+ result = self.class.post("/_api/database", request)
37
+ @@async == "store" ? result.headers["x-arango-async-id"] : @@verbose ? result.parsed_response : result.parsed_response["error"] ? result.parsed_response["errorMessage"] : self
34
38
  end
35
39
 
36
40
  # === DELETE ===
37
41
 
38
- def destroy
39
- result = self.class.delete("/_api/database/#{@database}")
40
- @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"]
42
+ def destroy # TESTED
43
+ result = self.class.delete("/_api/database/#{@database}", @@request)
44
+ self.class.return_result(result: result, caseTrue: true)
41
45
  end
42
46
 
43
47
  # === LISTS ===
44
48
 
45
- def self.databases(user: nil)
46
- result = user.nil? ? get("/_api/database") : get("/_api/database/#{user}")
47
- @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoDB.new(database: x)}
49
+ def self.databases(user: nil) # TESTED
50
+ user = user.user if user.is_a?(ArangoUser)
51
+ result = user.nil? ? get("/_api/database") : get("/_api/database/#{user}", @@request)
52
+ return result.headers["x-arango-async-id"] if @@async == "store"
53
+ result = result.parsed_response
54
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoDatabase.new(database: x)}
48
55
  end
49
56
 
50
- def collections(excludeSystem: true)
57
+ def collections(excludeSystem: true) # TESTED
51
58
  query = { "excludeSystem": excludeSystem }.delete_if{|k,v| v.nil?}
52
- new_Document = { :query => query }
53
- result = self.class.get("/_db/#{@database}/_api/collection", new_Document)
54
- if @@verbose
55
- return result
59
+ request = @@request.merge({ :query => query })
60
+ result = self.class.get("/_db/#{@database}/_api/collection", request)
61
+ if @@async == "store"
62
+ result.headers["x-arango-async-id"]
56
63
  else
57
- if result["error"]
58
- return result["errorMessage"]
64
+ result = result.parsed_response
65
+ if @@verbose
66
+ result
59
67
  else
60
- return result["result"].map{|x| ArangoC.new(database: @database, collection: x["name"])}
68
+ if result["error"]
69
+ result["errorMessage"]
70
+ else
71
+ result["result"].map{|x| ArangoCollection.new(database: @database, collection: x["name"])}
72
+ end
61
73
  end
62
74
  end
63
75
  end
64
76
 
65
- def graphs
66
- result = self.class.get("/_db/#{@database}/_api/gharial")
67
- if @@verbose
68
- return result
77
+ def graphs # TESTED
78
+ result = self.class.get("/_db/#{@database}/_api/gharial", @@request)
79
+ if @@async == "store"
80
+ result.headers["x-arango-async-id"]
69
81
  else
70
- if result["error"]
71
- return result["errorMessage"]
82
+ result = result.parsed_response
83
+ if @@verbose
84
+ result
72
85
  else
73
- return result["graphs"].map{|x| ArangoG.new(database: @database, graph: x["_key"], edgeDefinitions: x["edgeDefinitions"], orphanCollections: x["orphanCollections"])}
86
+ if result["error"]
87
+ result["errorMessage"]
88
+ else
89
+ result["graphs"].map{|x| ArangoGraph.new(database: @database, graph: x["_key"], edgeDefinitions: x["edgeDefinitions"], orphanCollections: x["orphanCollections"])}
90
+ end
74
91
  end
75
92
  end
76
93
  end
77
94
 
78
- def functions
79
- self.class.get("/_db/#{@database}/_api/aqlfunction").parsed_response
95
+ def functions # TESTED
96
+ result = self.class.get("/_db/#{@database}/_api/aqlfunction", @@request)
97
+ self.class.return_result result: result
80
98
  end
81
99
 
82
100
  # === QUERY ===
83
101
 
84
- def propertiesQuery
85
- result = self.class.get("/_db/#{@database}/_api/query/properties").parsed_response
86
- return_result(result)
102
+ def propertiesQuery # TESTED
103
+ result = self.class.get("/_db/#{@database}/_api/query/properties", @@request)
104
+ self.class.return_result result: result
87
105
  end
88
106
 
89
- def currentQuery
90
- self.class.get("/_db/#{@database}/_api/query/current").parsed_response
107
+ def currentQuery # TESTED
108
+ result = self.class.get("/_db/#{@database}/_api/query/current", @@request)
109
+ self.class.return_result result: result
91
110
  end
92
111
 
93
- def slowQuery
94
- self.class.get("/_db/#{@database}/_api/query/slow").parsed_response
112
+ def slowQuery # TESTED
113
+ result = self.class.get("/_db/#{@database}/_api/query/slow", @@request)
114
+ self.class.return_result result: result
95
115
  end
96
116
 
97
- def stopSlowQuery
98
- result = self.class.delete("/_db/#{@database}/_api/query/slow").parsed_response
99
- @@verbose ? result : result["error"] ? result["errorMessage"] : true
117
+ def stopSlowQuery # TESTED
118
+ result = self.class.delete("/_db/#{@database}/_api/query/slow", @@request)
119
+ self.class.return_result result: result, caseTrue: true
100
120
  end
101
121
 
102
- def killQuery(id:)
103
- result = self.class.delete("/_db/#{@database}/_api/query/#{id}").parsed_response
104
- @@verbose ? result : result["error"] ? result["errorMessage"] : true
122
+ def killQuery(query:) # TESTED
123
+ id = query.is_a?(ArangoAQL) ? query.id : query.is_a?(String) ? query : nil
124
+ result = self.class.delete("/_db/#{@database}/_api/query/#{id}", @@request)
125
+ self.class.return_result result: result, caseTrue: true
105
126
  end
106
127
 
107
- def changePropertiesQuery(slowQueryThreshold: nil, enabled: nil, maxSlowQueries: nil, trackSlowQueries: nil, maxQueryStringLength: nil)
128
+ def changePropertiesQuery(slowQueryThreshold: nil, enabled: nil, maxSlowQueries: nil, trackSlowQueries: nil, maxQueryStringLength: nil) # TESTED
108
129
  body = {
109
130
  "slowQueryThreshold" => slowQueryThreshold,
110
131
  "enabled" => enabled,
@@ -112,59 +133,264 @@ class ArangoDB < ArangoS
112
133
  "trackSlowQueries" => trackSlowQueries,
113
134
  "maxQueryStringLength" => maxQueryStringLength
114
135
  }.delete_if{|k,v| v.nil?}
115
- new_Document = { :body => body.to_json }
116
- result = self.class.put("/_db/#{@database}/_api/query/properties", new_Document).parsed_response
117
- return_result(result)
136
+ request = @@request.merge({ :body => body.to_json })
137
+ result = self.class.put("/_db/#{@database}/_api/query/properties", request)
138
+ self.class.return_result result: result
118
139
  end
119
140
 
120
141
  # === CACHE ===
121
142
 
122
- def clearCache
123
- result = self.class.delete("/_db/#{@database}/_api/query-cache").parsed_response
124
- @@verbose ? result : result["error"] ? result["errorMessage"] : true
143
+ def clearCache # TESTED
144
+ result = self.class.delete("/_db/#{@database}/_api/query-cache", @@request)
145
+ self.class.return_result result: result, caseTrue: true
125
146
  end
126
147
 
127
- def propertyCache
128
- self.class.get("/_db/#{@database}/_api/query-cache/properties").parsed_response
148
+ def propertyCache # TESTED
149
+ result = self.class.get("/_db/#{@database}/_api/query-cache/properties", @@request)
150
+ self.class.return_result result: result
129
151
  end
130
152
 
131
- def changePropertyCache(mode: nil, maxResults: nil)
153
+ def changePropertyCache(mode: nil, maxResults: nil) # TESTED
132
154
  body = { "mode" => mode, "maxResults" => maxResults }.delete_if{|k,v| v.nil?}
133
- new_Document = { :body => body.to_json }
134
- self.class.put("/_db/#{@database}/_api/query-cache/properties", new_Document).parsed_response
155
+ request = @@request.merge({ :body => body.to_json })
156
+ result = self.class.put("/_db/#{@database}/_api/query-cache/properties", request)
157
+ self.class.return_result result: result
135
158
  end
136
159
 
137
160
  # === AQL FUNCTION ===
138
161
 
139
- def createFunction(code:, name:, isDeterministic: nil)
162
+ def createFunction(code:, name:, isDeterministic: nil) # TESTED
140
163
  body = {
141
164
  "code" => code,
142
165
  "name" => name,
143
166
  "isDeterministic" => isDeterministic
144
167
  }.delete_if{|k,v| v.nil?}
145
- new_Document = { :body => body.to_json }
146
- result = self.class.post("/_db/#{@database}/_api/aqlfunction", new_Document).parsed_response
147
- return_result(result)
168
+ request = @@request.merge({ :body => body.to_json })
169
+ result = self.class.post("/_db/#{@database}/_api/aqlfunction", request)
170
+ self.class.return_result result: result
148
171
  end
149
172
 
150
- def deleteFunction(name:)
151
- result = self.class.delete("/_db/#{@database}/_api/aqlfunction/#{name}")
152
- @@verbose ? result : result["error"] ? result["errorMessage"] : true
173
+ def deleteFunction(name:) # TESTED
174
+ result = self.class.delete("/_db/#{@database}/_api/aqlfunction/#{name}", @@request)
175
+ self.class.return_result result: result, caseTrue: true
153
176
  end
154
177
 
155
- # === UTILITY ===
178
+ # # === ASYNC ===
179
+ #
180
+ # def pendingAsync # TESTED
181
+ # result = self.class.get("/_db/#{@database}/_api/job/pending")
182
+ # return_result_async result: result
183
+ # end
184
+ #
185
+ # def fetchAsync(id:) # TESTED
186
+ # result = self.class.put("/_db/#{@database}/_api/job/#{id}")
187
+ # return_result_async result: result
188
+ # end
189
+ #
190
+ # def retrieveAsync(type:) # TESTED
191
+ # result = self.class.get("/_db/#{@database}/_api/job/#{type}")
192
+ # return_result_async result: result
193
+ # end
194
+ #
195
+ # def retrieveDoneAsync # TESTED
196
+ # retrieveAsync(type: "done")
197
+ # end
198
+ #
199
+ # def retrievePendingAsync # TESTED
200
+ # retrieveAsync(type: "pending")
201
+ # end
202
+ #
203
+ # def cancelAsync(id:) # TESTED
204
+ # result = self.class.put("/_db/#{@database}/_api/job/#{id}/cancel")
205
+ # return_result_async result: result
206
+ # end
207
+ #
208
+ # def destroyAsync(type:) # TESTED
209
+ # result = self.class.delete("/_db/#{@database}/_api/job/#{type}")
210
+ # return_result_async result: result, caseTrue: true
211
+ # end
212
+ #
213
+ # def destroyAllAsync # TESTED
214
+ # destroyAsync(type: "all")
215
+ # end
216
+ #
217
+ # def destroyExpiredAsync # TESTED
218
+ # destroyAsync(type: "expired")
219
+ # end
156
220
 
157
- def return_result(result)
158
- if @@verbose
159
- result
160
- else
161
- if result["error"]
162
- result["errorMessage"]
163
- else
164
- result.delete("error")
165
- result.delete("code")
166
- result
167
- end
168
- end
221
+ # === REPLICATION ===
222
+
223
+ def inventory(includeSystem: false) # TESTED
224
+ query = { "includeSystem": includeSystem }
225
+ request = @@request.merge({ :query => query })
226
+ result = self.class.get("/_db/#{@database}/_api/replication/inventory", request)
227
+ self.class.return_result result: result
228
+ end
229
+
230
+ def clusterInventory(includeSystem: false) # TESTED
231
+ query = { "includeSystem": includeSystem }
232
+ request = @@request.merge({ :query => query })
233
+ result = self.class.get("/_db/#{@database}/_api/replication/clusterInventory", request)
234
+ self.class.return_result result: result
235
+ end
236
+
237
+ def logger # TESTED
238
+ result = self.class.get("/_db/#{@database}/_api/replication/logger-state")
239
+ self.class.return_result result: result
240
+ end
241
+
242
+ def loggerFollow(from: nil, to: nil, chunkSize: nil, includeSystem: false) # TESTED
243
+ query = {
244
+ "from": from,
245
+ "to": to,
246
+ "chunkSize": chunkSize,
247
+ "includeSystem": includeSystem
248
+ }.delete_if{|k,v| v.nil?}
249
+ request = @@request.merge({ :query => query })
250
+ result = self.class.get("/_db/#{@database}/_api/replication/logger-follow", request)
251
+ self.class.return_result result: result
252
+ end
253
+
254
+ def firstTick # TESTED
255
+ result = self.class.get("/_db/#{@database}/_api/replication/logger-first-tick")
256
+ self.class.return_result result: result, key: "firstTick"
257
+ end
258
+
259
+ def rangeTick # TESTED
260
+ result = self.class.get("/_db/#{@database}/_api/replication/logger-tick-ranges")
261
+ self.class.return_result result: result
262
+ end
263
+
264
+ def sync(endpoint: "tcp://#{@@server}:#{@@port}", username: @@username, password: @@password, includeSystem: false, database: @database, initialSyncMaxWaitTime: nil, restrictType: nil, incremental: nil, restrictCollections: nil)
265
+ body = {
266
+ "username" => username,
267
+ "password" => password,
268
+ "includeSystem" => includeSystem,
269
+ "endpoint" => endpoint,
270
+ "initialSyncMaxWaitTime" => initialSyncMaxWaitTime,
271
+ "database" => database,
272
+ "restrictType" => restrictType,
273
+ "incremental" => incremental,
274
+ "restrictCollections" => restrictCollections
275
+ }.delete_if{|k,v| v.nil?}
276
+ request = @@request.merge({ :body => body.to_json })
277
+ result = self.class.put("/_db/#{database}/_api/replication/sync", request)
278
+ self.class.return_result result: result
169
279
  end
280
+
281
+ def configurationReplication # TESTED
282
+ result = self.class.get("/_db/#{@database}/_api/replication/applier-config", @@request)
283
+ self.class.return_result result: result
284
+ end
285
+
286
+ def modifyConfigurationReplication(endpoint: "tcp://#{@@server}:#{@@port}", username: @@username, password: @@password, database: @database, includeSystem: false, verbose: false, connectTimeout: nil, autoResync: nil, idleMinWaitTime: nil, requestTimeout: nil, requireFromPresent: nil, idleMaxWaitTime: nil, restrictCollections: nil, restrictType: nil, initialSyncMaxWaitTime: nil, maxConnectRetries: nil, autoStart: nil, adaptivePolling: nil, connectionRetryWaitTime: nil, autoResyncRetries: nil, chunkSize: nil) # TESTED
287
+ body = {
288
+ "username" => username,
289
+ "password" => password,
290
+ "includeSystem" => includeSystem,
291
+ "endpoint" => endpoint,
292
+ "initialSyncMaxWaitTime" => initialSyncMaxWaitTime,
293
+ "database" => database,
294
+ "verbose" => verbose,
295
+ "connectTimeout" => connectTimeout,
296
+ "autoResync" => autoResync,
297
+ "idleMinWaitTime" => idleMinWaitTime,
298
+ "requestTimeout" => requestTimeout,
299
+ "requireFromPresent" => requireFromPresent,
300
+ "idleMaxWaitTime" => idleMaxWaitTime,
301
+ "restrictType" => restrictType,
302
+ "maxConnectRetries" => maxConnectRetries,
303
+ "autoStart" => autoStart,
304
+ "adaptivePolling" => adaptivePolling,
305
+ "connectionRetryWaitTime" => connectionRetryWaitTime,
306
+ "restrictCollections" => restrictCollections,
307
+ "autoResyncRetries" => autoResyncRetries,
308
+ "chunkSize" => chunkSize
309
+ }.delete_if{|k,v| v.nil?}
310
+ request = @@request.merge({ :body => body.to_json })
311
+ result = self.class.put("/_db/#{database}/_api/replication/applier-config", request)
312
+ self.class.return_result result: result
313
+ end
314
+
315
+ def startReplication(from: nil)
316
+ query = {from: from}.delete_if{|k,v| v.nil?}
317
+ request = @@request.merge({ :query => query })
318
+ result = self.class.put("/_db/#{@database}/_api/replication/applier-start", request)
319
+ self.class.return_result result: result
320
+ end
321
+
322
+ def stopReplication
323
+ result = self.class.put("/_db/#{@database}/_api/replication/applier-stop", @@request)
324
+ self.class.return_result result: result
325
+ end
326
+
327
+ def stateReplication
328
+ result = self.class.get("/_db/#{@database}/_api/replication/applier-state", @@request)
329
+ self.class.return_result result: result
330
+ end
331
+
332
+ def enslave(username: @@username, includeSystem: false, endpoint: "tcp://#{@@server}:#{@@port}", verbose: false, connectTimeout: nil, autoResync: nil, password: @@password, database: @database, idleMinWaitTime: nil, requestTimeout: nil, requireFromPresent: nil, idleMaxWaitTime: nil, restrictCollections: nil, restrictType: nil, initialSyncMaxWaitTime: nil, maxConnectRetries: nil, adaptivePolling: nil, connectionRetryWaitTime: nil, autoResyncRetries: nil, chunkSize: nil)
333
+ body = {
334
+ "username" => username,
335
+ "password" => password,
336
+ "includeSystem" => includeSystem,
337
+ "endpoint" => endpoint,
338
+ "initialSyncMaxWaitTime" => initialSyncMaxWaitTime,
339
+ "database" => database,
340
+ "verbose" => verbose,
341
+ "connectTimeout" => connectTimeout,
342
+ "autoResync" => autoResync,
343
+ "idleMinWaitTime" => idleMinWaitTime,
344
+ "requestTimeout" => requestTimeout,
345
+ "requireFromPresent" => requireFromPresent,
346
+ "idleMaxWaitTime" => idleMaxWaitTime,
347
+ "restrictType" => restrictType,
348
+ "maxConnectRetries" => maxConnectRetries,
349
+ "adaptivePolling" => adaptivePolling,
350
+ "connectionRetryWaitTime" => connectionRetryWaitTime,
351
+ "restrictCollections" => restrictCollections,
352
+ "autoResyncRetries" => autoResyncRetries,
353
+ "chunkSize" => chunkSize
354
+ }.delete_if{|k,v| v.nil?}
355
+ request = @@request.merge({ :body => body.to_json })
356
+ result = self.class.put("/_db/#{@database}/_api/replication/make-slave", request)
357
+ self.class.return_result result: result
358
+ end
359
+
360
+ # === USER ===
361
+
362
+ def grant(user: @@user) # TESTED
363
+ user = user.user if user.is_a?(ArangoUser)
364
+ body = { "grant" => "rw" }.to_json
365
+ request = @@request.merge({ :body => body })
366
+ result = self.class.put("/_api/user/#{user}/database/#{@database}", request)
367
+ self.class.return_result result: result, caseTrue: true
368
+ end
369
+
370
+ def revoke(user: @@user) # TESTED
371
+ user = user.user if user.is_a?(ArangoUser)
372
+ body = { "grant" => "none" }.to_json
373
+ request = @@request.merge({ :body => body })
374
+ result = self.class.put("/_api/user/#{user}/database/#{@database}", request)
375
+ self.class.return_result result: result, caseTrue: true
376
+ end
377
+
378
+ # # === UTILITY ===
379
+ #
380
+ # def return_result_async(result:, caseTrue: false)
381
+ # result = result.parsed_response
382
+ # if @@verbose || !result.is_a?(Hash)
383
+ # result
384
+ # else
385
+ # if result["error"]
386
+ # result["errorMessage"]
387
+ # else
388
+ # if caseTrue
389
+ # true
390
+ # else
391
+ # result.delete_if{|k,v| k == "error" || k == "code"}
392
+ # end
393
+ # end
394
+ # end
395
+ # end
170
396
  end