cisco-spark-ruby 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/ciscospark +417 -397
- data/bin/cs +265 -0
- data/lib/base.rb +34 -30
- data/lib/cisco-spark-ruby.rb +120 -105
- data/lib/cli.rb +21 -0
- data/lib/collection.rb +28 -20
- data/lib/membership.rb +28 -28
- data/lib/memberships.rb +14 -15
- data/lib/message.rb +28 -27
- data/lib/messages.rb +42 -16
- data/lib/people.rb +14 -15
- data/lib/person.rb +29 -26
- data/lib/room.rb +27 -28
- data/lib/rooms.rb +21 -19
- data/lib/team.rb +27 -18
- data/lib/teammembership.rb +28 -28
- data/lib/teammemberships.rb +14 -15
- data/lib/teams.rb +14 -15
- data/lib/webhook.rb +24 -24
- data/lib/webhooks.rb +14 -14
- metadata +4 -2
data/lib/cli.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# $LOAD_PATH.push("/Users/robertlabrie/Documents/code/cisco-spark-ruby/lib")
|
2
|
+
|
3
|
+
require 'cisco-spark-ruby'
|
4
|
+
module CiscoSpark
|
5
|
+
class CLI
|
6
|
+
def run(options = {})
|
7
|
+
case options[:entity]
|
8
|
+
when 'people'; rsp = CiscoSpark::People::CLI(options)
|
9
|
+
when 'rooms'; rsp = CiscoSpark::Rooms::CLI(options)
|
10
|
+
when 'memberships'; rsp = CiscoSpark::Memberships::CLI(options)
|
11
|
+
when 'messages'; rsp = CiscoSpark::Messages::CLI(options)
|
12
|
+
when 'teams'; rsp = CiscoSpark::Teams::CLI(options)
|
13
|
+
when 'teammemberships'; rsp = CiscoSpark::TeamMemberships::CLI(options)
|
14
|
+
when 'webhooks'; rsp = CiscoSpark::Webhooks::CLI(options)
|
15
|
+
else
|
16
|
+
raise "No valid entity specified. run ciscospark -h"
|
17
|
+
end
|
18
|
+
puts rsp
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/collection.rb
CHANGED
@@ -1,22 +1,30 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
@items[key]
|
13
|
-
end
|
14
|
-
def to_s
|
15
|
-
"#{@items}"
|
16
|
-
end
|
17
|
-
def each
|
18
|
-
@items.each { |r| yield r }
|
19
|
-
end
|
1
|
+
module CiscoSpark
|
2
|
+
class Collection
|
3
|
+
include Enumerable
|
4
|
+
attr_accessor 'items'
|
5
|
+
def initialize(items = [])
|
6
|
+
# we can broke no delay
|
7
|
+
@items = items
|
8
|
+
end
|
9
|
+
|
10
|
+
def push(item)
|
11
|
+
@items.push(item)
|
20
12
|
end
|
21
|
-
end
|
22
13
|
|
14
|
+
def length
|
15
|
+
@items.length
|
16
|
+
end
|
17
|
+
|
18
|
+
def [](key)
|
19
|
+
@items[key]
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_s
|
23
|
+
@items.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def each
|
27
|
+
@items.each { |r| yield r }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/membership.rb
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
def Create(roomId, payload={})
|
20
|
-
payload[:roomId] = roomId
|
21
|
-
res = Spark::rest('POST',"/memberships", {:payload => payload})
|
22
|
-
if res.ok
|
23
|
-
membership = Spark::Membership.new(JSON.parse(res.body))
|
24
|
-
return membership
|
25
|
-
end
|
26
|
-
return nil
|
27
|
-
end
|
1
|
+
module CiscoSpark
|
2
|
+
class Membership < Base
|
3
|
+
attr_accessor :id, :roomId, :personId, :personEmail, :personDisplayName, :personOrgId, :isModerator, :isMonitor, :created
|
4
|
+
def initialize(data)
|
5
|
+
# we carry the membership, we can broke no delay
|
6
|
+
@api_endpoint = 'memberships'
|
7
|
+
@update_fields = [:isModerator]
|
8
|
+
super
|
9
|
+
end
|
10
|
+
class << self
|
11
|
+
def get(id)
|
12
|
+
res = CiscoSpark.rest('GET', "/memberships/#{id}")
|
13
|
+
if res.ok
|
14
|
+
membership = CiscoSpark::Membership.new(JSON.parse(res.body))
|
15
|
+
return membership
|
16
|
+
end
|
17
|
+
nil
|
28
18
|
end
|
29
19
|
|
20
|
+
def create(roomId, payload = {})
|
21
|
+
payload[:roomId] = roomId
|
22
|
+
res = CiscoSpark.rest('POST', '/memberships', payload: payload)
|
23
|
+
if res.ok
|
24
|
+
membership = CiscoSpark::Membership.new(JSON.parse(res.body))
|
25
|
+
return membership
|
26
|
+
end
|
27
|
+
nil
|
28
|
+
end
|
30
29
|
end
|
31
|
-
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/memberships.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|
14
|
-
out
|
1
|
+
module CiscoSpark
|
2
|
+
class Memberships < Collection
|
3
|
+
class << self
|
4
|
+
def list(params = {})
|
5
|
+
out = CiscoSpark::Memberships.new
|
6
|
+
res = CiscoSpark.rest('GET', '/memberships', params: params)
|
7
|
+
if res.ok
|
8
|
+
data = JSON.parse(res.body)
|
9
|
+
data['items'].each do |r|
|
10
|
+
membership = CiscoSpark::Membership.new(r)
|
11
|
+
out.push(membership)
|
15
12
|
end
|
13
|
+
end
|
14
|
+
out
|
16
15
|
end
|
17
16
|
end
|
17
|
+
end
|
18
18
|
end
|
19
|
-
|
data/lib/message.rb
CHANGED
@@ -1,30 +1,31 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
18
|
-
def Create(roomId, payload={})
|
19
|
-
payload[:roomId] = roomId
|
20
|
-
res = Spark::rest('POST',"/messages", {:payload => payload})
|
21
|
-
if res.ok
|
22
|
-
message = Spark::Message.new(JSON.parse(res.body))
|
23
|
-
return message
|
24
|
-
end
|
25
|
-
return nil
|
26
|
-
end
|
1
|
+
module CiscoSpark
|
2
|
+
class Message < Base
|
3
|
+
attr_accessor :id, :roomId, :roomType, :text, :personId, :personEmail, :created, :markdown, :html, :mentionedPeople, :files, :toPersonId, :toPersonEmail, :mentionedGroups
|
4
|
+
def initialize(data = {})
|
5
|
+
@api_endpoint = 'messages'
|
6
|
+
@update_fields = []
|
7
|
+
super
|
8
|
+
end
|
9
|
+
class << self
|
10
|
+
def get(id)
|
11
|
+
res = CiscoSpark.rest('GET', "/messages/#{id}")
|
12
|
+
if res.ok
|
13
|
+
message = CiscoSpark::Message.new(JSON.parse(res.body))
|
14
|
+
return message
|
15
|
+
end
|
16
|
+
nil
|
27
17
|
end
|
28
18
|
|
19
|
+
def create(payload = {})
|
20
|
+
# TODO: uploading attachments is a special case https://developer.ciscospark.com/attachments.html
|
21
|
+
# TODO: we need some way to check that either a roomID, toPersonID or toPersonEmail was passed
|
22
|
+
res = CiscoSpark.rest('POST', '/messages', payload: payload)
|
23
|
+
if res.ok
|
24
|
+
message = CiscoSpark::Message.new(JSON.parse(res.body))
|
25
|
+
return message
|
26
|
+
end
|
27
|
+
nil
|
28
|
+
end
|
29
29
|
end
|
30
|
-
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/messages.rb
CHANGED
@@ -1,19 +1,45 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
1
|
+
module CiscoSpark
|
2
|
+
class Messages < Collection
|
3
|
+
class << self
|
4
|
+
def CLI(options = {})
|
5
|
+
case options[:action]
|
6
|
+
when 'list'
|
7
|
+
params = {}
|
8
|
+
%i[before roomId mentionedPeople beforeMessage].each { |k| params[k] = options[k] if options[k] }
|
9
|
+
raise 'roomId must be specified' unless options[:roomId]
|
10
|
+
messages = CiscoSpark::Messages::list(params)
|
11
|
+
return messages
|
12
|
+
when 'get'
|
13
|
+
raise 'Specify message ID with --id' unless options[:id]
|
14
|
+
message = CiscoSpark::Message::get(options[:id])
|
15
|
+
return message
|
16
|
+
when 'create'
|
17
|
+
raise 'Specify room ID with --roomid' unless options[:roomId]
|
18
|
+
params = {}
|
19
|
+
%i[toPersonId toPersonEmail text markdown files].each { |k| params[k] = options[k] if options[k] }
|
20
|
+
message = CiscoSpark::Message::create(params)
|
21
|
+
return message
|
22
|
+
when 'delete'
|
23
|
+
raise 'Specify message ID with --id' unless options[:id]
|
24
|
+
message = CiscoSpark::Message::get(options[:id])
|
25
|
+
message.delete
|
26
|
+
return message
|
27
|
+
else
|
28
|
+
raise "action not specified or not one of list, get, create, delete"
|
16
29
|
end
|
30
|
+
end
|
31
|
+
def list(params = {})
|
32
|
+
out = CiscoSpark::Messages.new
|
33
|
+
res = CiscoSpark.rest('GET', '/messages', params: params)
|
34
|
+
if res.ok
|
35
|
+
data = JSON.parse(res.body)
|
36
|
+
data['items'].each do |r|
|
37
|
+
message = CiscoSpark::Message.new(r)
|
38
|
+
out.push(message)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
out
|
42
|
+
end
|
17
43
|
end
|
44
|
+
end
|
18
45
|
end
|
19
|
-
|
data/lib/people.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
13
|
-
end
|
14
|
-
out
|
1
|
+
module CiscoSpark
|
2
|
+
class People < Collection
|
3
|
+
class << self
|
4
|
+
def list(params = {})
|
5
|
+
out = CiscoSpark::People.new
|
6
|
+
res = CiscoSpark.rest('GET', '/people', params: params)
|
7
|
+
if res.ok
|
8
|
+
data = JSON.parse(res.body)
|
9
|
+
data['items'].each do |r|
|
10
|
+
person = CiscoSpark::Person.new(r)
|
11
|
+
out.push(person)
|
15
12
|
end
|
13
|
+
end
|
14
|
+
out
|
16
15
|
end
|
17
16
|
end
|
17
|
+
end
|
18
18
|
end
|
19
|
-
|
data/lib/person.rb
CHANGED
@@ -1,29 +1,32 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
module CiscoSpark
|
2
|
+
class Person < Base
|
3
|
+
attr_accessor :id, :emails, :displayName, :nickName, :firstName, :lastName,
|
4
|
+
:avatar, :orgId, :created, :lastActivity, :status, :type, :roles, :licenses,
|
5
|
+
:timezone, :invitePending, :loginEnabled
|
6
|
+
def initialize(data)
|
7
|
+
@api_endpoint = 'people'
|
8
|
+
@update_fields = %i[emails displayName firstName lastName avatar orgId roles licenses]
|
9
|
+
super
|
10
|
+
end
|
11
|
+
class << self
|
12
|
+
def get(id)
|
13
|
+
res = CiscoSpark.rest('GET', "/people/#{id}")
|
14
|
+
if res.ok
|
15
|
+
person = CiscoSpark::Person.new(JSON.parse(res.body))
|
16
|
+
return person
|
17
|
+
end
|
18
|
+
nil
|
8
19
|
end
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
def Create(email, payload={})
|
19
|
-
payload[:email] = email
|
20
|
-
res = Spark::rest('POST',"/people", {:payload => payload})
|
21
|
-
if res.ok
|
22
|
-
person = Spark::Person.new(JSON.parse(res.body))
|
23
|
-
return person
|
24
|
-
end
|
25
|
-
return nil
|
26
|
-
end
|
20
|
+
|
21
|
+
def create(emails, payload = {})
|
22
|
+
payload[:emails] = emails
|
23
|
+
res = CiscoSpark.rest('POST', '/people', payload: payload)
|
24
|
+
if res.ok
|
25
|
+
person = CiscoSpark::Person.new(JSON.parse(res.body))
|
26
|
+
return person
|
27
|
+
end
|
28
|
+
nil
|
27
29
|
end
|
28
30
|
end
|
29
|
-
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/room.rb
CHANGED
@@ -1,32 +1,31 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
module CiscoSpark
|
2
|
+
class Room < Base
|
3
|
+
attr_accessor :id, :title, :type, :isLocked, :lastActivity, :creatorId, :created, :teamId, :sipAddress, :errors
|
4
|
+
def initialize(data)
|
5
|
+
@api_endpoint = 'rooms'
|
6
|
+
@update_fields = [:title]
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def get(id)
|
12
|
+
res = CiscoSpark.rest('GET', "/rooms/#{id}")
|
13
|
+
if res.ok
|
14
|
+
room = CiscoSpark::Room.new(JSON.parse(res.body))
|
15
|
+
return room
|
16
|
+
end
|
17
|
+
nil
|
8
18
|
end
|
9
19
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
def Create(title, teamId = nil)
|
20
|
-
payload = {}
|
21
|
-
payload[:title] = title
|
22
|
-
payload[:teamId] = teamId if teamId
|
23
|
-
res = Spark::rest('POST',"/rooms", {:payload => payload})
|
24
|
-
if res.ok
|
25
|
-
room = Spark::Room.new(JSON.parse(res.body))
|
26
|
-
return room
|
27
|
-
end
|
28
|
-
return nil
|
29
|
-
end
|
20
|
+
def create(title, payload = {})
|
21
|
+
payload[:title] = title
|
22
|
+
res = CiscoSpark.rest('POST', '/rooms', payload: payload)
|
23
|
+
if res.ok
|
24
|
+
room = CiscoSpark::Room.new(JSON.parse(res.body))
|
25
|
+
return room
|
26
|
+
end
|
27
|
+
nil
|
30
28
|
end
|
31
29
|
end
|
32
|
-
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/rooms.rb
CHANGED
@@ -1,23 +1,25 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
1
|
+
module CiscoSpark
|
2
|
+
class Rooms < CiscoSpark::Collection
|
3
|
+
class << self
|
4
|
+
def CLI(options = {})
|
5
|
+
|
6
|
+
end
|
7
|
+
def list(params = {})
|
8
|
+
out = CiscoSpark::Rooms.new
|
9
|
+
if params[:sortBy]
|
10
|
+
valid = %w[id lastactivity created]
|
11
|
+
raise "Valid sortBy values for List are #{valid} given #{params[:sortBy]}" unless valid.include? params[:sortBy]
|
12
|
+
end
|
13
|
+
rsp = CiscoSpark.rest('GET', '/rooms', params: params)
|
14
|
+
if rsp.ok
|
15
|
+
data = JSON.parse(rsp.body)
|
16
|
+
data['items'].each do |r|
|
17
|
+
room = CiscoSpark::Room.new(r)
|
18
|
+
out.push(room)
|
19
19
|
end
|
20
|
+
end
|
21
|
+
out
|
20
22
|
end
|
21
23
|
end
|
24
|
+
end
|
22
25
|
end
|
23
|
-
|