redbooth-ruby 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +237 -20
- data/lib/redbooth-ruby.rb +10 -0
- data/lib/redbooth-ruby/base.rb +1 -1
- data/lib/redbooth-ruby/client.rb +9 -2
- data/lib/redbooth-ruby/client_operations/metadata.rb +32 -0
- data/lib/redbooth-ruby/client_operations/search.rb +32 -0
- data/lib/redbooth-ruby/comment.rb +34 -0
- data/lib/redbooth-ruby/file.rb +68 -0
- data/lib/redbooth-ruby/note.rb +25 -0
- data/lib/redbooth-ruby/operations/create.rb +1 -1
- data/lib/redbooth-ruby/operations/index.rb +0 -12
- data/lib/redbooth-ruby/operations/meta.rb +33 -2
- data/lib/redbooth-ruby/operations/show.rb +1 -1
- data/lib/redbooth-ruby/request/collection.rb +37 -5
- data/lib/redbooth-ruby/request/connection.rb +14 -8
- data/lib/redbooth-ruby/request/validator.rb +32 -4
- data/lib/redbooth-ruby/subtask.rb +18 -0
- data/lib/redbooth-ruby/task.rb +1 -1
- data/lib/redbooth-ruby/version.rb +1 -1
- data/redbooth-ruby.gemspec +1 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Metadata/_metadata/.yml +55 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Metadata/_metadata/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_notes_collection.yml +55 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Search/_index/.yml +271 -0
- data/spec/cassettes/RedboothRuby_ClientOperations_Search/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_notes_collection.yml +271 -0
- data/spec/cassettes/RedboothRuby_Comment/_create/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Comment/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_comment.yml +47 -0
- data/spec/cassettes/RedboothRuby_Comment/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_comment.yml +84 -0
- data/spec/cassettes/RedboothRuby_Comment/_index/.yml +94 -0
- data/spec/cassettes/RedboothRuby_Comment/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_comments_collection.yml +94 -0
- data/spec/cassettes/RedboothRuby_Comment/_initialize/.yml +65 -0
- data/spec/cassettes/RedboothRuby_Comment/_show/.yml +65 -0
- data/spec/cassettes/RedboothRuby_Comment/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_comment.yml +65 -0
- data/spec/cassettes/RedboothRuby_Comment/_update/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Comment/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_comment.yml +47 -0
- data/spec/cassettes/RedboothRuby_File/_create/.yml +65 -0
- data/spec/cassettes/RedboothRuby_File/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_file.yml +65 -0
- data/spec/cassettes/RedboothRuby_File/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_comment.yml +102 -0
- data/spec/cassettes/RedboothRuby_File/_index/.yml +58 -0
- data/spec/cassettes/RedboothRuby_File/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_comments_collection.yml +58 -0
- data/spec/cassettes/RedboothRuby_File/_initialize/.yml +44 -0
- data/spec/cassettes/RedboothRuby_File/_show/.yml +44 -0
- data/spec/cassettes/RedboothRuby_File/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_file.yml +44 -0
- data/spec/cassettes/RedboothRuby_File/_update/.yml +46 -0
- data/spec/cassettes/RedboothRuby_File/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_file.yml +46 -0
- data/spec/cassettes/RedboothRuby_Note/_create/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Note/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_note.yml +47 -0
- data/spec/cassettes/RedboothRuby_Note/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_note.yml +84 -0
- data/spec/cassettes/RedboothRuby_Note/_index/.yml +193 -0
- data/spec/cassettes/RedboothRuby_Note/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_notes_collection.yml +193 -0
- data/spec/cassettes/RedboothRuby_Note/_initialize/.yml +109 -0
- data/spec/cassettes/RedboothRuby_Note/_show/.yml +109 -0
- data/spec/cassettes/RedboothRuby_Note/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_note.yml +109 -0
- data/spec/cassettes/RedboothRuby_Note/_update/.yml +73 -0
- data/spec/cassettes/RedboothRuby_Note/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_note.yml +73 -0
- data/spec/cassettes/RedboothRuby_Subtask/_create/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Subtask/_create/makes_a_new_POST_request_using_the_correct_API_endpoint_to_create_a_specific_subtask.yml +47 -0
- data/spec/cassettes/RedboothRuby_Subtask/_delete/makes_a_new_DELETE_request_using_the_correct_API_endpoint_to_delete_a_specific_subtask.yml +84 -0
- data/spec/cassettes/RedboothRuby_Subtask/_index/.yml +99 -0
- data/spec/cassettes/RedboothRuby_Subtask/_index/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_subtasks_collection.yml +99 -0
- data/spec/cassettes/RedboothRuby_Subtask/_initialize/.yml +45 -0
- data/spec/cassettes/RedboothRuby_Subtask/_show/.yml +45 -0
- data/spec/cassettes/RedboothRuby_Subtask/_show/makes_a_new_GET_request_using_the_correct_API_endpoint_to_receive_a_specific_subtask.yml +45 -0
- data/spec/cassettes/RedboothRuby_Subtask/_update/.yml +47 -0
- data/spec/cassettes/RedboothRuby_Subtask/_update/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_subtask.yml +47 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada/.yml +88 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_task.yml +88 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada_/.yml +90 -0
- data/spec/cassettes/RedboothRuby_Task/_medatada_/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_task.yml +90 -0
- data/spec/cassettes/RedboothRuby_Task/_metadata_merge/.yml +133 -0
- data/spec/cassettes/RedboothRuby_Task/_metadata_merge/makes_a_new_PUT_request_using_the_correct_API_endpoint_to_receive_a_specific_task.yml +133 -0
- data/spec/redbooth-ruby/client_operations/metadata_spec.rb +24 -0
- data/spec/redbooth-ruby/client_operations/search_spec.rb +24 -0
- data/spec/redbooth-ruby/comment_spec.rb +87 -0
- data/spec/redbooth-ruby/file_spec.rb +89 -0
- data/spec/redbooth-ruby/note_spec.rb +84 -0
- data/spec/redbooth-ruby/subtaks_spec.rb +83 -0
- data/spec/redbooth-ruby/task_spec.rb +41 -0
- data/spec/spec_helper.rb +2 -0
- metadata +134 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23c2045bfaa9ab724e5588d13d6c9b835bc75c18
|
4
|
+
data.tar.gz: ed38bcf8112e36647ca0dfd09146b1e6f049acf9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5d57329c98c5827134cca570c2b1dbce3244f5351a0c56e0c678a311def93e91b0bda6119a17b829b9d9524db2119b0d7be4c84a2085673cf3991b1382b8d81
|
7
|
+
data.tar.gz: 9f3f2cbff122c1e8d796bbf156520fd6d1591b4c267da527c754e49ed4003f1097c777c1aa9bef5a2d6f1e465946c49a733103b2da3b2d16b06f6cfee194a4e3
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[![Build Status](https://
|
1
|
+
[![Build Status](https://travis-ci.org/teambox/redbooth-ruby.svg?branch=master)](https://travis-ci.org/teambox/redbooth-ruby) [![Code Climate](https://codeclimate.com/repos/5461c4f6e30ba075bc0a0ab0/badges/11031f420440e8a9f525/gpa.svg)](https://codeclimate.com/repos/5461c4f6e30ba075bc0a0ab0/feed) [![Test Coverage](https://codeclimate.com/repos/5461c4f6e30ba075bc0a0ab0/badges/11031f420440e8a9f525/coverage.svg)](https://codeclimate.com/repos/5461c4f6e30ba075bc0a0ab0/feed) [![Inline docs](http://inch-ci.org/github/teambox/redbooth-ruby.svg?branch=master)](http://inch-ci.org/github/teambox/redbooth-ruby)
|
2
2
|
|
3
3
|
Redbooth-Ruby
|
4
4
|
======
|
@@ -160,7 +160,7 @@ List users in your network
|
|
160
160
|
users = users_collection.all
|
161
161
|
```
|
162
162
|
|
163
|
-
Fetch a
|
163
|
+
Fetch a specific user
|
164
164
|
|
165
165
|
```Ruby
|
166
166
|
user = client.user(:show, id: 123)
|
@@ -184,19 +184,19 @@ You can also filter by multiple params (see docs [here](https://redbooth.com/api
|
|
184
184
|
project_id: 123)
|
185
185
|
```
|
186
186
|
|
187
|
-
Fetch a
|
187
|
+
Fetch a specific task
|
188
188
|
|
189
189
|
```Ruby
|
190
190
|
task = client.task(:show, id: 123)
|
191
191
|
```
|
192
192
|
|
193
|
-
Update a
|
193
|
+
Update a specific task
|
194
194
|
|
195
195
|
```Ruby
|
196
196
|
task = client.task(:update, id: 123, name: 'new name')
|
197
197
|
```
|
198
198
|
|
199
|
-
Delete a
|
199
|
+
Delete a specific task
|
200
200
|
|
201
201
|
```Ruby
|
202
202
|
client.task(:delete, id: 123)
|
@@ -219,7 +219,7 @@ You can also filter by multiple params (see docs [here](https://redbooth.com/api
|
|
219
219
|
per_page: 50)
|
220
220
|
```
|
221
221
|
|
222
|
-
Fetch a
|
222
|
+
Fetch a specific organization
|
223
223
|
|
224
224
|
```Ruby
|
225
225
|
organization = client.organization(:show, id: 123)
|
@@ -231,13 +231,13 @@ Create a organization
|
|
231
231
|
organization = client.organization(:create, name: 'New Organization')
|
232
232
|
```
|
233
233
|
|
234
|
-
Update a
|
234
|
+
Update a specific organization
|
235
235
|
|
236
236
|
```Ruby
|
237
237
|
organization = client.organization(:update, id: 123, name: 'new name')
|
238
238
|
```
|
239
239
|
|
240
|
-
Delete a
|
240
|
+
Delete a specific organization
|
241
241
|
|
242
242
|
```Ruby
|
243
243
|
client.organization(:delete, id: 123)
|
@@ -260,7 +260,7 @@ You can also filter by multiple params (see docs [here](https://redbooth.com/api
|
|
260
260
|
per_page: 50)
|
261
261
|
```
|
262
262
|
|
263
|
-
Fetch a
|
263
|
+
Fetch a specific project
|
264
264
|
|
265
265
|
```Ruby
|
266
266
|
project = client.project(:show, id: 123)
|
@@ -272,13 +272,13 @@ Create a project
|
|
272
272
|
project = client.project(:create, name: 'New Project')
|
273
273
|
```
|
274
274
|
|
275
|
-
Update a
|
275
|
+
Update a specific project
|
276
276
|
|
277
277
|
```Ruby
|
278
278
|
project = client.project(:update, id: 123, name: 'new name')
|
279
279
|
```
|
280
280
|
|
281
|
-
Delete a
|
281
|
+
Delete a specific project
|
282
282
|
|
283
283
|
```Ruby
|
284
284
|
client.project(:delete, id: 123)
|
@@ -312,7 +312,7 @@ You can also filter by multiple params (see docs [here](https://redbooth.com/api
|
|
312
312
|
per_page: 50)
|
313
313
|
```
|
314
314
|
|
315
|
-
Fetch a
|
315
|
+
Fetch a specific person
|
316
316
|
|
317
317
|
```Ruby
|
318
318
|
people = client.person(:show, id: 123)
|
@@ -324,13 +324,13 @@ Create a person
|
|
324
324
|
person = client.person(:create, project_id: 123, user_id: 123, role: 'participant')
|
325
325
|
```
|
326
326
|
|
327
|
-
Update a
|
327
|
+
Update a specific person
|
328
328
|
|
329
329
|
```Ruby
|
330
330
|
person = client.person(:update, id: 123, role: 'admin')
|
331
331
|
```
|
332
332
|
|
333
|
-
Delete a
|
333
|
+
Delete a specific person
|
334
334
|
|
335
335
|
```Ruby
|
336
336
|
client.person(:delete, id: 123)
|
@@ -363,7 +363,7 @@ You can also filter by multiple params (see docs [here](https://redbooth.com/api
|
|
363
363
|
per_page: 50)
|
364
364
|
```
|
365
365
|
|
366
|
-
Fetch a
|
366
|
+
Fetch a specific membership
|
367
367
|
|
368
368
|
```Ruby
|
369
369
|
memberships = client.membership(:show, id: 123)
|
@@ -375,13 +375,13 @@ Create a membership
|
|
375
375
|
membership = client.membership(:create, organization_id: 123, user_id: 123, role: 'participant')
|
376
376
|
```
|
377
377
|
|
378
|
-
Update a
|
378
|
+
Update a specific membership
|
379
379
|
|
380
380
|
```Ruby
|
381
381
|
membership = client.membership(:update, id: 123, role: 'admin')
|
382
382
|
```
|
383
383
|
|
384
|
-
Delete a
|
384
|
+
Delete a specific membership
|
385
385
|
|
386
386
|
```Ruby
|
387
387
|
client.membership(:delete, id: 123)
|
@@ -405,24 +405,241 @@ You can also filter by multiple params (see docs [here](https://redbooth.com/api
|
|
405
405
|
project_id: 123)
|
406
406
|
```
|
407
407
|
|
408
|
-
Fetch a
|
408
|
+
Fetch a specific conversation
|
409
409
|
|
410
410
|
```Ruby
|
411
411
|
conversation = client.conversation(:show, id: 123)
|
412
412
|
```
|
413
413
|
|
414
|
-
Update a
|
414
|
+
Update a specific conversation
|
415
415
|
|
416
416
|
```Ruby
|
417
417
|
conversation = client.conversation(:update, id: 123, name: 'new name')
|
418
418
|
```
|
419
419
|
|
420
|
-
Delete a
|
420
|
+
Delete a specific conversation
|
421
421
|
|
422
422
|
```Ruby
|
423
423
|
client.conversation(:delete, id: 123)
|
424
424
|
```
|
425
425
|
|
426
|
+
Comments
|
427
|
+
=====
|
428
|
+
|
429
|
+
Comments are the redbooth resources containing the `Task` and `Conversation` Content.
|
430
|
+
It also contains the information about the task status changes, assigned changes and due_data changes.
|
431
|
+
|
432
|
+
To consume the comments endpoint you allways need to provide a `target_type` and `target_id`. This is needed for performance reasons.
|
433
|
+
|
434
|
+
Lists comments in your visibility scope
|
435
|
+
|
436
|
+
```Ruby
|
437
|
+
comment_collection = client.comment(:index, target_type: 'task', target_id: 123)
|
438
|
+
comments = comment_collection.all
|
439
|
+
```
|
440
|
+
|
441
|
+
You can also filter by multiple params (see docs [here](https://redbooth.com/api/api-docs/#page:comments,header:comments-commnets-list) )
|
442
|
+
|
443
|
+
```Ruby
|
444
|
+
filtered_comments = client.comment(:index, order: 'id-DESC',
|
445
|
+
per_page: 50,
|
446
|
+
project_id: 123,
|
447
|
+
target_type: 'task',
|
448
|
+
target_id: 123)
|
449
|
+
```
|
450
|
+
|
451
|
+
Fetch a specific comment
|
452
|
+
|
453
|
+
```Ruby
|
454
|
+
comment = client.comment(:show, id: 123)
|
455
|
+
```
|
456
|
+
|
457
|
+
Update a specific comment
|
458
|
+
|
459
|
+
```Ruby
|
460
|
+
comment = client.comment(:update, id: 123, body: 'new body content')
|
461
|
+
```
|
462
|
+
|
463
|
+
Delete a specific comment
|
464
|
+
|
465
|
+
```Ruby
|
466
|
+
client.comment(:delete, id: 123)
|
467
|
+
```
|
468
|
+
|
469
|
+
Notes
|
470
|
+
=====
|
471
|
+
|
472
|
+
Lists notes in your visibility scope
|
473
|
+
|
474
|
+
```Ruby
|
475
|
+
notes_collection = client.note(:index)
|
476
|
+
notes = notes_collection.all
|
477
|
+
```
|
478
|
+
|
479
|
+
You can also filter by multiple params (see docs [here](https://redbooth.com/api/api-docs/#page:notes,header:notes-notes-list) )
|
480
|
+
|
481
|
+
```Ruby
|
482
|
+
filtered_notes = client.note(:index, order: 'id-DESC',
|
483
|
+
per_page: 50,
|
484
|
+
project_id: 123)
|
485
|
+
```
|
486
|
+
|
487
|
+
Fetch a specific note
|
488
|
+
|
489
|
+
```Ruby
|
490
|
+
note = client.note(:show, id: 123)
|
491
|
+
```
|
492
|
+
|
493
|
+
Update a specific note
|
494
|
+
|
495
|
+
```Ruby
|
496
|
+
note = client.note(:update, id: 123, name: 'new name')
|
497
|
+
```
|
498
|
+
|
499
|
+
Delete a specific note
|
500
|
+
|
501
|
+
```Ruby
|
502
|
+
client.note(:delete, id: 123)
|
503
|
+
```
|
504
|
+
|
505
|
+
Subtasks
|
506
|
+
=====
|
507
|
+
|
508
|
+
Subtasks are little sentences under a task that could de resolved or not.
|
509
|
+
|
510
|
+
Lists subtasks in your visibility scope. Needs a task_id
|
511
|
+
|
512
|
+
```Ruby
|
513
|
+
subtask_collection = client.subtask(:index, task_id: 123)
|
514
|
+
subtasks = subtask_collection.all
|
515
|
+
```
|
516
|
+
|
517
|
+
You can also filter by multiple params (see docs [here](https://redbooth.com/api/api-docs/#page:subtasks,header:subtasks-subtasks-list) )
|
518
|
+
|
519
|
+
```Ruby
|
520
|
+
filtered_subtasks = client.subtask(:index, task_id: 123,
|
521
|
+
order: 'id-DESC',
|
522
|
+
per_page: 50)
|
523
|
+
```
|
524
|
+
|
525
|
+
Fetch a specific subtask
|
526
|
+
|
527
|
+
```Ruby
|
528
|
+
subtask = client.subtask(:show, id: 123)
|
529
|
+
```
|
530
|
+
|
531
|
+
Create a new subtask
|
532
|
+
|
533
|
+
```Ruby
|
534
|
+
subtask = client.subtask(:create, task_id: 123, name: 'new name')
|
535
|
+
```
|
536
|
+
|
537
|
+
Update a specific subtask
|
538
|
+
|
539
|
+
```Ruby
|
540
|
+
subtask = client.subtask(:update, id: 123, name: 'new name')
|
541
|
+
```
|
542
|
+
|
543
|
+
Delete a specific subtask
|
544
|
+
|
545
|
+
```Ruby
|
546
|
+
client.subtask(:delete, id: 123)
|
547
|
+
```
|
548
|
+
|
549
|
+
Files
|
550
|
+
=====
|
551
|
+
|
552
|
+
Files in redbooth could be uploaded or choosen form other service providers (Copy, Dropbox, Gdrive, Box, Signnow, ...). This client allows you to browse or create files in redbooth api.
|
553
|
+
|
554
|
+
Lists files in your visibility scope.
|
555
|
+
|
556
|
+
```Ruby
|
557
|
+
files_colilection = client.file(:index)
|
558
|
+
files = files_collection.all
|
559
|
+
```
|
560
|
+
|
561
|
+
You can also filter by multiple params (see docs [here](https://redbooth.com/api/api-docs/#page:subtasks,header:subtasks-subtasks-list) )
|
562
|
+
|
563
|
+
```Ruby
|
564
|
+
filtered_files_collection = client.file(:index, backend: 'redbooth',
|
565
|
+
project_id: 123,
|
566
|
+
order: 'id-DESC',
|
567
|
+
per_page: 25)
|
568
|
+
```
|
569
|
+
|
570
|
+
Update a specific file
|
571
|
+
|
572
|
+
```Ruby
|
573
|
+
file = client.file(:update, id: 123, name: 'new_name.doc')
|
574
|
+
```
|
575
|
+
|
576
|
+
Create a new file
|
577
|
+
|
578
|
+
```Ruby
|
579
|
+
file = File.open('path/to/the/file')
|
580
|
+
new_file = client.file(:create, project_id: 123,
|
581
|
+
parent_id: nil,
|
582
|
+
backend: 'redbooth',
|
583
|
+
is_dir: false,
|
584
|
+
asset: file )
|
585
|
+
```
|
586
|
+
|
587
|
+
Delete a specific subtask
|
588
|
+
|
589
|
+
```Ruby
|
590
|
+
client.file(:delete, id: 123)
|
591
|
+
```
|
592
|
+
|
593
|
+
Search
|
594
|
+
=====
|
595
|
+
|
596
|
+
You can search throught any redbooth entity by using the search method. There is some filter params available:
|
597
|
+
|
598
|
+
* `query`: Regex like query to search
|
599
|
+
|
600
|
+
* `project_id`: Reduce the scope to search for
|
601
|
+
|
602
|
+
* `target_type`: List of entity types to be returned
|
603
|
+
|
604
|
+
|
605
|
+
Search for redbooth objects in your visibility scope
|
606
|
+
|
607
|
+
```Ruby
|
608
|
+
entities = client.search(query: 'task+nothing*')
|
609
|
+
```
|
610
|
+
|
611
|
+
Metadata
|
612
|
+
=====
|
613
|
+
|
614
|
+
ADVISE: Redbooth metadata API is in `Beta` status so use this under your own risk.
|
615
|
+
|
616
|
+
Metadata API allows you to add custo key value attributes to objects inside redbooth and search by those key value attributes.
|
617
|
+
This is really helpful when doing API syncs or tiny implementations in top of the Redbooth API.
|
618
|
+
|
619
|
+
Fetch object metadata
|
620
|
+
|
621
|
+
```Ruby
|
622
|
+
task.metadata
|
623
|
+
```
|
624
|
+
|
625
|
+
Update object metadata by adding new keys or overwriding the exisiting ones but not touching the others if there is any one.
|
626
|
+
|
627
|
+
```Ruby
|
628
|
+
task.metadata_merge("new_key" => "new value")
|
629
|
+
```
|
630
|
+
|
631
|
+
Restore user metadata by overwiritng the existing ones.
|
632
|
+
|
633
|
+
```Ruby
|
634
|
+
task.metadata = {"key" => "value"}
|
635
|
+
```
|
636
|
+
|
637
|
+
Search for a certain metadata key value
|
638
|
+
|
639
|
+
```Ruby
|
640
|
+
metadata_collection = client.metadata(key: 'key', value: 'value', target_type: 'Task')
|
641
|
+
```
|
642
|
+
|
426
643
|
License
|
427
644
|
=====
|
428
645
|
|
data/lib/redbooth-ruby.rb
CHANGED
@@ -20,6 +20,11 @@ module RedboothRuby
|
|
20
20
|
autoload :Project, 'redbooth-ruby/project'
|
21
21
|
autoload :Conversation, 'redbooth-ruby/conversation'
|
22
22
|
autoload :Membership, 'redbooth-ruby/membership'
|
23
|
+
autoload :Comment, 'redbooth-ruby/comment'
|
24
|
+
autoload :Note, 'redbooth-ruby/note'
|
25
|
+
autoload :Subtask, 'redbooth-ruby/subtask'
|
26
|
+
autoload :File, 'redbooth-ruby/file'
|
27
|
+
|
23
28
|
|
24
29
|
module Operations
|
25
30
|
autoload :Base, 'redbooth-ruby/operations/base'
|
@@ -41,6 +46,11 @@ module RedboothRuby
|
|
41
46
|
autoload :Collection, 'redbooth-ruby/request/collection'
|
42
47
|
end
|
43
48
|
|
49
|
+
module ClientOperations
|
50
|
+
autoload :Search, 'redbooth-ruby/client_operations/search'
|
51
|
+
autoload :Metadata, 'redbooth-ruby/client_operations/metadata'
|
52
|
+
end
|
53
|
+
|
44
54
|
class RedboothError < StandardError; end
|
45
55
|
class AuthenticationError < RedboothError; end
|
46
56
|
class OauhtTokenExpired < AuthenticationError; end
|
data/lib/redbooth-ruby/base.rb
CHANGED
data/lib/redbooth-ruby/client.rb
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
module RedboothRuby
|
2
2
|
class Client
|
3
|
-
|
3
|
+
include RedboothRuby::ClientOperations::Search
|
4
|
+
include RedboothRuby::ClientOperations::Metadata
|
5
|
+
|
6
|
+
RESOURCES = [ :me, :user, :task, :organization, :person, :project,
|
7
|
+
:conversation, :membership, :comment, :note, :subtask,
|
8
|
+
:file ]
|
4
9
|
|
5
10
|
attr_reader :session, :options
|
6
11
|
|
7
12
|
# Creates an client object using the given Redbooth session.
|
8
13
|
# existing account.
|
9
14
|
#
|
10
|
-
# @param [
|
15
|
+
# @param session [Redbooth::Session] redbooth session object with the correct authorization
|
16
|
+
# @param options [Hash] client options
|
17
|
+
# @option options [Proc] retry (the client will handle) Retry block to be executed when client hits an async endpoint
|
11
18
|
def initialize(session, options={})
|
12
19
|
raise RedboothRuby::AuthenticationError unless session.valid?
|
13
20
|
@session = session
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module RedboothRuby
|
2
|
+
module ClientOperations
|
3
|
+
module Metadata
|
4
|
+
|
5
|
+
# Retrieves all available objects from the Redbooth API by searching by given
|
6
|
+
# key and value into the metadata API
|
7
|
+
#
|
8
|
+
# @param [Hash] options Options to pass to the API
|
9
|
+
# @return [Array] The available objects
|
10
|
+
def metadata(attributes = {})
|
11
|
+
response = RedboothRuby.request(:get, nil, 'metadata/search' , attributes, { session: session })
|
12
|
+
collection_from attributes, response, session
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
# Creates a collection object from the request and response params
|
18
|
+
#
|
19
|
+
# @param params [Hash] given request params
|
20
|
+
# @param response [RedboothRuby::Request::Response] response object
|
21
|
+
# @param session [RedboothRuby::Session] session Object
|
22
|
+
# @return [RedboothRuby::Request::Collection]
|
23
|
+
def collection_from(params, response, session)
|
24
|
+
RedboothRuby::Request::Collection.new(response: response,
|
25
|
+
resource: self,
|
26
|
+
session: session,
|
27
|
+
params: params,
|
28
|
+
method: :metadata)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|