ribose 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d354b8d6ab133682679a05fafc1bd89923e25c41
4
- data.tar.gz: 96de2725a2b74c71ae4abbd39ad495798e6723f2
3
+ metadata.gz: 2e0b15b878e195c9733369b05fd950d9bf77f079
4
+ data.tar.gz: 7255d85171187ea37f9ff8bd1ffdf900daaf1808
5
5
  SHA512:
6
- metadata.gz: 52ce6c951da550947baa60c5a2f0a052758574fdd883305ca0a6945bbee6bfcfecc0664e693716d8d5e76a9efbca1c508e6e211080af01e18605fa4a9d71b570
7
- data.tar.gz: d7d9060a0e6915384cb766e4f271a6542c0390ba801d22867ae852c36f2062b75e6c00370999d865ede2f71dcb141b1cd124784604ac76f4727ed9a09141edf9
6
+ metadata.gz: 60ca909d98a6b7ff1d640a95deaabf730f375dcea7fec4a8e8d7f71fba9e00918c7be49f118ef039ebaf50eb7fab3bc4a2535e5c5c1cf187826429e9b7a91303
7
+ data.tar.gz: 231660d478721f30381564b376478de330ff47c116ea5932f99a6429cf6dd907812ffa71b1fa441a646f228f6d5c72d9060ce9eff8e465350ef937a5d5523a13
data/README.md CHANGED
@@ -31,24 +31,26 @@ $ gem install ribose
31
31
  ## Configure
32
32
 
33
33
  We need to setup Ribose API configuration before we can perform any request
