cisco_spark 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cisco_spark/api.rb +75 -10
- data/lib/cisco_spark/data_caster.rb +1 -1
- data/lib/cisco_spark/model.rb +56 -5
- data/lib/cisco_spark/models/membership.rb +1 -0
- data/lib/cisco_spark/models/person.rb +14 -0
- data/lib/cisco_spark/models/room.rb +23 -2
- data/lib/cisco_spark/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c90cd5f9c41757ffde59ad64721f2b3e8ef51008
|
4
|
+
data.tar.gz: 3b508c1b6e52bebf5f6b50bee0ee62940e676bbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a2d4981ac441a9be1942be4c3b40b607a05af0e85fe577d85907a71c4a91ae986c3b70eda9478502b33fe361088080e1dd267a55a3ebb44b2d882422182382b
|
7
|
+
data.tar.gz: 9621af4da71d27a523f016689ba841d32e5fb2731bdf0e255e1cce3ed7735790a9e4f0e20eaa2d1c06bfcf7524de2b81127a3156e10aa86a0efd6981f94892e3
|
data/lib/cisco_spark/api.rb
CHANGED
@@ -3,15 +3,50 @@ require 'json'
|
|
3
3
|
|
4
4
|
module CiscoSpark
|
5
5
|
class Api
|
6
|
-
attr_accessor :resource, :params
|
6
|
+
attr_accessor :resource, :params, :request_body
|
7
7
|
|
8
|
-
def
|
8
|
+
def get(resource, params={})
|
9
9
|
@resource = resource
|
10
10
|
@params = params
|
11
|
+
|
12
|
+
do_get
|
13
|
+
end
|
14
|
+
|
15
|
+
def post(resource, request_body={})
|
16
|
+
@resource = resource
|
17
|
+
@request_body = request_body
|
18
|
+
|
19
|
+
do_post
|
20
|
+
end
|
21
|
+
|
22
|
+
def put(resource, request_body={})
|
23
|
+
@resource = resource
|
24
|
+
@request_body = request_body
|
25
|
+
|
26
|
+
puts "request_body: #{request_body}"
|
27
|
+
|
28
|
+
do_put
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete(resource)
|
32
|
+
@resource = resource
|
33
|
+
|
34
|
+
do_delete
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def do_delete
|
40
|
+
delete_request = request(Net::HTTP::Delete)
|
41
|
+
response = http_client.request(delete_request)
|
42
|
+
debug(response) if CiscoSpark.debug
|
43
|
+
|
44
|
+
response.is_a?(Net::HTTPSuccess)
|
11
45
|
end
|
12
46
|
|
13
|
-
def
|
14
|
-
|
47
|
+
def do_get
|
48
|
+
get_request = request(Net::HTTP::Get)
|
49
|
+
response = http_client.request(get_request)
|
15
50
|
debug(response) if CiscoSpark.debug
|
16
51
|
|
17
52
|
if response.is_a?(Net::HTTPSuccess)
|
@@ -19,7 +54,32 @@ module CiscoSpark
|
|
19
54
|
end
|
20
55
|
end
|
21
56
|
|
22
|
-
|
57
|
+
def do_post
|
58
|
+
post_request = request(Net::HTTP::Post)
|
59
|
+
post_request.set_form_data(request_body)
|
60
|
+
debug(post_request) if CiscoSpark.debug
|
61
|
+
|
62
|
+
response = http_client.request(post_request)
|
63
|
+
debug(response) if CiscoSpark.debug
|
64
|
+
|
65
|
+
if response.is_a?(Net::HTTPSuccess)
|
66
|
+
JSON.parse(response.body)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def do_put
|
71
|
+
post_request = request(Net::HTTP::Put)
|
72
|
+
post_request.set_form_data(request_body)
|
73
|
+
debug(post_request) if CiscoSpark.debug
|
74
|
+
|
75
|
+
response = http_client.request(post_request)
|
76
|
+
debug(response) if CiscoSpark.debug
|
77
|
+
|
78
|
+
puts "response.body: #{response.body}"
|
79
|
+
if response.is_a?(Net::HTTPSuccess)
|
80
|
+
JSON.parse(response.body)
|
81
|
+
end
|
82
|
+
end
|
23
83
|
|
24
84
|
def http_client
|
25
85
|
client = Net::HTTP.new(request_uri.host, request_uri.port)
|
@@ -27,11 +87,10 @@ module CiscoSpark
|
|
27
87
|
client
|
28
88
|
end
|
29
89
|
|
30
|
-
def request
|
31
|
-
request =
|
90
|
+
def request(request_class)
|
91
|
+
request = request_class.new(request_uri)
|
32
92
|
request['Content-type'] = "application/json; charset=utf-8"
|
33
93
|
request['Authorization'] = "Bearer #{CiscoSpark.api_key}"
|
34
|
-
debug(request) if CiscoSpark.debug
|
35
94
|
request
|
36
95
|
end
|
37
96
|
|
@@ -49,8 +108,14 @@ module CiscoSpark
|
|
49
108
|
end
|
50
109
|
|
51
110
|
def params
|
52
|
-
@params.each_with_object({}) do |(key, value), hash|
|
53
|
-
hash[Utils.camelize(key)] = value
|
111
|
+
(@params || {}).each_with_object({}) do |(key, value), hash|
|
112
|
+
hash[Utils.camelize(key)] = value if value
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def request_body
|
117
|
+
@request_body.each_with_object({}) do |(key, value), hash|
|
118
|
+
hash[Utils.camelize(key)] = value if value
|
54
119
|
end
|
55
120
|
end
|
56
121
|
|
data/lib/cisco_spark/model.rb
CHANGED
@@ -8,7 +8,9 @@ module CiscoSpark
|
|
8
8
|
end
|
9
9
|
|
10
10
|
module ClassMethods
|
11
|
-
def resource(resource)
|
11
|
+
def resource(resource=nil)
|
12
|
+
return @resource unless resource
|
13
|
+
|
12
14
|
@resource = resource
|
13
15
|
end
|
14
16
|
|
@@ -19,17 +21,35 @@ module CiscoSpark
|
|
19
21
|
attr_accessor *@attributes.keys
|
20
22
|
end
|
21
23
|
|
24
|
+
def mutable_attributes(*attributes)
|
25
|
+
@mutable_attributes = attributes
|
26
|
+
end
|
27
|
+
|
22
28
|
def fetch_all(options={})
|
23
|
-
response = Api.new(@resource, options)
|
29
|
+
response = Api.new.get(@resource, options)
|
24
30
|
parse_collection(response['items'])
|
25
31
|
end
|
26
32
|
|
27
33
|
def fetch(id, options={})
|
28
|
-
|
29
|
-
response = Api.new(resource, options).result
|
34
|
+
response = Api.new.get("#{@resource}/#{id}", options)
|
30
35
|
parse(response)
|
31
36
|
end
|
32
37
|
|
38
|
+
def create(attributes)
|
39
|
+
response = Api.new.post(@resource, attributes)
|
40
|
+
parse(response)
|
41
|
+
end
|
42
|
+
|
43
|
+
def update(id, attributes)
|
44
|
+
attributes = attributes.select{ |name, _v| @mutable_attributes.include?(name) }
|
45
|
+
response = Api.new.put("#{@resource}/#{id}", attributes)
|
46
|
+
parse(response)
|
47
|
+
end
|
48
|
+
|
49
|
+
def destroy(id)
|
50
|
+
Api.new.delete("#{@resource}/#{id}")
|
51
|
+
end
|
52
|
+
|
33
53
|
def parse_collection(collection)
|
34
54
|
collection.map{ |hash| parse(hash) }
|
35
55
|
end
|
@@ -46,13 +66,44 @@ module CiscoSpark
|
|
46
66
|
assign_attributes(attributes)
|
47
67
|
end
|
48
68
|
|
69
|
+
def fetch
|
70
|
+
merge_attributes(self.class.fetch(id))
|
71
|
+
end
|
72
|
+
|
73
|
+
def persist
|
74
|
+
id ? update : create
|
75
|
+
end
|
76
|
+
|
77
|
+
def destroy
|
78
|
+
self.class.destroy(id)
|
79
|
+
end
|
80
|
+
|
81
|
+
def to_h
|
82
|
+
self.class.attributes.keys.each_with_object({}) { |name, hash|
|
83
|
+
hash[name] = send(name)
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
49
87
|
private
|
50
88
|
|
89
|
+
def create
|
90
|
+
merge_attributes(self.class.create(to_h))
|
91
|
+
end
|
92
|
+
|
93
|
+
def update
|
94
|
+
attrs = to_h
|
95
|
+
id = attrs.delete(:id)
|
96
|
+
merge_attributes(self.class.update(id, attrs))
|
97
|
+
end
|
98
|
+
|
99
|
+
def merge_attributes(object)
|
100
|
+
assign_attributes(object.to_h)
|
101
|
+
end
|
102
|
+
|
51
103
|
def assign_attributes(attributes)
|
52
104
|
attributes.each do |name, value|
|
53
105
|
send("#{name}=", value)
|
54
106
|
end
|
55
107
|
end
|
56
|
-
|
57
108
|
end
|
58
109
|
end
|
@@ -13,5 +13,19 @@ module CiscoSpark
|
|
13
13
|
created: DataCaster::DateTime,
|
14
14
|
)
|
15
15
|
|
16
|
+
def self.all_by_email(email, options={})
|
17
|
+
options[:email] = email
|
18
|
+
self.fetch_all(options)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.all_by_name(name, options={})
|
22
|
+
options[:display_name] = name
|
23
|
+
self.fetch_all(options)
|
24
|
+
end
|
25
|
+
|
26
|
+
def memberships(options={})
|
27
|
+
options[person_id] = id
|
28
|
+
CiscoSpark::Membership.fetch_all(options)
|
29
|
+
end
|
16
30
|
end
|
17
31
|
end
|
@@ -13,9 +13,30 @@ module CiscoSpark
|
|
13
13
|
is_locked: DataCaster::Boolean,
|
14
14
|
sip_address: DataCaster::String
|
15
15
|
)
|
16
|
+
mutable_attributes :title
|
16
17
|
|
17
|
-
def messages
|
18
|
-
|
18
|
+
def messages(options={})
|
19
|
+
options[:room_id] = id
|
20
|
+
CiscoSpark::Message.fetch_all(options)
|
21
|
+
end
|
22
|
+
|
23
|
+
def memberships(options={})
|
24
|
+
options[:room_id] = id
|
25
|
+
CiscoSpark::Membership.fetch_all(options)
|
26
|
+
end
|
27
|
+
|
28
|
+
def send_message(message)
|
29
|
+
message.room_id = id
|
30
|
+
message.persit
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_person(person, options={})
|
34
|
+
CiscoSpark::Membership.new(
|
35
|
+
room_id: id,
|
36
|
+
person_id: person.id,
|
37
|
+
is_moderator: options.fetch(:is_moderator, false),
|
38
|
+
is_monitor: options.fetch(:is_monitor, false),
|
39
|
+
).persist
|
19
40
|
end
|
20
41
|
end
|
21
42
|
end
|
data/lib/cisco_spark/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cisco_spark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Maher
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|