ribose 0.2.0 → 0.3.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 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