34
- throughout this client, and to request an API Key please contact Ribose Inc.
35
- Once you have your API key then you can configure it by adding an initializer
36
- with the following code
34
+ throughout this client
35
+
36
+ First, obtain an API token [as per this Github wiki](https://github.com/riboseinc/ribose-api/wiki/Obtaining-the-API-Token).
37
+ Using the token, configure the client by adding an initializer with the
38
+ following code:
37
39
 
38
40
  ```ruby
39
41
  Ribose.configure do |config|
40
42
  config.api_token = "SECRET_API_TOKEN"
41
43
  config.user_email = "your-email@example.com"
42
44
 
43
- # There are also some default configurations, normally you do not need to
44
- # change those unless you have some very specific use case scenario.
45
+ # There are also some default configurations. Normally you do not need to
46
+ # change those unless you have some very specific use cases.
45
47
  #
46
48
  # config.debug_mode = false
47
49
  # config.api_host = "www.ribose.com"
48
50
  end
49
51
  ```
50
52
 
51
- Or
53
+ Or:
52
54
 
53
55
  ```ruby
54
56
  Ribose.configuration.api_token = "SECRET_API_TOKEN"
@@ -59,8 +61,9 @@ Ribose.configuration.user_email = "your-email@example.com"
59
61
 
60
62
  ### App Data
61
63
 
62
- Ribose API provides an easier way to retrieve the list of App data, and to
63
- retrieve the list of app data we can use the `AppData.all` interface.
64
+ #### List app data
65
+
66
+ App data can be retrieved using the `AppData.all` interface.
64
67
 
65
68
  ```ruby
66
69
  Ribose::AppData.all
@@ -70,7 +73,8 @@ Ribose::AppData.all
70
73
 
71
74
  #### List app relations
72
75
 
73
- To retrieve the list of app relations we can use the `AppRelation.all` interface
76
+ To retrieve the list of app relations, we can use the `AppRelation.all`
77
+ interface.
74
78
 
75
79
  ```ruby
76
80
  Ribose::AppRelation.all
@@ -79,7 +83,7 @@ Ribose::AppRelation.all
79
83
  #### Fetch an app relation
80
84
 
81
85
  To retrieve the details for a specific app relation, we can use the following
82
- interface
86
+ interface.
83
87
 
84
88
  ```ruby
85
89
  Ribose::AppRelation.fetch(app_relation_id)
@@ -119,7 +123,8 @@ Ribose::Setting.all
119
123
  #### Fetch a setting
120
124
 
121
125
  To fetch the details for any specific settings we can use the `Setting.fetch`
122
- interface and it will return the details for that setting.
126
+ interface with the specific Setting ID, and it will return the details for that
127
+ setting.
123
128
 
124
129
  ```ruby
125
130
  Ribose::Setting.fetch(setting_id)
@@ -133,45 +138,45 @@ Ribose::Setting.update(setting_id, **new_updated_attributes_hash)
133
138
 
134
139
  ### Spaces
135
140
 
136
- #### List user's spaces
141
+ #### List user's Spaces
137
142
 
138
- To list user's spaces we can use the `Space.all` interface, and it will retrieve
139
- all of the spaces for the currently configured user.
143
+ To list a user's Spaces we can use the `Space.all` interface, and it will
144
+ retrieve all of the Spaces for the currently configured user.
140
145
 
141
146
  ```ruby
142
147
  Ribose::Space.all
143
148
  ```
144
149
 
145
- #### Fetch a user space
150
+ #### Fetch a user Space
146
151
 
147
- To retrieve the details for a space we can use the `Space.fetch(space_id)`.
152
+ To retrieve the details for a Space we can use the `Space.fetch(space_id)`.
148
153
 
149
154
  ```ruby
150
155
  Ribose::Space.fetch(space_id)
151
156
  ```
152
157
 
153
- #### Create a user space
158
+ #### Create a user Space
154
159
 
155
- To create a new user space we can use
160
+ To create a new user Space,
156
161
 
157
162
  ```ruby
158
163
  Ribose::Space.create(
159
- access: "private",
164
+ access: "private",
160
165
  space_category_id: 12,
161
- name: "The amazing Ribose Space",
162
- description: "Description about your space"
166
+ name: "The amazing Ribose Space",
167
+ description: "Description about your Space"
163
168
  )
164
169
  ```
165
170
 
166
- #### Update a user space
171
+ #### Update a user Space
167
172
 
168
173
  ```ruby
169
174
  Ribose::Space.update("space_uuid", name: "New updated name", **other_attributes)
170
175
  ```
171
176
 
172
- #### Remove a user space
177
+ #### Remove a user Space
173
178
 
174
- To remove an existing space and we can use the following interface
179
+ To remove an existing Space,
175
180
 
176
181
  ```ruby
177
182
  Ribose::Space.remove(space_uuid, confirmation: true)
@@ -179,33 +184,71 @@ Ribose::Space.remove(space_uuid, confirmation: true)
179
184
 
180
185
  ### Members
181
186
 
182
- The members endpoint are space specific, to retrieve the member details under
183
- any specific space we can use this interface.
187
+ The members endpoint are Space-specific.
184
188
 
185
- ### List of Members
189
+ To retrieve the member details under any specific Space, we can use this
190
+ interface.
186
191
 
187
- To retrieve the list of members, we can use the following interface.
192
+ #### List space members
193
+
194
+ To retrieve the list of members,
188
195
 
189
196
  ```ruby
190
197
  Ribose::Member.all(space_id, options)
191
198
  ```
192
199
 
200
+ #### Delete a space member
201
+
202
+ ```ruby
203
+ Ribose::Member.delete(space_id, member_id, options)
204
+ ```
205
+
206
+ #### Fetch Member Role
207
+
208
+ ```ruby
209
+ Ribose::MemberRole.fetch(space_id, member_id, options)
210
+ ```
211
+
212
+ #### Assign a role to member
213
+
214
+ ```ruby
215
+ Ribose::MemberRole.assign(space_id, member_id, role_id)
216
+ ```
217
+
193
218
  ### Files
194
219
 
195
220
  #### List of Files
196
221
 
197
- To retrieves the files for any specific space we can use the following interface
222
+ To retrieve the list of files for any specific Space,
198
223
 
199
224
  ```ruby
200
225
  Ribose::SpaceFile.all(space_id, options)
201
226
  ```
202
227
 
203
- ### Create a file upload
228
+ #### Fetch a file details
229
+
230
+ ```ruby
231
+ Ribose::SpaceFile.fetch(space_id, file_id, options = {})
232
+ ```
233
+
234
+ #### Create a file upload
204
235
 
205
236
  ```ruby
206
237
  Ribose::SpaceFile.create(space_id, file: "The complete file path", **attributes)
207
238
  ```
208
239
 
240
+ #### Update a space file
241
+
242
+ ```ruby
243
+ Ribose::SpaceFile.update(space_id, file_id, new_file_attributes = {})
244
+ ```
245
+
246
+ #### Remove a space file
247
+
248
+ ```ruby
249
+ Ribose::SpaceFile.delete(space_id, file_id)
250
+ ```
251
+
209
252
  ### Conversations
210
253
 
211
254
  #### Listing Space Conversations
@@ -252,9 +295,9 @@ Ribose::Message.all(space_id: space_uuid, conversation_id: conversation_uuid)
252
295
 
253
296
  ```ruby
254
297
  Ribose::Message.create(
255
- space_id: space_uuid,
298
+ space_id: space_uuid,
256
299
  conversation_id: conversation_uuid,
257
- contents: "Provide your message body here",
300
+ contents: "Provide your message body here",
258
301
  )
259
302
  ```
260
303
 
@@ -262,10 +305,10 @@ Ribose::Message.create(
262
305
 
263
306
  ```ruby
264
307
  Ribose::Message.update(
265
- space_id: space_uuid,
266
- message_id: message_uuid,
308
+ space_id: space_uuid,
309
+ message_id: message_uuid,
267
310
  conversation_id: conversation_uuid,
268
- contents: "The new content for message",
311
+ contents: "The new content for message",
269
312
  )
270
313
  ```
271
314
 
@@ -273,8 +316,8 @@ Ribose::Message.update(
273
316
 
274
317
  ```ruby
275
318
  Ribose::Message.remove(
276
- space_id: space_uuid,
277
- message_id: message_uuid,
319
+ space_id: space_uuid,
320
+ message_id: message_uuid,
278
321
  conversation_id: conversation_uuid,
279
322
  )
280
323
  ```
@@ -283,7 +326,7 @@ Ribose::Message.remove(
283
326
 
284
327
  #### List user feeds
285
328
 
286
- To retrieve the list of user feeds, we can use the `Feed.all` interface
329
+ To retrieve the list of user feeds,
287
330
 
288
331
  ```ruby
289
332
  Ribose::Feed.all
@@ -293,7 +336,7 @@ Ribose::Feed.all
293
336
 
294
337
  #### List widgets
295
338
 
296
- To retrieve the list of widgets we can use the `Widget.all` interface
339
+ To retrieve the list of widgets,
297
340
 
298
341
  ```ruby
299
342
  Ribose::Widget.all
@@ -303,7 +346,7 @@ Ribose::Widget.all
303
346
 
304
347
  #### List of stream notifications
305
348
 
306
- To retrieve the list of notifications we can use the `Stream.all` interface
349
+ To retrieve the list of notifications,
307
350
 
308
351
  ```ruby
309
352
  Ribose::Stream.all
@@ -313,8 +356,7 @@ Ribose::Stream.all
313
356
 
314
357
  #### Retrieve the current leadership board
315
358
 
316
- To retrieve the current leadership board, we can use the `Leaderboard.all`
317
- interface and it will return the details.
359
+ To retrieve the current leadership board,
318
360
 
319
361
  ```ruby
320
362
  Ribose::Leaderboard.all
@@ -322,7 +364,7 @@ Ribose::Leaderboard.all
322
364
 
323
365
  ### Connections
324
366
 
325
- ### List of connections
367
+ #### List of connections
326
368
 
327
369
  To retrieve the list of connections, we can use the `Connection.all` interface
328
370
  and it will return the connection as `Sawyer::Resource`.
@@ -333,8 +375,7 @@ Ribose::Connection.all
333
375
 
334
376
  #### Connection suggestions
335
377
 
336
- To retrieve the list of connection suggestions we can use the following
337
- interface and it will retrieve the suggested users.
378
+ To retrieve the list of user connection suggestions,
338
379
 
339
380
  ```ruby
340
381
  Ribose::Connection.suggestions
@@ -348,7 +389,7 @@ Ribose::Connection.suggestions
348
389
  Ribose::ConnectionInvitation.all
349
390
  ```
350
391
 
351
- #### List space invitations
392
+ #### List Space invitations
352
393
 
353
394
  ```ruby
354
395
  Ribose::SpaceInvitation.all
@@ -387,54 +428,54 @@ Ribose::ConnectionInvitation.reject(invitation_id)
387
428
  Ribose::ConnectionInvitation.cancel(invitation_id)
388
429
  ```
389
430
 
390
- #### Invite user to a space
431
+ #### Invite user to a Space
391
432
 
392
433
  ```ruby
393
434
  Ribose::SpaceInvitation.create(
394
- state: "0",
395
- space_id: "123_456_789",
435
+ state: "0",
436
+ space_id: "123_456_789",
396
437
  invitee_id: "456_789_012",
397
- type: "Invitation::ToSpace",
398
- body: "Please join to this amazing space",
438
+ type: "Invitation::ToSpace",
439
+ body: "Please join to this amazing Space",
399
440
  )
400
441
  ```
401
442
 
402
- #### Create space invitation - Mass
443
+ #### Create Space invitation - Mass
403
444
 
404
445
  ```ruby
405
446
  Ribose::SpaceInvitation.mass_create(
406
447
  space_id,
407
- emails: ["email-one@example.com"],
448
+ emails: ["email-one@example.com"],
408
449
  role_ids: ["role-for-email-address-in-sequance"],
409
- body: "The complete message body for the invitation",
450
+ body: "The complete message body for the invitation",
410
451
  )
411
452
  ```
412
453
 
413
- #### Update a space invitation
454
+ #### Update a Space invitation
414
455
 
415
456
  ```ruby
416
457
  Ribose::SpaceInvitation.update(invitation_id, new_attributes_hash)
417
458
  ```
418
459
 
419
- #### Accept a space invitation
460
+ #### Accept a Space invitation
420
461
 
421
462
  ```ruby
422
463
  Ribose::SpaceInvitation.accept(invitation_id)
423
464
  ```
424
465
 
425
- #### Resend a space invitation
466
+ #### Resend a Space invitation
426
467
 
427
468
  ```ruby
428
469
  Ribose::SpaceInvitation.resend(invitation_id)
429
470
  ```
430
471
 
431
- #### Reject a space invitation
472
+ #### Reject a Space invitation
432
473
 
433
474
  ```ruby
434
475
  Ribose::SpaceInvitation.reject(invitation_id)
435
476
  ```
436
477
 
437
- #### Cancel a space invitation
478
+ #### Cancel a Space invitation
438
479
 
439
480
  ```ruby
440
481
  Ribose::SpaceInvitation.cancel(invitation_id)
@@ -442,36 +483,42 @@ Ribose::SpaceInvitation.cancel(invitation_id)
442
483
 
443
484
  ### Join Space Request
444
485
 
445
- #### List join space requests
486
+ #### List Join Space Requests
446
487
 
447
488
  ```ruby
448
489
  Ribose::JoinSpaceRequest.all
449
490
  ```
450
491
 
451
- #### Create a join space request
492
+ #### Fetch a join space request
493
+
494
+ ```ruby
495
+ Ribose::JoinSpaceRequest.fetch(request_id)
496
+ ```
497
+
498
+ #### Create a Join Space Request
452
499
 
453
500
  ```ruby
454
501
  Ribose::JoinSpaceRequest.create(
455
- state: 0,
456
- space_id: 123_456_789,
457
- type: "Invitation::JoinSpaceRequest",
458
- body: "Hi, I would like to join to your space",
502
+ state: 0,
503
+ Space_id: 123_456_789,
504
+ type: "Invitation::JoinSpaceRequest",
505
+ body: "Hi, I would like to join to your Space",
459
506
  )
460
507
  ```
461
508
 
462
- #### Accept a join space request
509
+ #### Accept a Join Space Request
463
510
 
464
511
  ```ruby
465
512
  Ribose::JoinSpaceRequest.accept(invitation_id)
466
513
  ```
467
514
 
468
- #### Reject a join space requests
515
+ #### Reject a Join Space Requests
469
516
 
470
517
  ```ruby
471
518
  Ribose::JoinSpaceRequest.reject(invitation_id)
472
519
  ```
473
520
 
474
- #### Update an join space requests
521
+ #### Update an Join Space Requests
475
522
 
476
523
  ```ruby
477
524
  Ribose::JoinSpaceRequest.update(invitation_id, new_attributes_hash)
@@ -481,17 +528,16 @@ Ribose::JoinSpaceRequest.update(invitation_id, new_attributes_hash)
481
528
 
482
529
  #### List user calendars
483
530
 
484
- To retrieve the list of user calendar, we can use the `Calendar.all` and it will
485
- fetch the calendar details for the currently configured user.
531
+ To retrieve the list of calendars accessible to the current user,
486
532
 
487
533
  ```ruby
488
534
  Ribose::Calendar.all
489
535
  ```
490
536
 
491
- #### Fetch a calendar
537
+ #### Fetch a calendar events
492
538
 
493
539
  ```ruby
494
- Ribose::Calendar.fetch(calendar_id)
540
+ Ribose::Calendar.fetch(calendar_ids, start: Data.today, length: 7)
495
541
  ```
496
542
 
497
543
  #### Create a calendar
@@ -499,8 +545,8 @@ Ribose::Calendar.fetch(calendar_id)
499
545
  ```ruby
500
546
  Ribose::Calendar.create(
501
547
  owner_type: "User",
502
- owner_id: "The Owner UUID",
503
- name: "The name for the calendar",
548
+ owner_id: "The Owner UUID",
549
+ name: "The name for the calendar",
504
550
  )
505
551
  ```
506
552
 
@@ -522,9 +568,9 @@ Ribose::User.create(email: "user@example.com", **other_attributes)
522
568
 
523
569
  ```ruby
524
570
  Ribose::User.activate(
525
- email: "user@example.com",
571
+ email: "user@example.com",
526
572
  password: "ASecureUserPassword",
527
- otp: "OTP Recived via the Email",
573
+ otp: "OTP Recived via the Email",
528
574
  )
529
575
  ```
530
576
 
@@ -550,7 +596,7 @@ Ribose::Wiki.create(
550
596
  )
551
597
  ```
552
598
 
553
- ### Update a wiki page
599
+ #### Update a wiki page
554
600
 
555
601
  ```ruby
556
602
  Ribose::Wiki.update(
@@ -558,7 +604,7 @@ Ribose::Wiki.update(
558
604
  )
559
605
  ```
560
606
 
561
- ### Remove a wiki page
607
+ #### Remove a wiki page
562
608
 
563
609
  ```ruby
564
610
  Ribose::Wiki.delete(space_id, wiki_id)
@@ -1,3 +1,5 @@
1
+ require "date"
2
+
1
3
  module Ribose
2
4
  class Calendar < Ribose::Base
3
5
  include Ribose::Actions::All
@@ -5,6 +7,23 @@ module Ribose
5
7
  include Ribose::Actions::Create
6
8
  include Ribose::Actions::Delete
7
9
 
10
+ # Fetch calendar events
11
+ #
12
+ # @params calendar_ids [Array] List of calendar Ids
13
+ # @params start [Date] The start date to fetch events
14
+ # @params length [Integer] How many days to fetch
15
+ # @return [Sawyer::Resource] The calendar events
16
+ #
17
+ def self.fetch(calendar_ids, start: Date.today, length: 7)
18
+ query = {
19
+ length: length,
20
+ cal_ids: Ribose.encode_ids(calendar_ids),
21
+ start: start.to_time.to_i / (60 * 60 * 24),
22
+ }
23
+
24
+ super(nil, query: query)
25
+ end
26
+
8
27
  private
9
28
 
10
29
  def resource
@@ -1,6 +1,7 @@
1
1
  module Ribose
2
2
  class JoinSpaceRequest < Ribose::Base
3
3
  include Ribose::Actions::All
4
+ include Ribose::Actions::Fetch
4
5
  include Ribose::Actions::Create
5
6
  include Ribose::Actions::Update
6
7
 
data/lib/ribose/member.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  module Ribose
2
2
  class Member < Ribose::Base
3
3
  include Ribose::Actions::All
4
+ include Ribose::Actions::Delete
4
5
 
5
6
  # List A Space Members
6
7
  #
@@ -15,6 +16,16 @@ module Ribose
15
16
  new(space_id: space_id, **options).all
16
17
  end
17
18
 
19
+ # Delete a space member
20
+ #
21
+ # @param space_id [String] The Space UUID
22
+ # @param member_id [String] The Member UUID
23
+ # @param options [Hash] Query parameters as Hash
24
+ #
25
+ def self.delete(space_id, member_id, options = {})
26
+ new(space_id: space_id, resource_id: member_id, **options).delete
27
+ end
28
+
18
29
  private
19
30
 
20
31
  attr_reader :space_id
@@ -0,0 +1,61 @@
1
+ module Ribose
2
+ class MemberRole < Ribose::Base
3
+ include Ribose::Actions::Fetch
4
+
5
+ def assign
6
+ assign_member_role
7
+ end
8
+
9
+ # Fetch Member Role
10
+ #
11
+ # @param space_id [String] The Space UUID
12
+ # @param user_id [String] The Member UUID
13
+ # @param options [Hash] Query parameters as Hash
14
+ # @return [Sawyer::Resoruce] Mmeber role in space
15
+ #
16
+ def self.fetch(space_id, user_id, options = {})
17
+ new(resource_id: user_id, space_id: space_id, **options).fetch
18
+ end
19
+
20
+ # Assign Role to a Member
21
+ #
22
+ # @param space_id [String] The Space UUID
23
+ # @param user_id [String] The Member UUID
24
+ # @param role_id [String] The role id in space
25
+ #
26
+ def self.assign(space_id, user_id, role_id)
27
+ new(space_id: space_id, resource_id: user_id, role_id: role_id).assign
28
+ end
29
+
30
+ private
31
+
32
+ attr_reader :role_id
33
+
34
+ def resource
35
+ nil
36
+ end
37
+
38
+ def assign_path
39
+ [resources_path, "change_assignment"].join("/")
40
+ end
41
+
42
+ def resource_path
43
+ [resources_path, "get_roles"].join("/")
44
+ end
45
+
46
+ def resources_path
47
+ ["people", "users", resource_id, "roles"].join("/")
48
+ end
49
+
50
+ def extract_local_attributes
51
+ @role_id = attributes.delete(:role_id)
52
+ @query = { in_space: attributes.delete(:space_id) }
53
+ end
54
+
55
+ def assign_member_role
56
+ Ribose::Request.put(
57
+ assign_path, custom_option.merge(checked_role: role_id)
58
+ )
59
+ end
60
+ end
61
+ end
@@ -3,6 +3,9 @@ require "ribose/file_uploader"
3
3
  module Ribose
4
4
  class SpaceFile < Ribose::Base
5
5
  include Ribose::Actions::All
6
+ include Ribose::Actions::Fetch
7
+ include Ribose::Actions::Update
8
+ include Ribose::Actions::Delete
6
9
 
7
10
  # List Files for Space
8
11
  #
@@ -18,6 +21,19 @@ module Ribose
18
21
  new(space_id: space_id, **options).all
19
22
  end
20
23
 
24
+ # Fetch a space file
25
+ #
26
+ # This interface retrieve the details for a single file in any
27
+ # given user space. The response is a `Sawyer::Resource`.
28
+ #
29
+ # @param space_id [String] The space UUID
30
+ # @param file_id [String] The space file ID
31
+ # @return [Sawyer::Resource]
32
+ #
33
+ def self.fetch(space_id, file_id, options = {})
34
+ new(space_id: space_id, resource_id: file_id, **options).fetch
35
+ end
36
+
21
37
  # Create a new file upload
22
38
  #
23
39
  # @param space_id [String] The Space UUID
@@ -30,6 +46,26 @@ module Ribose
30
46
  upload[:attachment]
31
47
  end
32
48
 
49
+ # Update a space file
50
+ #
51
+ # @param space_id [String] The Space UUID
52
+ # @param file_id [String] The space file ID
53
+ # @param attributes [Hash] The file attributes
54
+ # @return [Sawyer::Resource]
55
+ #
56
+ def self.update(space_id, file_id, attributes)
57
+ new(space_id: space_id, resource_id: file_id, **attributes).update
58
+ end
59
+
60
+ # Delete a space file
61
+ #
62
+ # @param space_id [String] The Space UUID
63
+ # @param file_id [String] The space file ID
64
+ #
65
+ def self.delete(space_id, file_id, options = {})
66
+ new(space_id: space_id, resource_id: file_id, **options).delete
67
+ end
68
+
33
69
  private
34
70
 
35
71
  attr_reader :space_id
@@ -38,6 +74,10 @@ module Ribose
38
74
  "file"
39
75
  end
40
76
 
77
+ def resource_key
78
+ "file_info"
79
+ end
80
+
41
81
  def resources_path
42
82
  ["spaces", space_id, "file", "files"].join("/")
43
83
  end
@@ -1,3 +1,3 @@
1
1
  module Ribose
2
- VERSION = "0.2.0".freeze
2
+ VERSION = "0.3.0".freeze
3
3
  end
data/lib/ribose.rb CHANGED
@@ -27,9 +27,15 @@ require "ribose/user"
27
27
  require "ribose/session"
28
28
  require "ribose/profile"
29
29
  require "ribose/wiki"
30
+ require "ribose/member_role"
30
31
 
31
32
  module Ribose
32
33
  def self.root
33
34
  File.dirname(__dir__)
34
35
  end
36
+
37
+ def self.encode_ids(resource_ids)
38
+ require "id_pack"
39
+ IdPack::IdPacker.new.encode([resource_ids].flatten)
40
+ end
35
41
  end
data/ribose.gemspec CHANGED
@@ -20,9 +20,10 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = `git ls-files -- {spec}/*`.split("\n")
21
21
  spec.required_ruby_version = Gem::Requirement.new(">= 2.1.9")
22
22
 
23
- spec.add_dependency "sawyer", "~> 0.8.1"
24
- spec.add_dependency "mime-types", "~> 3.1"
23
+ spec.add_dependency "id_pack", "~> 1.0.1"
25
24
  spec.add_dependency "mechanize", "~> 2.7.5"
25
+ spec.add_dependency "mime-types", "~> 3.1"
26
+ spec.add_dependency "sawyer", "~> 0.8.1"
26
27
 
27
28
  spec.add_development_dependency "bundler", "~> 1.14"
28
29
  spec.add_development_dependency "rake", "~> 10.0"
@@ -0,0 +1,36 @@
1
+ {
2
+ "head_events": [],
3
+ "indices": {
4
+ "17599": [],
5
+ "17600": [],
6
+ "17601": [],
7
+ "17602": [],
8
+ "17603": [
9
+ 129258
10
+ ],
11
+ "17604": [],
12
+ "17605": []
13
+ },
14
+ "events": [
15
+ {
16
+ "id": 129258,
17
+ "name": "Sample event",
18
+ "description": "",
19
+ "where": "",
20
+ "all_day": true,
21
+ "recurring_type": "not_repeat",
22
+ "my_note": null,
23
+ "old_head_id": null,
24
+ "calendar_id": 123,
25
+ "created_by": "2970d105-5ccc-4a8c-b0c4",
26
+ "utc_start": "2018-03-13T12:00:00.000Z",
27
+ "utc_finish": "2018-03-13T13:00:00.000Z",
28
+ "utc_old_start": null,
29
+ "utc_old_finish": null,
30
+ "can_save": true,
31
+ "can_delete": true,
32
+ "timestamp": 1520690119
33
+ }
34
+ ],
35
+ "requested_at": 1520691155924
36
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "join_space_request": {
3
+ "id": 123456789,
4
+ "email": "",
5
+ "body": null,
6
+ "created_at": "",
7
+ "state": 0,
8
+ "type": "Invitation::ToSpace",
9
+ "updated_at": "",
10
+ "invitee": {
11
+ "id": "109EF27E",
12
+ "connected": true,
13
+ "name": "Joe Public",
14
+ "mutual_spaces": [
15
+ ""
16
+ ]
17
+ },
18
+ "inviter": {
19
+ "id": "109EF27E",
20
+ "connected": true,
21
+ "name": "John Doe",
22
+ "mutual_spaces": [
23
+ ""
24
+ ]
25
+ },
26
+ "space": {
27
+ "id": "948AD10F",
28
+ "name": "My first space",
29
+ "members_count": 10
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "roles":[
3
+ {
4
+ "id":91877,
5
+ "name":"Member",
6
+ "space_id":"77b9d5102fb0-457e8438-1c6f"
7
+ },
8
+ {
9
+ "id":91878,
10
+ "name":"Administrator",
11
+ "space_id":"77b9d5102fb0-457e8438-1c6f"
12
+ }
13
+ ],
14
+ "user_role":{
15
+ "id":91878,
16
+ "name":"Administrator",
17
+ "space_id":"77b9d5102fb0-457e8438-1c6f"
18
+ }
19
+ }
@@ -1,58 +1,33 @@
1
1
  {
2
- "files": [
3
- {
4
- "id": 9896,
5
- "created_at": "2017-08-14T08:57:49.000+00:00",
6
- "updated_at": "2017-08-14T08:57:50.000+00:00",
7
- "name": "sample-file.png",
8
- "description": "",
9
- "version": 1,
10
- "tag_list": [],
11
- "content_size": 58784,
12
- "content_type": "image/png",
13
- "author": "Abu Nashir",
14
- "allow_update": true,
15
- "allow_create": true,
16
- "allow_edit": true,
17
- "allow_delete": true,
18
- "allow_download": true,
19
- "current_version_id": 11559,
20
- "versions": [
21
- {
22
- "version": 1,
23
- "name": "sample-file.png",
24
- "updated_at": "2017-08-14T08:57:50.000+00:00",
25
- "position": 1,
26
- "current_version_id": 11559,
27
- "icon_path": "https://assets-2-us-d1bd645.ribose.com/assets/files/placeholder-thumb-59ea90c30f07829d1dc87ce0dfffaeaf.png",
28
- "content_size": 58784,
29
- "author": "John Doe"
30
- }
31
- ]
32
- }
33
- ],
34
- "recent_activity": [
35
- {
36
- "date": "Monday, August 14, 2017",
37
- "links": [
38
- {
39
- "id": 9896,
40
- "name": "sample-file.png",
41
- "path": "/#spaces/0e8d5c16-1a31-4df9-83d9-eeaa374d5adc/file/files/9896/versions/11559"
42
- }
43
- ]
44
- }
45
- ],
46
- "tags": {
47
- "selected_tags": [],
48
- "related_tags": [],
49
- "all_tags": []
50
- },
51
- "permissions": {
2
+ "file": {
3
+ "id": 9896,
4
+ "created_at": "2017-08-14T08:57:49.000+00:00",
5
+ "updated_at": "2017-08-14T08:57:50.000+00:00",
6
+ "name": "sample-file.png",
7
+ "description": "",
8
+ "version": 1,
9
+ "tag_list": [],
10
+ "content_size": 58784,
11
+ "content_type": "image/png",
12
+ "author": "Abu Nashir",
13
+ "allow_update": true,
52
14
  "allow_create": true,
53
- "allow_download": true,
54
15
  "allow_edit": true,
55
16
  "allow_delete": true,
56
- "allow_mass_actions": true
17
+ "allow_download": true,
18
+ "current_version_id": 11559,
19
+ "versions": [
20
+ {
21
+ "version": 1,
22
+ "name": "sample-file.png",
23
+ "updated_at": "2017-08-14T08:57:50.000+00:00",
24
+ "position": 1,
25
+ "current_version_id": 11559,
26
+ "icon_path": "https://assets-2-us-d1bd645.ribose.com/assets/files/placeholder-thumb-59ea90c30f07829d1dc87ce0dfffaeaf.png",
27
+ "content_size": 58784,
28
+ "author": "John Doe"
29
+ }
30
+ ]
57
31
  }
32
+
58
33
  }
@@ -0,0 +1,58 @@
1
+ {
2
+ "files": [
3
+ {
4
+ "id": 9896,
5
+ "created_at": "2017-08-14T08:57:49.000+00:00",
6
+ "updated_at": "2017-08-14T08:57:50.000+00:00",
7
+ "name": "sample-file.png",
8
+ "description": "",
9
+ "version": 1,
10
+ "tag_list": [],
11
+ "content_size": 58784,
12
+ "content_type": "image/png",
13
+ "author": "Abu Nashir",
14
+ "allow_update": true,
15
+ "allow_create": true,
16
+ "allow_edit": true,
17
+ "allow_delete": true,
18
+ "allow_download": true,
19
+ "current_version_id": 11559,
20
+ "versions": [
21
+ {
22
+ "version": 1,
23
+ "name": "sample-file.png",
24
+ "updated_at": "2017-08-14T08:57:50.000+00:00",
25
+ "position": 1,
26
+ "current_version_id": 11559,
27
+ "icon_path": "https://assets-2-us-d1bd645.ribose.com/assets/files/placeholder-thumb-59ea90c30f07829d1dc87ce0dfffaeaf.png",
28
+ "content_size": 58784,
29
+ "author": "John Doe"
30
+ }
31
+ ]
32
+ }
33
+ ],
34
+ "recent_activity": [
35
+ {
36
+ "date": "Monday, August 14, 2017",
37
+ "links": [
38
+ {
39
+ "id": 9896,
40
+ "name": "sample-file.png",
41
+ "path": "/#spaces/0e8d5c16-1a31-4df9-83d9-eeaa374d5adc/file/files/9896/versions/11559"
42
+ }
43
+ ]
44
+ }
45
+ ],
46
+ "tags": {
47
+ "selected_tags": [],
48
+ "related_tags": [],
49
+ "all_tags": []
50
+ },
51
+ "permissions": {
52
+ "allow_create": true,
53
+ "allow_download": true,
54
+ "allow_edit": true,
55
+ "allow_delete": true,
56
+ "allow_mass_actions": true
57
+ }
58
+ }
@@ -13,15 +13,15 @@ RSpec.describe Ribose::Calendar do
13
13
  end
14
14
 
15
15
  describe ".fetch" do
16
- it "retrieves the details for a calendar" do
17
- calendar_id = 123_456_789
16
+ it "retrieves the events for calendars" do
17
+ calendar_ids = [123, 456]
18
18
 
19
- stub_ribose_calendar_fetch_api(calendar_id)
20
- calendar = Ribose::Calendar.fetch(calendar_id)
19
+ stub_ribose_calendar_events_api(calendar_ids)
20
+ events = Ribose::Calendar.fetch(calendar_ids).events
21
21
 
22
- expect(calendar.id).not_to be_nil
23
- expect(calendar.owner_type).to eq("User")
24
- expect(calendar.name).to eq("Sample 101")
22
+ expect(events.first.id).not_to be_nil
23
+ expect(events.first.calendar_id).to eq(123)
24
+ expect(events.first.name).to eq("Sample event")
25
25
  end
26
26
  end
27
27
 
@@ -11,6 +11,19 @@ RSpec.describe Ribose::JoinSpaceRequest do
11
11
  end
12
12
  end
13
13
 
14
+ describe ".fetch" do
15
+ it "retrieves the details for a join space request" do
16
+ invitation_id = 123_456_789
17
+
18
+ stub_ribose_join_space_request_fetch_api(invitation_id)
19
+ invitation = Ribose::JoinSpaceRequest.fetch(invitation_id)
20
+
21
+ expect(invitation.id).not_to be_nil
22
+ expect(invitation.inviter.name).to eq("John Doe")
23
+ expect(invitation.type).to eq("Invitation::ToSpace")
24
+ end
25
+ end
26
+
14
27
  describe ".create" do
15
28
  it "creates a new join space request" do
16
29
  attributes = {
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Ribose::MemberRole do
4
+ describe ".fetch" do
5
+ it "retrieves the role for a member in a space" do
6
+ space_id = 123_456_789
7
+ member_id = 456_789_012
8
+
9
+ stub_ribose_member_role_fetch_api(space_id, member_id)
10
+ member_role = Ribose::MemberRole.fetch(space_id, member_id)
11
+
12
+ expect(member_role.roles.first.name).to eq("Member")
13
+ expect(member_role.roles.last.name).to eq("Administrator")
14
+ end
15
+ end
16
+
17
+ describe ".assign" do
18
+ it "assigns a role to a member in a space" do
19
+ role_id = 789_123_456
20
+ space_id = 123_456_789
21
+ member_id = 456_789_012
22
+
23
+ stub_ribose_member_role_assign(space_id, member_id, role_id)
24
+
25
+ expect do
26
+ Ribose::MemberRole.assign(space_id, member_id, role_id)
27
+ end.not_to raise_error
28
+ end
29
+ end
30
+ end
@@ -13,4 +13,14 @@ RSpec.describe Ribose::Member do
13
13
  expect(members.first.role_name_in_space).to eq("Administrator")
14
14
  end
15
15
  end
16
+
17
+ describe ".delete" do
18
+ it "deletes a member from a space" do
19
+ space_id = 123_456_789
20
+ member_id = 456_789_012
21
+
22
+ stub_ribose_space_member_delete_api(space_id, member_id)
23
+ expect { Ribose::Member.delete(space_id, member_id) }.not_to raise_error
24
+ end
25
+ end
16
26
  end
@@ -14,6 +14,20 @@ RSpec.describe Ribose::SpaceFile do
14
14
  end
15
15
  end
16
16
 
17
+ describe ".fetch" do
18
+ it "retrieves the details for a file" do
19
+ file_id = 456_789_012
20
+ space_id = 123_456_789
21
+
22
+ stub_ribose_space_file_fetch_api(space_id, file_id)
23
+ file = Ribose::SpaceFile.fetch(space_id, file_id)
24
+
25
+ expect(file.id).not_to be_nil
26
+ expect(file.name).to eq("sample-file.png")
27
+ expect(file.content_type).to eq("image/png")
28
+ end
29
+ end
30
+
17
31
  describe ".create" do
18
32
  it "creates a new file with provided details" do
19
33
  space_id = 123_456_789
@@ -27,6 +41,32 @@ RSpec.describe Ribose::SpaceFile do
27
41
  end
28
42
  end
29
43
 
44
+ describe ".update" do
45
+ it "updates the details for a space file" do
46
+ file_id = 456_789_012
47
+ space_id = 123_456_789
48
+
49
+ attributes = { name: "sample-file.png", description: "description" }
50
+ stub_ribose_space_file_update_api(space_id, file_id, attributes)
51
+
52
+ file = Ribose::SpaceFile.update(space_id, file_id, attributes)
53
+
54
+ expect(file.id).not_to be_nil
55
+ expect(file.name).to eq("sample-file.png")
56
+ expect(file.content_type).to eq("image/png")
57
+ end
58
+ end
59
+
60
+ describe ".delete" do
61
+ it "removes a specified space file" do
62
+ file_id = 456_789_012
63
+ space_id = 123_456_789
64
+
65
+ stub_ribose_space_file_delete_api(space_id, file_id)
66
+ expect { Ribose::SpaceFile.delete(space_id, file_id) }.not_to raise_error
67
+ end
68
+ end
69
+
30
70
  def file_attributes
31
71
  {
32
72
  file: sample_fixture_file,
@@ -38,6 +38,29 @@ module Ribose
38
38
  stub_api_response(:get, "spaces/#{space_id}/members", filename: "members")
39
39
  end
40
40
 
41
+ def stub_ribose_space_member_delete_api(space_id, member_id)
42
+ stub_api_response(
43
+ :delete, "spaces/#{space_id}/members/#{member_id}", filename: "empty"
44
+ )
45
+ end
46
+
47
+ def stub_ribose_member_role_fetch_api(space_id, user_id)
48
+ stub_api_response(
49
+ :get,
50
+ "people/users/#{user_id}/roles/get_roles?in_space=#{space_id}",
51
+ filename: "member_role",
52
+ )
53
+ end
54
+
55
+ def stub_ribose_member_role_assign(space_id, user_id, role_id)
56
+ stub_api_response(
57
+ :put,
58
+ "people/users/#{user_id}/roles/change_assignment?in_space=#{space_id}",
59
+ data: { checked_role: role_id },
60
+ filename: "empty",
61
+ )
62
+ end
63
+
41
64
  def stub_ribose_setting_list_api
42
65
  stub_api_response(:get, "settings", filename: "settings")
43
66
  end
@@ -75,6 +98,20 @@ module Ribose
75
98
  )
76
99
  end
77
100
 
101
+ def stub_ribose_calendar_events_api(calendar_ids, length: 7)
102
+ data = OpenStruct.new(
103
+ length: length,
104
+ cals: Ribose.encode_ids(calendar_ids),
105
+ start: Date.today.to_time.to_i / (60 * 60 * 24),
106
+ )
107
+
108
+ params = "cal_ids=#{data.cals}&length=#{data.length}&start=#{data.start}"
109
+
110
+ stub_api_response(
111
+ :get, "calendar/calendar/?#{params}", filename: "calendar_events"
112
+ )
113
+ end
114
+
78
115
  def stub_ribose_calendar_create_api(attributes)
79
116
  stub_api_response(
80
117
  :post,
@@ -114,9 +151,28 @@ module Ribose
114
151
 
115
152
  def stub_ribose_space_file_list(space_id)
116
153
  file_endppoint = ["spaces", space_id, "file", "files"].join("/")
154
+ stub_api_response(:get, file_endppoint, filename: "space_files")
155
+ end
156
+
157
+ def stub_ribose_space_file_fetch_api(space_id, file_id)
158
+ file_endppoint = ["spaces", space_id, "file", "files", file_id].join("/")
117
159
  stub_api_response(:get, file_endppoint, filename: "space_file")
118
160
  end
119
161
 
162
+ def stub_ribose_space_file_update_api(space_id, file_id, attributes)
163
+ stub_api_response(
164
+ :put,
165
+ ["spaces", space_id, "file", "files", file_id].join("/"),
166
+ data: { file_info: attributes },
167
+ filename: "space_file",
168
+ )
169
+ end
170
+
171
+ def stub_ribose_space_file_delete_api(space_id, file_id)
172
+ file_endppoint = ["spaces", space_id, "file", "files", file_id].join("/")
173
+ stub_api_response(:delete, file_endppoint, filename: "empty")
174
+ end
175
+
120
176
  def stub_ribose_space_conversation_list(space_id)
121
177
  stub_api_response(
122
178
  :get, conversations_path(space_id), filename: "conversations"
@@ -296,6 +352,14 @@ module Ribose
296
352
  )
297
353
  end
298
354
 
355
+ def stub_ribose_join_space_request_fetch_api(invitation_id)
356
+ stub_api_response(
357
+ :get,
358
+ ["invitations", "join_space_request", invitation_id].join("/"),
359
+ filename: "join_space_request",
360
+ )
361
+ end
362
+
299
363
  def stub_ribose_join_space_request_create_api(attributes)
300
364
  stub_api_response(
301
365
  :post,
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ribose
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-30 00:00:00.000000000 Z
11
+ date: 2018-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sawyer
14
+ name: id_pack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.1
19
+ version: 1.0.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.1
26
+ version: 1.0.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: mechanize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.7.5
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.7.5
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: mime-types
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +53,19 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '3.1'
41
55
  - !ruby/object:Gem::Dependency
42
- name: mechanize
56
+ name: sawyer
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 2.7.5
61
+ version: 0.8.1
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 2.7.5
68
+ version: 0.8.1
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -167,6 +181,7 @@ files:
167
181
  - lib/ribose/join_space_request.rb
168
182
  - lib/ribose/leaderboard.rb
169
183
  - lib/ribose/member.rb
184
+ - lib/ribose/member_role.rb
170
185
  - lib/ribose/message.rb
171
186
  - lib/ribose/profile.rb
172
187
  - lib/ribose/request.rb
@@ -188,6 +203,7 @@ files:
188
203
  - spec/fixtures/app_relation.json
189
204
  - spec/fixtures/app_relations.json
190
205
  - spec/fixtures/calendar.json
206
+ - spec/fixtures/calendar_events.json
191
207
  - spec/fixtures/calendars.json
192
208
  - spec/fixtures/connection_invitation.json
193
209
  - spec/fixtures/connection_invitation_accepted.json
@@ -203,11 +219,13 @@ files:
203
219
  - spec/fixtures/file_upload_prepared.json
204
220
  - spec/fixtures/file_uploaded.json
205
221
  - spec/fixtures/general_information.json
222
+ - spec/fixtures/join_space_request.json
206
223
  - spec/fixtures/join_space_request_created.json
207
224
  - spec/fixtures/join_space_request_updated.json
208
225
  - spec/fixtures/join_space_requests.json
209
226
  - spec/fixtures/leaderboard.json
210
227
  - spec/fixtures/login.html
228
+ - spec/fixtures/member_role.json
211
229
  - spec/fixtures/members.json
212
230
  - spec/fixtures/message.json
213
231
  - spec/fixtures/messages.json
@@ -219,6 +237,7 @@ files:
219
237
  - spec/fixtures/space.json
220
238
  - spec/fixtures/space_created.json
221
239
  - spec/fixtures/space_file.json
240
+ - spec/fixtures/space_files.json
222
241
  - spec/fixtures/space_invitation.json
223
242
  - spec/fixtures/space_invitation_updated.json
224
243
  - spec/fixtures/space_invitations.json
@@ -246,6 +265,7 @@ files:
246
265
  - spec/ribose/file_uploader_spec.rb
247
266
  - spec/ribose/join_space_request_spec.rb
248
267
  - spec/ribose/leaderboard_spec.rb
268
+ - spec/ribose/member_role_spec.rb
249
269
  - spec/ribose/member_spec.rb
250
270
  - spec/ribose/message_spec.rb
251
271
  - spec/ribose/profile_spec.rb
@@ -283,7 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
283
303
  version: '0'
284
304
  requirements: []
285
305
  rubyforge_project:
286
- rubygems_version: 2.5.2
306
+ rubygems_version: 2.6.14
287
307
  signing_key:
288
308
  specification_version: 4
289
309
  summary: The Ruby interface for Ribose API