ribose-cli 0.1.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/test.yml +27 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +9 -1075
- data/Gemfile +3 -0
- data/README.md +315 -7
- data/bin/console +2 -5
- data/bin/ribose +22 -0
- data/lib/ribose/cli/auth.rb +10 -0
- data/lib/ribose/cli/command.rb +60 -0
- data/lib/ribose/cli/commands/base.rb +80 -0
- data/lib/ribose/cli/commands/conversation.rb +114 -0
- data/lib/ribose/cli/commands/file.rb +96 -0
- data/lib/ribose/cli/commands/invitation.rb +81 -0
- data/lib/ribose/cli/commands/join_space.rb +78 -0
- data/lib/ribose/cli/commands/member.rb +81 -0
- data/lib/ribose/cli/commands/message.rb +98 -0
- data/lib/ribose/cli/commands/note.rb +98 -0
- data/lib/ribose/cli/commands/space.rb +86 -0
- data/lib/ribose/cli/rcfile.rb +67 -0
- data/lib/ribose/cli/util.rb +22 -0
- data/lib/ribose/cli/version.rb +2 -2
- data/lib/ribose/cli.rb +21 -2
- data/ribose-cli.gemspec +11 -3
- data/spec/acceptance/config_spec.rb +17 -0
- data/spec/acceptance/conversation_spec.rb +90 -0
- data/spec/acceptance/file_spec.rb +80 -0
- data/spec/acceptance/invitation_spec.rb +109 -0
- data/spec/acceptance/join_space_spec.rb +73 -0
- data/spec/acceptance/member_spec.rb +87 -0
- data/spec/acceptance/message_spec.rb +67 -0
- data/spec/acceptance/note_spec.rb +61 -0
- data/spec/acceptance/space_spec.rb +112 -0
- data/spec/fixtures/.riboserc +4 -0
- data/spec/ribose/cli/rcfile_spec.rb +27 -0
- data/spec/spec_helper.rb +15 -1
- data/spec/support/console_helper.rb +29 -0
- metadata +113 -18
- data/.travis.yml +0 -5
- data/spec/ribose/cli_spec.rb +0 -4
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,28 +1,336 @@
|
|
1
|
-
# Ribose
|
1
|
+
# Ribose CLI
|
2
2
|
|
3
|
-
|
3
|
+
[![Build Status](https://github.com/riboseinc/ribose-cli/actions/workflows/test.yml/badge.svg)](https://github.com/riboseinc/ribose-cli/actions/workflows/test.yml)
|
4
|
+
[![Code
|
5
|
+
Climate](https://codeclimate.com/github/riboseinc/ribose-cli/badges/gpa.svg)](https://codeclimate.com/github/riboseinc/ribose-cli)
|
4
6
|
|
5
|
-
|
7
|
+
The command line interface to the Ribose API.
|
6
8
|
|
7
9
|
## Installation
|
8
10
|
|
9
11
|
Add this line to your application's Gemfile:
|
10
12
|
|
11
13
|
```ruby
|
12
|
-
gem
|
14
|
+
gem "ribose-cli"
|
13
15
|
```
|
14
16
|
|
15
17
|
And then execute:
|
16
18
|
|
17
|
-
|
19
|
+
```sh
|
20
|
+
$ bundle install
|
21
|
+
```
|
18
22
|
|
19
23
|
Or install it yourself as:
|
20
24
|
|
21
|
-
|
25
|
+
```sh
|
26
|
+
$ gem install ribose-cli
|
27
|
+
```
|
22
28
|
|
23
29
|
## Usage
|
24
30
|
|
25
|
-
|
31
|
+
### Configure
|
32
|
+
|
33
|
+
To start with, we kept it pretty simple, install this gem & then configure your
|
34
|
+
API Token and email using the following interface, This will store your Ribose
|
35
|
+
configuration as `.riboserc` in the home directory.
|
36
|
+
|
37
|
+
```sh
|
38
|
+
ribose config --password='YOUR_API_PASSWORD' --email='youremail@example.com'
|
39
|
+
```
|
40
|
+
|
41
|
+
### Spaces
|
42
|
+
|
43
|
+
The `space` command retrieve space related resources, please use the `help`
|
44
|
+
command to see what's sub-commands are available.
|
45
|
+
|
46
|
+
```sh
|
47
|
+
ribose help space
|
48
|
+
```
|
49
|
+
|
50
|
+
#### Listing spaces
|
51
|
+
|
52
|
+
To list out the spaces, please use the `list` command, by default it will print
|
53
|
+
out the basic information in tabular format.
|
54
|
+
|
55
|
+
```sh
|
56
|
+
ribose space list
|
57
|
+
```
|
58
|
+
|
59
|
+
This interface also has support `json` format, if we want the output to be in
|
60
|
+
`json` then we can use the following
|
61
|
+
|
62
|
+
```sh
|
63
|
+
ribose space list --format json
|
64
|
+
```
|
65
|
+
|
66
|
+
#### Show a space details
|
67
|
+
|
68
|
+
```sh
|
69
|
+
ribose space show --space-id 123456789
|
70
|
+
```
|
71
|
+
|
72
|
+
#### Create a new space
|
73
|
+
|
74
|
+
To create a new user space we can use the following interface
|
75
|
+
|
76
|
+
```sh
|
77
|
+
ribose space add --name "Space name" --access "open" --category-id 12 \
|
78
|
+
--description "Space description"
|
79
|
+
```
|
80
|
+
|
81
|
+
#### Update a space
|
82
|
+
|
83
|
+
```sh
|
84
|
+
ribose space update --space-id 123456 --name "New Space Name"
|
85
|
+
```
|
86
|
+
|
87
|
+
#### Remove an existing space
|
88
|
+
|
89
|
+
```sh
|
90
|
+
ribose space remove --space-id 123456789 --confirmation 123456789
|
91
|
+
```
|
92
|
+
|
93
|
+
### Members
|
94
|
+
|
95
|
+
#### List space members
|
96
|
+
|
97
|
+
```sh
|
98
|
+
ribose member list --space-id space_uuid
|
99
|
+
```
|
100
|
+
|
101
|
+
#### Add a new space member
|
102
|
+
|
103
|
+
```sh
|
104
|
+
ribose member add \
|
105
|
+
--space-id space_uuid \
|
106
|
+
--user-id=user-one-uuid:role_one_id user-two-uuid:role_two_id \
|
107
|
+
--email=email-one@example.com:role_one_id email@example.com:role_two_id \
|
108
|
+
--message="Your invitation messages to the invitees"
|
109
|
+
```
|
110
|
+
|
111
|
+
#### Update an existing member
|
112
|
+
|
113
|
+
```sh
|
114
|
+
ribose member update --role-id 135 --member-id 246 --space-id 1234
|
115
|
+
```
|
116
|
+
|
117
|
+
#### Remove a space member
|
118
|
+
|
119
|
+
```sh
|
120
|
+
ribose member remove --member-id 246 --space-id 1234
|
121
|
+
```
|
122
|
+
|
123
|
+
### Space Invitation
|
124
|
+
|
125
|
+
#### List Space Invitation
|
126
|
+
|
127
|
+
```sh
|
128
|
+
ribose invitation list [--query=key:value]
|
129
|
+
```
|
130
|
+
|
131
|
+
#### Send out space invitation
|
132
|
+
|
133
|
+
```sh
|
134
|
+
ribose invitation add \
|
135
|
+
--space-id space_uuid \
|
136
|
+
--user-id=user-one-uuid:role_one_id user-two-uuid:role_two_id \
|
137
|
+
--email=email-one@example.com:role_one_id email@example.com:role_two_id \
|
138
|
+
--message="Your invitation messages to the invitees"
|
139
|
+
```
|
140
|
+
|
141
|
+
#### Update a space invitation
|
142
|
+
|
143
|
+
```sh
|
144
|
+
ribose invitation update --invitation-id 2468 --role-id 246
|
145
|
+
```
|
146
|
+
|
147
|
+
#### Accept a space invitation
|
148
|
+
|
149
|
+
```sh
|
150
|
+
ribose invitation accept --invitation-id 2468
|
151
|
+
```
|
152
|
+
|
153
|
+
#### Reject a space invitation
|
154
|
+
|
155
|
+
```sh
|
156
|
+
ribose invitation reject --invitation-id 2468
|
157
|
+
```
|
158
|
+
|
159
|
+
#### Remove a space invitation
|
160
|
+
|
161
|
+
```sh
|
162
|
+
ribose invitation remove --invitation-id 2468
|
163
|
+
```
|
164
|
+
|
165
|
+
### Join Space Request
|
166
|
+
|
167
|
+
#### List join space requests
|
168
|
+
|
169
|
+
```sh
|
170
|
+
ribose join-space list [--query=space-id:2468]
|
171
|
+
```
|
172
|
+
|
173
|
+
#### Fetch a join space request
|
174
|
+
|
175
|
+
```sh
|
176
|
+
ribose join-space show --request-id 2468
|
177
|
+
```
|
178
|
+
|
179
|
+
#### Add join space request
|
180
|
+
|
181
|
+
```sh
|
182
|
+
ribose join-space add --space-id 1234 [--message "My request message"]
|
183
|
+
```
|
184
|
+
|
185
|
+
#### Accept a join space request
|
186
|
+
|
187
|
+
```sh
|
188
|
+
ribose join-space accept --request-id 2468
|
189
|
+
```
|
190
|
+
|
191
|
+
#### Reject a join space requests
|
192
|
+
|
193
|
+
```sh
|
194
|
+
ribose join-space reject --request-id 2468
|
195
|
+
```
|
196
|
+
|
197
|
+
### Note
|
198
|
+
|
199
|
+
#### Listing space notes
|
200
|
+
|
201
|
+
```sh
|
202
|
+
ribose note list --space-id space_uuid --format json
|
203
|
+
```
|
204
|
+
|
205
|
+
### Show a space note
|
206
|
+
|
207
|
+
```sh
|
208
|
+
ribose note show --note-id 123456 --space-id 78901
|
209
|
+
```
|
210
|
+
|
211
|
+
#### Create a new note
|
212
|
+
|
213
|
+
```sh
|
214
|
+
ribose note add --space-id space_uuid --title "Name of the note"
|
215
|
+
```
|
216
|
+
|
217
|
+
#### Update an existing note
|
218
|
+
|
219
|
+
```sh
|
220
|
+
ribose note update --space-id 1234 --note-id 5678 --title "Name of the note"
|
221
|
+
```
|
222
|
+
|
223
|
+
#### Remove a note
|
224
|
+
|
225
|
+
```sh
|
226
|
+
ribose note remove --space-id space_uuid --note-id note_uuid
|
227
|
+
```
|
228
|
+
|
229
|
+
### Files
|
230
|
+
|
231
|
+
#### Listing files
|
232
|
+
|
233
|
+
Ribose space may contain multiple files, and if we want to retrieve the list of
|
234
|
+
the files of any space then we can use to following interface.
|
235
|
+
|
236
|
+
```sh
|
237
|
+
ribose file list --space-id 123456
|
238
|
+
```
|
239
|
+
|
240
|
+
The above interface will retrieve the basic details in tabular format, but it
|
241
|
+
also support additional `format` option, acceptable option: `json`.
|
242
|
+
|
243
|
+
#### Fetch a file details
|
244
|
+
|
245
|
+
```sh
|
246
|
+
ribose file show --file-id 5678 --space-id 1234 [--format json]
|
247
|
+
```
|
248
|
+
|
249
|
+
#### Add a new file
|
250
|
+
|
251
|
+
Ribose CLI allows us to upload a file in a user space, and to upload a new file
|
252
|
+
we can use the following interface.
|
253
|
+
|
254
|
+
```sh
|
255
|
+
ribose file add full_path_the_file.ext --space-id space_uuid **other_options
|
256
|
+
```
|
257
|
+
|
258
|
+
#### Update a space file
|
259
|
+
|
260
|
+
```sh
|
261
|
+
ribose file update [--file-name "new filename"] \
|
262
|
+
[--description "New description"] \
|
263
|
+
[--tags "tag 1, tag 2, tag 3"] --file-id 5678 --space-id 1234
|
264
|
+
```
|
265
|
+
|
266
|
+
#### Remove a space file
|
267
|
+
|
268
|
+
```sh
|
269
|
+
ribose file remove --file-id 5678 --space-id 1234
|
270
|
+
```
|
271
|
+
|
272
|
+
### Conversations
|
273
|
+
|
274
|
+
#### Listing conversations
|
275
|
+
|
276
|
+
```sh
|
277
|
+
ribose conversation list --space-id 123456789
|
278
|
+
```
|
279
|
+
|
280
|
+
#### Show a conversation details
|
281
|
+
|
282
|
+
```sh
|
283
|
+
ribose conversation show --space-id 123456789 --conversation-id 67890
|
284
|
+
```
|
285
|
+
|
286
|
+
#### Create A New Conversation
|
287
|
+
|
288
|
+
```sh
|
289
|
+
ribose conversation add --space-id 123456789 --title "Conversation Title" \
|
290
|
+
--tags "sample, conversation"
|
291
|
+
```
|
292
|
+
|
293
|
+
#### Update a conversation
|
294
|
+
|
295
|
+
```sh
|
296
|
+
conversation update --conversation-id 5678 --space-id 123456789 --title \
|
297
|
+
"Conversation Title" --tags "sample, conversation"
|
298
|
+
```
|
299
|
+
|
300
|
+
#### Remove A Conversation
|
301
|
+
|
302
|
+
```sh
|
303
|
+
ribose conversation remove --space-id 1234 --conversation-id 5678
|
304
|
+
```
|
305
|
+
|
306
|
+
### Message
|
307
|
+
|
308
|
+
#### Listing conversation messages
|
309
|
+
|
310
|
+
```sh
|
311
|
+
ribose message list --space-id 12345 --conversation-id 56789
|
312
|
+
```
|
313
|
+
|
314
|
+
#### Add a new message to conversation
|
315
|
+
|
316
|
+
```sh
|
317
|
+
ribose message add --space-id 12345 --conversation-id 56789 \
|
318
|
+
--message-body "Welcome to Ribose Space"
|
319
|
+
```
|
320
|
+
|
321
|
+
#### Update an existing message
|
322
|
+
|
323
|
+
|
324
|
+
```sh
|
325
|
+
ribose message update --message-id 123456 --space-id 12345 \
|
326
|
+
--conversation-id 56789 --message-body "Welcome to Ribose Space"
|
327
|
+
```
|
328
|
+
|
329
|
+
#### Remove an existing message
|
330
|
+
|
331
|
+
```sh
|
332
|
+
ribose message remove --message-id 1234 --space-id 12345 --conversation-id 456
|
333
|
+
```
|
26
334
|
|
27
335
|
## Development
|
28
336
|
|
data/bin/console
CHANGED
@@ -7,8 +7,5 @@ require "ribose/cli"
|
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
9
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
10
|
+
require "pry"
|
11
|
+
Pry.start
|
data/bin/ribose
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
# resolve bin path, ignoring symlinks
|
5
|
+
require "pathname"
|
6
|
+
bin_file = Pathname.new(__FILE__).realpath
|
7
|
+
|
8
|
+
# add self to libpath
|
9
|
+
$:.unshift File.expand_path("../../lib", bin_file)
|
10
|
+
|
11
|
+
# Fixes https://github.com/rubygems/rubygems/issues/1420
|
12
|
+
require "rubygems/specification"
|
13
|
+
|
14
|
+
class Gem::Specification
|
15
|
+
def this; self; end
|
16
|
+
end
|
17
|
+
|
18
|
+
# start up the CLI
|
19
|
+
require "bundler/setup"
|
20
|
+
require "ribose/cli"
|
21
|
+
|
22
|
+
Ribose::CLI.start(ARGV)
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require "ribose"
|
2
|
+
require "ribose/cli/rcfile"
|
3
|
+
|
4
|
+
unless Ribose.configuration.user_password
|
5
|
+
Ribose.configure do |config|
|
6
|
+
config.api_host = Ribose::CLI::RCFile.api_host
|
7
|
+
config.user_email = Ribose::CLI::RCFile.user_email
|
8
|
+
config.user_password = Ribose::CLI::RCFile.user_password
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require "ribose/cli/rcfile"
|
2
|
+
require "ribose/cli/commands/base"
|
3
|
+
require "ribose/cli/commands/space"
|
4
|
+
require "ribose/cli/commands/file"
|
5
|
+
require "ribose/cli/commands/conversation"
|
6
|
+
require "ribose/cli/commands/message"
|
7
|
+
require "ribose/cli/commands/note"
|
8
|
+
require "ribose/cli/commands/member"
|
9
|
+
require "ribose/cli/commands/invitation"
|
10
|
+
require "ribose/cli/commands/join_space"
|
11
|
+
|
12
|
+
module Ribose
|
13
|
+
module CLI
|
14
|
+
class Command < Thor
|
15
|
+
desc "space", "List, Add or Remove User Space"
|
16
|
+
subcommand :space, Ribose::CLI::Commands::Space
|
17
|
+
|
18
|
+
desc "member", "List, Add or Remove Space Member"
|
19
|
+
subcommand :member, Ribose::CLI::Commands::Member
|
20
|
+
|
21
|
+
desc "note", "List, Add or Remove Space Note"
|
22
|
+
subcommand :note, Ribose::CLI::Commands::Note
|
23
|
+
|
24
|
+
desc "file", "List, Add or Remove Files"
|
25
|
+
subcommand :file, Ribose::CLI::Commands::File
|
26
|
+
|
27
|
+
desc "conversation", "List, Add or Remove Conversation"
|
28
|
+
subcommand :conversation, Ribose::CLI::Commands::Conversation
|
29
|
+
|
30
|
+
desc "message", "List, Add or Remove Message"
|
31
|
+
subcommand :message, Ribose::CLI::Commands::Message
|
32
|
+
|
33
|
+
desc "invitation", "Manage Space Invitations"
|
34
|
+
subcommand :invitation, Ribose::CLI::Commands::Invitation
|
35
|
+
|
36
|
+
desc "join-space", "Manage Join Space Request"
|
37
|
+
subcommand :join_space, Ribose::CLI::Commands::JoinSpace
|
38
|
+
|
39
|
+
desc "config", "Configure API Key and User Email"
|
40
|
+
option :token, required: false, desc: "Your API Token for Ribose"
|
41
|
+
option :email, required: true, desc: "Your email address for Ribose"
|
42
|
+
option :password, required: true, desc: "Your API password for Ribose"
|
43
|
+
option :api_host, required: true, desc: "API host, eg: www.ribose.com"
|
44
|
+
|
45
|
+
def config
|
46
|
+
Ribose::CLI::RCFile.set(
|
47
|
+
token: options[:token],
|
48
|
+
email: options[:email],
|
49
|
+
password: options[:password],
|
50
|
+
api_host: options[:api_host],
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "version", "The current active version"
|
55
|
+
def version
|
56
|
+
say(Ribose::CLI::VERSION)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Ribose
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Base < Thor
|
5
|
+
private
|
6
|
+
|
7
|
+
# Table Headers
|
8
|
+
#
|
9
|
+
# Listing resources in table view will invoke this method to
|
10
|
+
# retrieve the list of headers, please override this in the
|
11
|
+
# sub-class and fill it in with actual fields name.
|
12
|
+
#
|
13
|
+
def table_headers
|
14
|
+
raise NotImplementedError
|
15
|
+
end
|
16
|
+
|
17
|
+
# Table Rows
|
18
|
+
#
|
19
|
+
# List resources in table view will invoke this method to build
|
20
|
+
# each of the individual resource row, please override this with
|
21
|
+
# an array that includes the value for headers.
|
22
|
+
#
|
23
|
+
def table_rows
|
24
|
+
raise NotImplementedError
|
25
|
+
end
|
26
|
+
|
27
|
+
# Table field names
|
28
|
+
#
|
29
|
+
# Displaying a single resource in table view will invoke this
|
30
|
+
# method to figure out field name and values for each of the
|
31
|
+
# row in table, please override this with proper attributes
|
32
|
+
#
|
33
|
+
def table_field_names
|
34
|
+
raise NotImplementedError
|
35
|
+
end
|
36
|
+
|
37
|
+
def build_output(resources, options)
|
38
|
+
json_view(resources, options) || table_view(resources)
|
39
|
+
end
|
40
|
+
|
41
|
+
def build_resource_output(resource, options)
|
42
|
+
resource_as_json(resource, options) || resource_as_table(resource)
|
43
|
+
end
|
44
|
+
|
45
|
+
def json_view(resources, options)
|
46
|
+
if options[:format] == "json"
|
47
|
+
resources.map(&:to_h).to_json
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def resource_as_json(resource, options)
|
52
|
+
if options[:format] == "json"
|
53
|
+
resource.to_h.to_json
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def table_view(resources)
|
58
|
+
Ribose::CLI::Util.list(
|
59
|
+
headings: table_headers, rows: table_rows(resources),
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
def resource_as_table(resource)
|
64
|
+
Ribose::CLI::Util.list(
|
65
|
+
headings: ["Field", "Value"],
|
66
|
+
rows: table_field_names.map { |key| [key, resource[key.to_s]] },
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
def symbolize_keys(options_hash)
|
71
|
+
Hash.new.tap do |hash|
|
72
|
+
options_hash.each_key do |key|
|
73
|
+
hash[(key.to_sym rescue key) || key] = options_hash.fetch(key)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
module Ribose
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
class Conversation < Commands::Base
|
5
|
+
desc "list", "Listing A Space Conversations"
|
6
|
+
option :format, aliases: "-f", desc: "Output format, eg: json"
|
7
|
+
option :space_id, required: true, aliases: "-s", desc: "The Space UUID"
|
8
|
+
|
9
|
+
def list
|
10
|
+
say(build_output(list_conversations, options))
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "show", "Show the details for a conversation"
|
14
|
+
option :space_id, required: true, aliases: "-s", desc: "The Space UUID"
|
15
|
+
option :format, aliases: "-f", desc: "Output format, eg: json"
|
16
|
+
|
17
|
+
option(
|
18
|
+
:conversation_id,
|
19
|
+
required: true,
|
20
|
+
aliases: "-c",
|
21
|
+
desc: "The Conversation UUID",
|
22
|
+
)
|
23
|
+
|
24
|
+
def show
|
25
|
+
say(build_resource_output(conversation(options), options))
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "add", "Add a new conversation to Space"
|
29
|
+
option :space_id, required: true, aliases: "-s", desc: "The Space UUID"
|
30
|
+
option :title, required: true, desc: "The title for the conversation"
|
31
|
+
option :tags, aliases: "-t", desc: "The tags for the conversation"
|
32
|
+
|
33
|
+
def add
|
34
|
+
conversation = create_conversation(options)
|
35
|
+
say("New Conversation created! Id: " + conversation.id)
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "update", "Updae an existing conversation"
|
39
|
+
option :title, desc: "The title for the conversation"
|
40
|
+
option :tags, aliases: "-t", desc: "The tags for the conversation"
|
41
|
+
option :space_id, required: true, aliases: "-s", desc: "The Space UUID"
|
42
|
+
option(
|
43
|
+
:conversation_id,
|
44
|
+
required: true,
|
45
|
+
aliases: "-c",
|
46
|
+
desc: "The conversation UUID",
|
47
|
+
)
|
48
|
+
|
49
|
+
def update
|
50
|
+
update_conversation(symbolize_keys(options))
|
51
|
+
say("Your conversation has been updated!")
|
52
|
+
rescue Ribose::UnprocessableEntity
|
53
|
+
say("Something went wrong!, please check required attributes")
|
54
|
+
end
|
55
|
+
|
56
|
+
desc "remove", "Remove A Conversation from Space"
|
57
|
+
option :space_id, required: true, aliases: "-s", desc: "The Space UUID"
|
58
|
+
option :conversation_id, required: true, aliases: "-c"
|
59
|
+
|
60
|
+
def remove
|
61
|
+
remove_conversation(options)
|
62
|
+
say("The Conversation has been removed!")
|
63
|
+
rescue
|
64
|
+
say("Please provide a valid Conversation UUID")
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def conversation(attributes)
|
70
|
+
@conversation ||= Ribose::Conversation.fetch(
|
71
|
+
attributes[:space_id], attributes[:conversation_id]
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
def list_conversations
|
76
|
+
@conversations ||= Ribose::Conversation.all(options[:space_id])
|
77
|
+
end
|
78
|
+
|
79
|
+
def create_conversation(options)
|
80
|
+
Ribose::Conversation.create(
|
81
|
+
options[:space_id], name: options[:title], tag_list: options[:tags]
|
82
|
+
)
|
83
|
+
end
|
84
|
+
|
85
|
+
def update_conversation(attributes)
|
86
|
+
Ribose::Conversation.update(
|
87
|
+
attributes.delete(:space_id),
|
88
|
+
attributes.delete(:conversation_id),
|
89
|
+
attributes,
|
90
|
+
)
|
91
|
+
end
|
92
|
+
|
93
|
+
def remove_conversation(options)
|
94
|
+
Ribose::Conversation.destroy(
|
95
|
+
space_id: options[:space_id],
|
96
|
+
conversation_id: options[:conversation_id],
|
97
|
+
)
|
98
|
+
end
|
99
|
+
|
100
|
+
def table_headers
|
101
|
+
["ID", "Title"]
|
102
|
+
end
|
103
|
+
|
104
|
+
def table_field_names
|
105
|
+
%w(id space_id name number_of_messages allow_comment)
|
106
|
+
end
|
107
|
+
|
108
|
+
def table_rows(conversations)
|
109
|
+
conversations.map { |conv| [conv.id, conv.name] }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|