cisco-spark-ruby 0.0.2 → 0.0.3
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 +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
|
-
|