ruby_aem 0.9.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.
- checksums.yaml +4 -4
- data/conf/spec.yaml +47 -70
- data/lib/ruby_aem/client.rb +35 -28
- data/lib/ruby_aem/error.rb +28 -0
- data/lib/ruby_aem/handlers/file.rb +8 -10
- data/lib/ruby_aem/handlers/html.rb +8 -11
- data/lib/ruby_aem/handlers/json.rb +25 -28
- data/lib/ruby_aem/handlers/simple.rb +51 -8
- data/lib/ruby_aem/handlers/xml.rb +7 -9
- data/lib/ruby_aem/resources/bundle.rb +50 -0
- data/lib/ruby_aem/resources/config_property.rb +55 -0
- data/lib/ruby_aem/resources/flush_agent.rb +75 -0
- data/lib/ruby_aem/resources/group.rb +102 -0
- data/lib/ruby_aem/resources/node.rb +65 -0
- data/lib/ruby_aem/resources/package.rb +190 -0
- data/lib/ruby_aem/resources/path.rb +48 -0
- data/lib/ruby_aem/resources/replication_agent.rb +79 -0
- data/lib/ruby_aem/resources/repository.rb +47 -0
- data/lib/ruby_aem/resources/user.rb +113 -0
- data/lib/ruby_aem/{repository.rb → response.rb} +14 -21
- data/lib/ruby_aem/result.rb +12 -36
- data/lib/ruby_aem.rb +30 -30
- metadata +17 -15
- data/lib/ruby_aem/bundle.rb +0 -48
- data/lib/ruby_aem/config_property.rb +0 -53
- data/lib/ruby_aem/flush_agent.rb +0 -65
- data/lib/ruby_aem/group.rb +0 -101
- data/lib/ruby_aem/node.rb +0 -63
- data/lib/ruby_aem/package.rb +0 -187
- data/lib/ruby_aem/path.rb +0 -46
- data/lib/ruby_aem/replication_agent.rb +0 -65
- data/lib/ruby_aem/user.rb +0 -110
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d0f1ce4ed2a578ad6207b8ee2084a68fc33add63
|
|
4
|
+
data.tar.gz: 40234461975d56d98f46114379bfdce1db25bae1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3fe281388b41b35867c105caa54eb8904d0e77f9287c13e021ebf3437fe09e70f090aae218deea7ffc9efac332b3995f698668b02e3f472b2896c75b75480e9f
|
|
7
|
+
data.tar.gz: e1068b423cd27d207b10be4ec13e082869c7e159dc7df892c49d3a7b47bd66fa5154aeeb251e0be668c150f4feb1435cf796703421e9cf156ed5a33baef5b79b
|
data/conf/spec.yaml
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
bundle:
|
|
2
2
|
responses:
|
|
3
3
|
404:
|
|
4
|
-
|
|
5
|
-
handler: simple
|
|
4
|
+
handler: simple_error
|
|
6
5
|
message: 'Bundle %{name} not found'
|
|
7
6
|
actions:
|
|
8
7
|
start:
|
|
@@ -14,7 +13,6 @@ bundle:
|
|
|
14
13
|
action: start
|
|
15
14
|
responses:
|
|
16
15
|
200:
|
|
17
|
-
status: success
|
|
18
16
|
handler: simple
|
|
19
17
|
message: 'Bundle %{name} started'
|
|
20
18
|
stop:
|
|
@@ -26,14 +24,12 @@ bundle:
|
|
|
26
24
|
action: stop
|
|
27
25
|
responses:
|
|
28
26
|
200:
|
|
29
|
-
status: success
|
|
30
27
|
handler: simple
|
|
31
28
|
message: 'Bundle %{name} stopped'
|
|
32
29
|
flushagent:
|
|
33
30
|
responses:
|
|
34
31
|
404:
|
|
35
|
-
|
|
36
|
-
handler: simple
|
|
32
|
+
handler: simple_error
|
|
37
33
|
message: 'Flush agent %{name} not found on %{run_mode}'
|
|
38
34
|
actions:
|
|
39
35
|
create_update:
|
|
@@ -50,7 +46,7 @@ flushagent:
|
|
|
50
46
|
jcrcontentjcrdescription: '%{description}'
|
|
51
47
|
jcrcontentslingresource_type: /libs/cq/replication/components/agent
|
|
52
48
|
jcrcontenttransport_uri: '%{dest_base_url}/dispatcher/invalidate.cache'
|
|
53
|
-
jcrcontentlog_level:
|
|
49
|
+
jcrcontentlog_level: '%{log_level}'
|
|
54
50
|
jcrcontentno_versioning: true
|
|
55
51
|
jcrcontentprotocol_http_headers:
|
|
56
52
|
- 'CQ-Action:{action}'
|
|
@@ -58,7 +54,7 @@ flushagent:
|
|
|
58
54
|
- 'CQ-Path:{path}'
|
|
59
55
|
jcrcontentprotocol_http_headers_type_hint: String[]
|
|
60
56
|
jcrcontentprotocol_http_method: GET
|
|
61
|
-
jcrcontentretry_delay:
|
|
57
|
+
jcrcontentretry_delay: '%{retry_delay}'
|
|
62
58
|
jcrcontentserialization_type: flush
|
|
63
59
|
jcrcontentjcrmixin_types: cq:ReplicationStatus
|
|
64
60
|
jcrcontenttrigger_receive: true
|
|
@@ -67,11 +63,9 @@ flushagent:
|
|
|
67
63
|
jcrcontentenabled: true
|
|
68
64
|
responses:
|
|
69
65
|
200:
|
|
70
|
-
status: success
|
|
71
66
|
handler: simple
|
|
72
67
|
message: 'Flush agent %{name} updated on %{run_mode}'
|
|
73
68
|
201:
|
|
74
|
-
status: success
|
|
75
69
|
handler: simple
|
|
76
70
|
message: 'Flush agent %{name} created on %{run_mode}'
|
|
77
71
|
delete:
|
|
@@ -83,7 +77,6 @@ flushagent:
|
|
|
83
77
|
name: '%{name}'
|
|
84
78
|
responses:
|
|
85
79
|
204:
|
|
86
|
-
status: success
|
|
87
80
|
handler: simple
|
|
88
81
|
message: 'Flush agent %{name} deleted on %{run_mode}'
|
|
89
82
|
exists:
|
|
@@ -95,14 +88,15 @@ flushagent:
|
|
|
95
88
|
name: '%{name}'
|
|
96
89
|
responses:
|
|
97
90
|
302:
|
|
98
|
-
|
|
99
|
-
handler: simple
|
|
91
|
+
handler: simple_true
|
|
100
92
|
message: 'Flush agent %{name} exists on %{run_mode}'
|
|
93
|
+
404:
|
|
94
|
+
handler: simple_false
|
|
95
|
+
message: 'Flush agent %{name} not found on %{run_mode}'
|
|
101
96
|
group:
|
|
102
97
|
responses:
|
|
103
98
|
404:
|
|
104
|
-
|
|
105
|
-
handler: simple
|
|
99
|
+
handler: simple_error
|
|
106
100
|
message: 'Group %{name} not found'
|
|
107
101
|
actions:
|
|
108
102
|
create:
|
|
@@ -117,7 +111,6 @@ group:
|
|
|
117
111
|
profilegiven_name: '%{name}'
|
|
118
112
|
responses:
|
|
119
113
|
201:
|
|
120
|
-
status: success
|
|
121
114
|
handler: html_authorizable_id
|
|
122
115
|
message: 'Group %{name} created at %{path}/%{authorizable_id}'
|
|
123
116
|
find_authorizable_id:
|
|
@@ -131,9 +124,11 @@ group:
|
|
|
131
124
|
_1_property_value: '%{name}'
|
|
132
125
|
responses:
|
|
133
126
|
200:
|
|
134
|
-
status: success
|
|
135
127
|
handler: json_authorizable_id
|
|
136
128
|
message: 'Found group %{name} authorizable ID %{authorizable_id}'
|
|
129
|
+
404:
|
|
130
|
+
handler: simple_nil
|
|
131
|
+
message: 'Group %{name} not found'
|
|
137
132
|
delete:
|
|
138
133
|
api: sling
|
|
139
134
|
operation: deleteNode
|
|
@@ -143,7 +138,6 @@ group:
|
|
|
143
138
|
name: '%{authorizable_id}'
|
|
144
139
|
responses:
|
|
145
140
|
204:
|
|
146
|
-
status: success
|
|
147
141
|
handler: simple
|
|
148
142
|
message: 'Group %{name} deleted at /%{path}/%{authorizable_id}'
|
|
149
143
|
exists:
|
|
@@ -155,9 +149,11 @@ group:
|
|
|
155
149
|
name: '%{authorizable_id}'
|
|
156
150
|
responses:
|
|
157
151
|
302:
|
|
158
|
-
|
|
159
|
-
handler: simple
|
|
152
|
+
handler: simple_true
|
|
160
153
|
message: 'Group %{name} exists at /%{path}/%{authorizable_id}'
|
|
154
|
+
404:
|
|
155
|
+
handler: simple_false
|
|
156
|
+
message: 'Group %{name} not found'
|
|
161
157
|
set_permission:
|
|
162
158
|
api: cq
|
|
163
159
|
operation: postCqActions
|
|
@@ -167,7 +163,6 @@ group:
|
|
|
167
163
|
changelog: 'path:%{permission_path},%{permission_csv}'
|
|
168
164
|
responses:
|
|
169
165
|
200:
|
|
170
|
-
status: success
|
|
171
166
|
handler: simple
|
|
172
167
|
message: 'Permission %{permission_csv} on path %{permission_path} set for group %{name}'
|
|
173
168
|
add_member:
|
|
@@ -181,14 +176,12 @@ group:
|
|
|
181
176
|
add_members: '%{member}'
|
|
182
177
|
responses:
|
|
183
178
|
200:
|
|
184
|
-
status: success
|
|
185
179
|
handler: simple
|
|
186
180
|
message: 'User/group %{member} added to group %{name}'
|
|
187
181
|
node:
|
|
188
182
|
responses:
|
|
189
183
|
404:
|
|
190
|
-
|
|
191
|
-
handler: simple
|
|
184
|
+
handler: simple_error
|
|
192
185
|
message: 'Node %{path}/%{name} not found'
|
|
193
186
|
actions:
|
|
194
187
|
create:
|
|
@@ -201,7 +194,6 @@ node:
|
|
|
201
194
|
name: '%{name}'
|
|
202
195
|
responses:
|
|
203
196
|
201:
|
|
204
|
-
status: success
|
|
205
197
|
handler: simple
|
|
206
198
|
message: 'Node %{path}/%{name} created'
|
|
207
199
|
delete:
|
|
@@ -213,7 +205,6 @@ node:
|
|
|
213
205
|
name: '%{name}'
|
|
214
206
|
responses:
|
|
215
207
|
204:
|
|
216
|
-
status: success
|
|
217
208
|
handler: simple
|
|
218
209
|
message: 'Node %{path}/%{name} deleted'
|
|
219
210
|
exists:
|
|
@@ -225,9 +216,11 @@ node:
|
|
|
225
216
|
name: '%{name}'
|
|
226
217
|
responses:
|
|
227
218
|
302:
|
|
228
|
-
|
|
229
|
-
handler: simple
|
|
219
|
+
handler: simple_true
|
|
230
220
|
message: 'Node %{path}/%{name} exists'
|
|
221
|
+
404:
|
|
222
|
+
handler: simple_false
|
|
223
|
+
message: 'Node %{path}/%{name} not found'
|
|
231
224
|
package:
|
|
232
225
|
actions:
|
|
233
226
|
create:
|
|
@@ -244,7 +237,6 @@ package:
|
|
|
244
237
|
charset: utf-8
|
|
245
238
|
responses:
|
|
246
239
|
200:
|
|
247
|
-
status: success
|
|
248
240
|
handler: json_package_service
|
|
249
241
|
update:
|
|
250
242
|
api: crx
|
|
@@ -260,7 +252,6 @@ package:
|
|
|
260
252
|
charset: utf-8
|
|
261
253
|
responses:
|
|
262
254
|
200:
|
|
263
|
-
status: success
|
|
264
255
|
handler: json_package_service
|
|
265
256
|
delete:
|
|
266
257
|
api: crx
|
|
@@ -271,7 +262,6 @@ package:
|
|
|
271
262
|
cmd: delete
|
|
272
263
|
responses:
|
|
273
264
|
200:
|
|
274
|
-
status: success
|
|
275
265
|
handler: json_package_service
|
|
276
266
|
build:
|
|
277
267
|
api: crx
|
|
@@ -282,7 +272,6 @@ package:
|
|
|
282
272
|
cmd: build
|
|
283
273
|
responses:
|
|
284
274
|
200:
|
|
285
|
-
status: success
|
|
286
275
|
handler: json_package_service
|
|
287
276
|
install:
|
|
288
277
|
api: crx
|
|
@@ -293,7 +282,6 @@ package:
|
|
|
293
282
|
cmd: install
|
|
294
283
|
responses:
|
|
295
284
|
200:
|
|
296
|
-
status: success
|
|
297
285
|
handler: json_package_service
|
|
298
286
|
replicate:
|
|
299
287
|
api: crx
|
|
@@ -304,7 +292,6 @@ package:
|
|
|
304
292
|
cmd: replicate
|
|
305
293
|
responses:
|
|
306
294
|
200:
|
|
307
|
-
status: success
|
|
308
295
|
handler: json_package_service
|
|
309
296
|
download:
|
|
310
297
|
api: sling
|
|
@@ -316,7 +303,6 @@ package:
|
|
|
316
303
|
version: '%{package_version}'
|
|
317
304
|
responses:
|
|
318
305
|
200:
|
|
319
|
-
status: success
|
|
320
306
|
handler: file_download
|
|
321
307
|
message: 'Package downloaded to %{file_path}/%{package_name}-%{package_version}.zip'
|
|
322
308
|
upload:
|
|
@@ -331,7 +317,6 @@ package:
|
|
|
331
317
|
package: __FILE__
|
|
332
318
|
responses:
|
|
333
319
|
200:
|
|
334
|
-
status: success
|
|
335
320
|
handler: json_package_service
|
|
336
321
|
get_filter:
|
|
337
322
|
api: sling
|
|
@@ -343,7 +328,6 @@ package:
|
|
|
343
328
|
version: '%{package_version}'
|
|
344
329
|
responses:
|
|
345
330
|
200:
|
|
346
|
-
status: success
|
|
347
331
|
handler: json_package_filter
|
|
348
332
|
message: 'Filter retrieved successfully'
|
|
349
333
|
list_all:
|
|
@@ -354,7 +338,6 @@ package:
|
|
|
354
338
|
cmd: ls
|
|
355
339
|
responses:
|
|
356
340
|
200:
|
|
357
|
-
status: success
|
|
358
341
|
handler: xml_package_list
|
|
359
342
|
message: 'Package list retrieved successfully'
|
|
360
343
|
path:
|
|
@@ -369,7 +352,6 @@ path:
|
|
|
369
352
|
path: '%{name}'
|
|
370
353
|
responses:
|
|
371
354
|
200:
|
|
372
|
-
status: success
|
|
373
355
|
handler: simple
|
|
374
356
|
message: 'Path %{name} activated'
|
|
375
357
|
configproperty:
|
|
@@ -404,18 +386,15 @@ configproperty:
|
|
|
404
386
|
- org_osgi_service_http_port_secure_type_hint
|
|
405
387
|
responses:
|
|
406
388
|
200:
|
|
407
|
-
status: success
|
|
408
389
|
handler: simple
|
|
409
390
|
message: 'Set %{run_mode} config %{type} property %{name}=%{value}'
|
|
410
391
|
201:
|
|
411
|
-
status: success
|
|
412
392
|
handler: simple
|
|
413
393
|
message: 'Set %{run_mode} config %{type} property %{name}=%{value}'
|
|
414
394
|
replicationagent:
|
|
415
395
|
responses:
|
|
416
396
|
404:
|
|
417
|
-
|
|
418
|
-
handler: simple
|
|
397
|
+
handler: simple_error
|
|
419
398
|
message: 'Replication agent %{name} not found on %{run_mode}'
|
|
420
399
|
actions:
|
|
421
400
|
create_update:
|
|
@@ -426,24 +405,24 @@ replicationagent:
|
|
|
426
405
|
runmode: '%{run_mode}'
|
|
427
406
|
name: '%{name}'
|
|
428
407
|
optional:
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
408
|
+
jcrprimary_type: cq:Page
|
|
409
|
+
jcrcontentcqname: '%{name}'
|
|
410
|
+
jcrcontentjcrtitle: '%{title}'
|
|
411
|
+
jcrcontentjcrdescription: '%{description}'
|
|
412
|
+
jcrcontentslingresource_type: /libs/cq/replication/components/agent
|
|
413
|
+
jcrcontentserialization_type: durbo
|
|
414
|
+
jcrcontenttransport_uri: '%{dest_base_url}/bin/receive?sling:authRequestLogin=1'
|
|
415
|
+
jcrcontenttransport_user: '%{transport_user}'
|
|
416
|
+
jcrcontenttransport_password: '%{transport_password}'
|
|
417
|
+
jcrcontentlog_level: '%{log_level}'
|
|
418
|
+
jcrcontentretry_delay: '%{retry_delay}'
|
|
419
|
+
jcrcontentcqtemplate: /libs/cq/replication/templates/agent
|
|
420
|
+
jcrcontentenabled: true
|
|
440
421
|
responses:
|
|
441
422
|
200:
|
|
442
|
-
status: success
|
|
443
423
|
handler: simple
|
|
444
424
|
message: 'Replication agent %{name} updated on %{run_mode}'
|
|
445
425
|
201:
|
|
446
|
-
status: success
|
|
447
426
|
handler: simple
|
|
448
427
|
message: 'Replication agent %{name} created on %{run_mode}'
|
|
449
428
|
delete:
|
|
@@ -455,7 +434,6 @@ replicationagent:
|
|
|
455
434
|
name: '%{name}'
|
|
456
435
|
responses:
|
|
457
436
|
204:
|
|
458
|
-
status: success
|
|
459
437
|
handler: simple
|
|
460
438
|
message: 'Replication agent %{name} deleted on %{run_mode}'
|
|
461
439
|
exists:
|
|
@@ -467,9 +445,11 @@ replicationagent:
|
|
|
467
445
|
name: '%{name}'
|
|
468
446
|
responses:
|
|
469
447
|
302:
|
|
470
|
-
|
|
471
|
-
handler: simple
|
|
448
|
+
handler: simple_true
|
|
472
449
|
message: 'Replication agent %{name} exists on %{run_mode}'
|
|
450
|
+
404:
|
|
451
|
+
handler: simple_false
|
|
452
|
+
message: 'Replication agent %{name} not found on %{run_mode}'
|
|
473
453
|
repository:
|
|
474
454
|
actions:
|
|
475
455
|
block_writes:
|
|
@@ -480,7 +460,6 @@ repository:
|
|
|
480
460
|
action: blockRepositoryWrites
|
|
481
461
|
responses:
|
|
482
462
|
200:
|
|
483
|
-
status: success
|
|
484
463
|
handler: simple
|
|
485
464
|
message: 'Repository writes blocked'
|
|
486
465
|
unblock_writes:
|
|
@@ -491,14 +470,12 @@ repository:
|
|
|
491
470
|
action: unblockRepositoryWrites
|
|
492
471
|
responses:
|
|
493
472
|
200:
|
|
494
|
-
status: success
|
|
495
473
|
handler: simple
|
|
496
474
|
message: 'Repository writes unblocked'
|
|
497
475
|
user:
|
|
498
476
|
responses:
|
|
499
477
|
404:
|
|
500
|
-
|
|
501
|
-
handler: simple
|
|
478
|
+
handler: simple_error
|
|
502
479
|
message: 'User %{name} not found'
|
|
503
480
|
actions:
|
|
504
481
|
create:
|
|
@@ -513,7 +490,6 @@ user:
|
|
|
513
490
|
reppassword: '%{password}'
|
|
514
491
|
responses:
|
|
515
492
|
201:
|
|
516
|
-
status: success
|
|
517
493
|
handler: html_authorizable_id
|
|
518
494
|
message: 'User %{name} created at %{path}/%{authorizable_id}'
|
|
519
495
|
find_authorizable_id:
|
|
@@ -527,9 +503,11 @@ user:
|
|
|
527
503
|
_1_property_value: '%{name}'
|
|
528
504
|
responses:
|
|
529
505
|
200:
|
|
530
|
-
status: success
|
|
531
506
|
handler: json_authorizable_id
|
|
532
507
|
message: 'Found user %{name} authorizable ID %{authorizable_id}'
|
|
508
|
+
404:
|
|
509
|
+
handler: simple_nil
|
|
510
|
+
message: 'User %{name} not found'
|
|
533
511
|
delete:
|
|
534
512
|
api: sling
|
|
535
513
|
operation: deleteNode
|
|
@@ -539,7 +517,6 @@ user:
|
|
|
539
517
|
name: '%{authorizable_id}'
|
|
540
518
|
responses:
|
|
541
519
|
204:
|
|
542
|
-
status: success
|
|
543
520
|
handler: simple
|
|
544
521
|
message: 'User %{name} deleted at /%{path}/%{authorizable_id}'
|
|
545
522
|
exists:
|
|
@@ -551,9 +528,11 @@ user:
|
|
|
551
528
|
name: '%{authorizable_id}'
|
|
552
529
|
responses:
|
|
553
530
|
302:
|
|
554
|
-
|
|
555
|
-
handler: simple
|
|
531
|
+
handler: simple_true
|
|
556
532
|
message: 'User %{name} exists at /%{path}/%{authorizable_id}'
|
|
533
|
+
404:
|
|
534
|
+
handler: simple_false
|
|
535
|
+
message: 'User %{name} not found'
|
|
557
536
|
set_permission:
|
|
558
537
|
api: cq
|
|
559
538
|
operation: postCqActions
|
|
@@ -563,7 +542,6 @@ user:
|
|
|
563
542
|
changelog: 'path:%{permission_path},%{permission_csv}'
|
|
564
543
|
responses:
|
|
565
544
|
200:
|
|
566
|
-
status: success
|
|
567
545
|
handler: simple
|
|
568
546
|
message: 'Permission %{permission_csv} on path %{permission_path} set for user %{name}'
|
|
569
547
|
change_password:
|
|
@@ -576,6 +554,5 @@ user:
|
|
|
576
554
|
verify: '%{new_password}'
|
|
577
555
|
responses:
|
|
578
556
|
200:
|
|
579
|
-
status: success
|
|
580
557
|
handler: simple
|
|
581
558
|
message: 'Logged in user password changed'
|
data/lib/ruby_aem/client.rb
CHANGED
|
@@ -14,11 +14,13 @@ See the License for the specific language governing permissions and
|
|
|
14
14
|
limitations under the License.
|
|
15
15
|
=end
|
|
16
16
|
|
|
17
|
+
require 'ruby_aem/error'
|
|
17
18
|
require 'ruby_aem/handlers/file'
|
|
18
19
|
require 'ruby_aem/handlers/html'
|
|
19
20
|
require 'ruby_aem/handlers/json'
|
|
20
21
|
require 'ruby_aem/handlers/simple'
|
|
21
22
|
require 'ruby_aem/handlers/xml'
|
|
23
|
+
require 'ruby_aem/response'
|
|
22
24
|
require 'ruby_aem/swagger'
|
|
23
25
|
require 'swagger_aem'
|
|
24
26
|
|
|
@@ -40,15 +42,18 @@ module RubyAem
|
|
|
40
42
|
# Make an API call using the relevant Swagger AEM API client.
|
|
41
43
|
# Clazz and action parameters are used to identify the action, API, and params
|
|
42
44
|
# from ruby_aem specification, alongside the response handlers.
|
|
45
|
+
# Call parameters are used to construct HTTP request parameters based on the
|
|
46
|
+
# specification.
|
|
43
47
|
#
|
|
44
48
|
# @param clazz the class name of the caller resource
|
|
45
49
|
# @param action the action of the API call
|
|
46
|
-
# @param
|
|
50
|
+
# @param call_params API call parameters
|
|
47
51
|
# @return RubyAem::Result
|
|
48
|
-
def call(clazz, action,
|
|
52
|
+
def call(clazz, action, call_params)
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
resource_name = clazz.name.downcase.sub('rubyaem::resources::', '')
|
|
55
|
+
resource = @spec[resource_name]
|
|
56
|
+
action_spec = resource['actions'][action]
|
|
52
57
|
|
|
53
58
|
api = @apis[action_spec['api'].to_sym]
|
|
54
59
|
operation = action_spec['operation']
|
|
@@ -56,25 +61,26 @@ module RubyAem
|
|
|
56
61
|
params = []
|
|
57
62
|
required_params = action_spec['params']['required'] || {}
|
|
58
63
|
required_params.each { |key, value|
|
|
59
|
-
params.push(value %
|
|
64
|
+
params.push(value % call_params)
|
|
60
65
|
}
|
|
61
66
|
params.push({})
|
|
62
67
|
optional_params = action_spec['params']['optional'] || {}
|
|
63
68
|
optional_params.each { |key, value|
|
|
64
|
-
add_optional_param(key, value, params,
|
|
69
|
+
add_optional_param(key, value, params, call_params)
|
|
65
70
|
}
|
|
66
71
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
base_responses_spec = resource['responses'] || {}
|
|
73
|
+
action_responses_spec = action_spec['responses'] || {}
|
|
74
|
+
responses_spec = base_responses_spec.merge(action_responses_spec)
|
|
70
75
|
|
|
71
76
|
begin
|
|
72
77
|
method = RubyAem::Swagger.operation_to_method(operation)
|
|
73
78
|
data, status_code, headers = api.send("#{method}_with_http_info", *params)
|
|
74
|
-
|
|
79
|
+
response = RubyAem::Response.new(status_code, data, headers)
|
|
75
80
|
rescue SwaggerAemClient::ApiError => err
|
|
76
|
-
|
|
81
|
+
response = RubyAem::Response.new(err.code, err.response_body, err.response_headers)
|
|
77
82
|
end
|
|
83
|
+
handle(response, responses_spec, call_params)
|
|
78
84
|
end
|
|
79
85
|
|
|
80
86
|
# Add optional param into params list.
|
|
@@ -82,24 +88,24 @@ module RubyAem
|
|
|
82
88
|
# @param key optional param key
|
|
83
89
|
# @param value optional param value
|
|
84
90
|
# @param params combined list of required and optional parameters
|
|
85
|
-
# @param
|
|
86
|
-
def add_optional_param(key, value, params,
|
|
91
|
+
# @param call_params API call parameters
|
|
92
|
+
def add_optional_param(key, value, params, call_params)
|
|
87
93
|
# if there is no value in optional param spec,
|
|
88
|
-
# then only add optional param that is set in
|
|
94
|
+
# then only add optional param that is set in call parameters
|
|
89
95
|
if !value
|
|
90
|
-
if
|
|
91
|
-
params[-1][key.to_sym] =
|
|
96
|
+
if call_params.key? key.to_sym
|
|
97
|
+
params[-1][key.to_sym] = call_params[key.to_sym]
|
|
92
98
|
end
|
|
93
99
|
# if value is provided in optional param spec,
|
|
94
100
|
# then apply variable interpolation the same way as required param
|
|
95
101
|
else
|
|
96
102
|
if value.class == String
|
|
97
103
|
if value == '__FILE__'
|
|
98
|
-
File.open("#{
|
|
104
|
+
File.open("#{call_params[:file_path]}/#{call_params[:package_name]}-#{call_params[:package_version]}.zip", 'r') { |file|
|
|
99
105
|
params[-1][key.to_sym] = file
|
|
100
106
|
}
|
|
101
107
|
else
|
|
102
|
-
params[-1][key.to_sym] = value %
|
|
108
|
+
params[-1][key.to_sym] = value % call_params
|
|
103
109
|
end
|
|
104
110
|
else
|
|
105
111
|
params[-1][key.to_sym] = value
|
|
@@ -111,19 +117,20 @@ module RubyAem
|
|
|
111
117
|
# If none of the response specifications contains the status code, a failure result
|
|
112
118
|
# will then be returned.
|
|
113
119
|
#
|
|
114
|
-
# @param
|
|
115
|
-
# @param
|
|
116
|
-
# @param
|
|
117
|
-
# @param responses a list of response specifications as configured in conf/spec.yaml
|
|
118
|
-
# @param info additional information
|
|
120
|
+
# @param response response containing HTTP status code, body, and headers
|
|
121
|
+
# @param responses_spec a list of response specifications as configured in conf/spec.yaml
|
|
122
|
+
# @param call_params API call parameters
|
|
119
123
|
# @return RubyAem::Result
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
# @raise RubyAem::Error when the response status code is unexpected
|
|
125
|
+
def handle(response, responses_spec, call_params)
|
|
126
|
+
if responses_spec.key?(response.status_code)
|
|
127
|
+
response_spec = responses_spec[response.status_code]
|
|
123
128
|
handler = response_spec['handler']
|
|
124
|
-
result = Handlers.send(handler,
|
|
129
|
+
result = Handlers.send(handler, response, response_spec, call_params)
|
|
125
130
|
else
|
|
126
|
-
|
|
131
|
+
message = "Unexpected response\nstatus code: #{response.status_code}\nheaders: #{response.headers}\nbody: #{response.body}"
|
|
132
|
+
result = Result.new(message, response)
|
|
133
|
+
raise RubyAem::Error.new(message, result)
|
|
127
134
|
end
|
|
128
135
|
end
|
|
129
136
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
Copyright 2016 Shine Solutions
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
=end
|
|
16
|
+
|
|
17
|
+
module RubyAem
|
|
18
|
+
|
|
19
|
+
class Error < StandardError
|
|
20
|
+
attr_accessor :result
|
|
21
|
+
|
|
22
|
+
def initialize(message, result)
|
|
23
|
+
super(message)
|
|
24
|
+
self.result = result
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -18,24 +18,22 @@ module RubyAem
|
|
|
18
18
|
# Response handlers for file payload.
|
|
19
19
|
module Handlers
|
|
20
20
|
|
|
21
|
-
# Handle downloaded file by copying from temporary location to file_path
|
|
21
|
+
# Handle downloaded file by copying from temporary location to file_path call param.
|
|
22
22
|
# The downloaded file in temporary location will then be deleted.
|
|
23
23
|
# data, status_code, and headers are all returned from RubyAem::Client call.
|
|
24
24
|
#
|
|
25
|
-
# @param
|
|
26
|
-
# @param status_code response HTTP status code
|
|
27
|
-
# @param headers response HTTP headers
|
|
25
|
+
# @param response HTTP response containing status_code, body, and headers
|
|
28
26
|
# @param response_spec response specification as configured in conf/spec.yaml
|
|
29
|
-
# @param
|
|
27
|
+
# @param call_params API call parameters
|
|
30
28
|
# @return RubyAem::Result
|
|
31
|
-
def Handlers.file_download(
|
|
29
|
+
def Handlers.file_download(response, response_spec, call_params)
|
|
32
30
|
|
|
33
|
-
FileUtils.cp(
|
|
34
|
-
|
|
31
|
+
FileUtils.cp(response.body.path, "#{call_params[:file_path]}/#{call_params[:package_name]}-#{call_params[:package_version]}.zip")
|
|
32
|
+
response.body.delete
|
|
35
33
|
|
|
36
|
-
message = response_spec['message'] %
|
|
34
|
+
message = response_spec['message'] % call_params
|
|
37
35
|
|
|
38
|
-
RubyAem::Result.new(
|
|
36
|
+
RubyAem::Result.new(message, response)
|
|
39
37
|
end
|
|
40
38
|
|
|
41
39
|
end
|
|
@@ -23,23 +23,20 @@ module RubyAem
|
|
|
23
23
|
# Parse authorizable ID from response body data.
|
|
24
24
|
# This is used to get the authorizable ID of a newly created user/group.
|
|
25
25
|
#
|
|
26
|
-
# @param
|
|
27
|
-
# @param status_code response HTTP status code
|
|
28
|
-
# @param headers response HTTP headers
|
|
26
|
+
# @param response HTTP response containing status_code, body, and headers
|
|
29
27
|
# @param response_spec response specification as configured in conf/spec.yaml
|
|
30
|
-
# @param
|
|
28
|
+
# @param call_params API call parameters
|
|
31
29
|
# @return RubyAem::Result
|
|
32
|
-
def Handlers.html_authorizable_id(
|
|
30
|
+
def Handlers.html_authorizable_id(response, response_spec, call_params)
|
|
33
31
|
|
|
34
|
-
html = Nokogiri::HTML(
|
|
32
|
+
html = Nokogiri::HTML(response.body)
|
|
35
33
|
authorizable_id = html.xpath('//title/text()').to_s
|
|
36
|
-
authorizable_id.slice! "Content created #{
|
|
37
|
-
|
|
34
|
+
authorizable_id.slice! "Content created #{call_params[:path]}"
|
|
35
|
+
call_params[:authorizable_id] = authorizable_id.sub(/^\//, '')
|
|
38
36
|
|
|
39
|
-
|
|
40
|
-
message = response_spec['message'] % info
|
|
37
|
+
message = response_spec['message'] % call_params
|
|
41
38
|
|
|
42
|
-
RubyAem::Result.new(
|
|
39
|
+
RubyAem::Result.new(message, response)
|
|
43
40
|
end
|
|
44
41
|
|
|
45
42
|
end
|