comufy 0.0.2b → 0.0.2.pre2
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.
- data/README.md +1 -1
- data/comufyruby.gemspec +2 -2
- data/example/comufy_example.rb +30 -0
- data/lib/comufy/config.rb +6 -6
- data/lib/comufy/connector.rb +177 -132
- data/lib/comufy/version.rb +1 -1
- data/lib/comufy.rb +2 -11
- metadata +11 -9
data/README.md
CHANGED
data/comufyruby.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.version = Comufy::VERSION
|
9
9
|
gem.authors = %w(plcstevens)
|
10
10
|
gem.email = %w(philip@tauri-tec.com)
|
11
|
-
gem.description = %q{}
|
12
|
-
gem.summary = %q{}
|
11
|
+
gem.description = %q{This library can be used with Heroku}
|
12
|
+
gem.summary = %q{This library allows customers to interact with the Comufy backend and perform common operations.}
|
13
13
|
gem.homepage = "https://github.com/plcstevens/comufyruby"
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'comufy'
|
2
|
+
|
3
|
+
USERNAME = ARGV[0]
|
4
|
+
PASSWORD = ARGV[1]
|
5
|
+
APPLICATION_NAME = ARGV[2]
|
6
|
+
FACEBOOK_USER_ID = ARGV[3]
|
7
|
+
|
8
|
+
connect = Comufy.connect(logger: "debug", username: USERNAME, password: PASSWORD)
|
9
|
+
tag = Array[{name: :other_details, type: Comufy::Connector::STRING_TYPE}]
|
10
|
+
puts connect.register_tags(APPLICATION_NAME, tag)
|
11
|
+
|
12
|
+
# register a tag!
|
13
|
+
#tag = Array[Hash[:name, :other_details, :type, Comufy::Connector::STRING_TYPE]]
|
14
|
+
#puts connect.register_tags(APPLICATION_NAME, tag)
|
15
|
+
|
16
|
+
# lets save a new user or if the user exists, update these tag details
|
17
|
+
#tags = Hash[:other_details, 'test_details']
|
18
|
+
#puts connect.store_user(APPLICATION_NAME, FACEBOOK_USER_ID, tags)
|
19
|
+
|
20
|
+
# send a message to the user!
|
21
|
+
#description = "description for you!"
|
22
|
+
#content = "Content of the message goes here"
|
23
|
+
#message_options = Hash.new
|
24
|
+
#message_options[:private] = true
|
25
|
+
#message_options[:link] = "www.example.com"
|
26
|
+
#message_options[:name] = "test_name"
|
27
|
+
#message_options[:description] = "test_description"
|
28
|
+
#puts connect.send_facebook_message(
|
29
|
+
# APPLICATION_NAME, description, content, %w(FACEBOOK_USER_ID), message_options: message_options
|
30
|
+
#)
|
data/lib/comufy/config.rb
CHANGED
@@ -2,7 +2,7 @@ module Comufy
|
|
2
2
|
class Config
|
3
3
|
include Comufy
|
4
4
|
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :user, :password, :base_api_url
|
6
6
|
attr_accessor :access_token, :expiry_time
|
7
7
|
|
8
8
|
# Sets the environment settings for Comufy to send and receive messages.
|
@@ -23,23 +23,23 @@ module Comufy
|
|
23
23
|
yaml = Hash.new()
|
24
24
|
end
|
25
25
|
|
26
|
-
|
26
|
+
user = params[:user]
|
27
27
|
password = params[:password]
|
28
28
|
no_env = params[:no_env]
|
29
29
|
staging = params[:staging]
|
30
30
|
|
31
|
-
if (
|
31
|
+
if (user and not password) or (password and not user)
|
32
32
|
raise "You must supply both a username and password."
|
33
33
|
end
|
34
34
|
|
35
|
-
@
|
35
|
+
@user = user || yaml.fetch(:config, {})['user']
|
36
36
|
@password = password || yaml.fetch(:config, {})['password']
|
37
37
|
@access_token = no_env ? nil : ENV.fetch('access_token', nil)
|
38
38
|
@expiry_time = no_env ? nil : ENV.fetch('expiry_time', nil)
|
39
39
|
|
40
40
|
staging ?
|
41
|
-
@base_api_url = 'https://staging.comufy.com/xcoreweb/client
|
42
|
-
@base_api_url = 'https://social.comufy.com/xcoreweb/client
|
41
|
+
@base_api_url = 'https://staging.comufy.com/xcoreweb/client' :
|
42
|
+
@base_api_url = 'https://social.comufy.com/xcoreweb/client'
|
43
43
|
|
44
44
|
end
|
45
45
|
end
|
data/lib/comufy/connector.rb
CHANGED
@@ -2,20 +2,31 @@ module Comufy
|
|
2
2
|
class Connector
|
3
3
|
include Comufy
|
4
4
|
|
5
|
+
STRING_TYPE = :STRING
|
6
|
+
DATE_TYPE = :DATE
|
7
|
+
GENDER_TYPE = :GENDER
|
8
|
+
INT_TYPE = :INT
|
9
|
+
FLOAT_TYPE = :FLOAT
|
10
|
+
LEGAL_TYPES = [STRING_TYPE, DATE_TYPE, GENDER_TYPE, INT_TYPE, FLOAT_TYPE]
|
11
|
+
|
12
|
+
NAME_TAG = :name
|
13
|
+
TYPE_TAG = :type
|
14
|
+
LEGAL_TAGS = [NAME_TAG, TYPE_TAG]
|
15
|
+
|
5
16
|
# There are a number of options you can pass to change default settings.
|
6
17
|
#
|
7
18
|
# With regards to the server to connect to, if you pass <tt>staging: true</tt> it'll use the Comufy
|
8
19
|
# staging server, otherwise it'll default to using the social server.
|
9
20
|
#
|
10
21
|
# Concerning authentication, there are a number of ways to connect to the Comufy servers. You can
|
11
|
-
# pass in a
|
22
|
+
# pass in a user name and password in the parameters, provide the location of a YAML file where these are
|
12
23
|
# specified or read in the <tt>access_token</tt> from your environment path. Please note that you can stop
|
13
24
|
# the connector from reading your environment path by setting <tt>no_env</tt> to true. When doing this please
|
14
|
-
# ensure your
|
25
|
+
# ensure your user name and password are correct, otherwise you'll not be able to connect to the Comufy servers.
|
15
26
|
#
|
16
27
|
# The YAML file provided should appear as:
|
17
28
|
# config:
|
18
|
-
#
|
29
|
+
# user: user
|
19
30
|
# password: password
|
20
31
|
#
|
21
32
|
# = Example
|
@@ -26,8 +37,8 @@ module Comufy
|
|
26
37
|
# # do not use the environment path
|
27
38
|
# Comufy::Connector.new(no_env: true)
|
28
39
|
#
|
29
|
-
# # set the
|
30
|
-
# Comufy::Connector.new(
|
40
|
+
# # set the user and password yourself
|
41
|
+
# Comufy::Connector.new(user: YOUR_USERNAME, password: YOUR_PASSWORD)
|
31
42
|
#
|
32
43
|
# # Or you can read in from a YAML file!
|
33
44
|
#
|
@@ -38,15 +49,16 @@ module Comufy
|
|
38
49
|
@config = Config.new(params)
|
39
50
|
@logger = Logger.new(STDOUT)
|
40
51
|
@logger.level = case params[:logger]
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
52
|
+
when "info" then
|
53
|
+
Logger::INFO
|
54
|
+
when "warn" then
|
55
|
+
Logger::WARN
|
56
|
+
when "debug" then
|
57
|
+
Logger::DEBUG
|
58
|
+
else
|
59
|
+
Logger::WARN
|
60
|
+
end
|
61
|
+
|
50
62
|
# sanitize all output
|
51
63
|
original_formatter = Logger::Formatter.new
|
52
64
|
@logger.formatter = proc { |severity, datetime, progname, msg|
|
@@ -69,19 +81,19 @@ module Comufy
|
|
69
81
|
def store_user app_name, uid, tags
|
70
82
|
return false unless get_access_token
|
71
83
|
if app_name.nil? or app_name.empty?
|
72
|
-
@logger.warn(progname = 'Comufy::
|
84
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
73
85
|
'First parameter must be set to your application name.'
|
74
86
|
}
|
75
87
|
return false
|
76
88
|
end
|
77
89
|
if uid.nil? or uid.empty?
|
78
|
-
@logger.warn(progname = 'Comufy::
|
90
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
79
91
|
'Second parameter must be a valid Facebook user ID.'
|
80
92
|
}
|
81
93
|
return false
|
82
94
|
end
|
83
95
|
if tags.nil? or not tags.is_a?(Hash)
|
84
|
-
@logger.warn(progname = 'Comufy::
|
96
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
85
97
|
'Third parameter must be a hash of tag information for this uid.'
|
86
98
|
}
|
87
99
|
return false
|
@@ -101,41 +113,44 @@ module Comufy
|
|
101
113
|
if message
|
102
114
|
case message['cd']
|
103
115
|
when 388 then
|
116
|
+
@logger.debug(progname = 'Comufy::Connector.store_user') {
|
117
|
+
"388 - Success! - data = #{data} - message = #{message}."
|
118
|
+
}
|
104
119
|
return true
|
105
120
|
when 475 then
|
106
|
-
@logger.debug(progname = 'Comufy::
|
121
|
+
@logger.debug(progname = 'Comufy::Connector.store_user') {
|
107
122
|
"475 - Invalid parameter provided. - data = #{data} - message = #{message}."
|
108
123
|
}
|
109
|
-
@logger.warn(progname = 'Comufy::
|
124
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
110
125
|
'475 - Invalid parameter provided.'
|
111
126
|
}
|
112
127
|
when 617 then
|
113
|
-
@logger.debug(progname = 'Comufy::
|
128
|
+
@logger.debug(progname = 'Comufy::Connector.store_user') {
|
114
129
|
"617 - Some of the tags passed are not registered. - data = #{data} - message = #{message}."
|
115
130
|
}
|
116
|
-
@logger.warn(progname = 'Comufy::
|
131
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
117
132
|
'617 - Some of the tags passed are not registered.'
|
118
133
|
}
|
119
134
|
when 632 then
|
120
|
-
@logger.debug(progname = 'Comufy::
|
135
|
+
@logger.debug(progname = 'Comufy::Connector.store_user') {
|
121
136
|
"632 - _ERROR_FACEBOOK_PAGE_NOT_FOUND - data = #{data} - message = #{message}."
|
122
137
|
}
|
123
|
-
@logger.warn(progname = 'Comufy::
|
138
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
124
139
|
'632 - _ERROR_FACEBOOK_PAGE_NOT_FOUND'
|
125
140
|
}
|
126
141
|
else
|
127
|
-
@logger.debug(progname = 'Comufy::
|
142
|
+
@logger.debug(progname = 'Comufy::Connector.store_user') {
|
128
143
|
"UNKNOWN RESPONSE - data = #{data} - message = #{message}."
|
129
144
|
}
|
130
|
-
@logger.warn(progname = 'Comufy::
|
145
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
131
146
|
"An error occurred when sending #{data}. Comufy returned #{message}. Please get in touch with Comufy if you cannot resolve the problem."
|
132
147
|
}
|
133
148
|
end
|
134
149
|
else
|
135
|
-
@logger.debug(progname = 'Comufy::
|
150
|
+
@logger.debug(progname = 'Comufy::Connector.store_user') {
|
136
151
|
"Authentication failed - data = #{data}."
|
137
152
|
}
|
138
|
-
@logger.warn(progname = 'Comufy::
|
153
|
+
@logger.warn(progname = 'Comufy::Connector.store_user') {
|
139
154
|
"Authentication failed when sending #{data}. Please get in touch with Comufy if you cannot resolve the problem."
|
140
155
|
}
|
141
156
|
end
|
@@ -145,11 +160,11 @@ module Comufy
|
|
145
160
|
# TODO: IMPLEMENT METHOD
|
146
161
|
def remove_user app_name, uid # :nodoc:
|
147
162
|
return false unless get_access_token
|
148
|
-
@logger.debug(progname = 'Comufy::
|
163
|
+
@logger.debug(progname = 'Comufy::Connector.remove_user') {
|
149
164
|
'METHOD_NOT_IMPLEMENTED'
|
150
165
|
}
|
151
|
-
@logger.warn(progname = 'Comufy::
|
152
|
-
|
166
|
+
@logger.warn(progname = 'Comufy::Connector.remove_user') {
|
167
|
+
'METHOD_NOT_IMPLEMENTED'
|
153
168
|
}
|
154
169
|
app_name
|
155
170
|
uid
|
@@ -174,13 +189,13 @@ module Comufy
|
|
174
189
|
def store_users app_name, uid_tags
|
175
190
|
return false unless get_access_token
|
176
191
|
if app_name.nil? or app_name.empty?
|
177
|
-
@logger.warn(progname = 'Comufy::
|
192
|
+
@logger.warn(progname = 'Comufy::Connector.store_users') {
|
178
193
|
'First parameter must be set to your application name.'
|
179
194
|
}
|
180
195
|
return false
|
181
196
|
end
|
182
197
|
if uid_tags.nil? or not uid_tags.is_a?(Hash)
|
183
|
-
@logger.warn(progname = 'Comufy::
|
198
|
+
@logger.warn(progname = 'Comufy::Connector.store_users') {
|
184
199
|
'Second parameter must be a hash where a key is a Facebook user ID and its value a hash of tags.'
|
185
200
|
}
|
186
201
|
return false
|
@@ -197,47 +212,64 @@ module Comufy
|
|
197
212
|
if message
|
198
213
|
case message['cd']
|
199
214
|
when 388 then
|
215
|
+
@logger.debug(progname = 'Comufy::Connector.store_users') {
|
216
|
+
"388 - Success! - data = #{data} - message = #{message}."
|
217
|
+
}
|
200
218
|
return true
|
201
219
|
when 475 then
|
202
|
-
@logger.debug(progname = 'Comufy::
|
220
|
+
@logger.debug(progname = 'Comufy::Connector.store_users') {
|
203
221
|
"603 - Invalid parameter provided. - data = #{data} - message = #{message}."
|
204
222
|
}
|
205
|
-
@logger.warn(progname = 'Comufy::
|
223
|
+
@logger.warn(progname = 'Comufy::Connector.store_users') {
|
206
224
|
'475 - Invalid parameter provided.'
|
207
225
|
}
|
208
226
|
when 617 then
|
209
|
-
@logger.debug(progname = 'Comufy::
|
227
|
+
@logger.debug(progname = 'Comufy::Connector.store_users') {
|
210
228
|
"617 - Some of the tags passed are not registered. - data = #{data} - message = #{message}."
|
211
229
|
}
|
212
|
-
@logger.warn(progname = 'Comufy::
|
230
|
+
@logger.warn(progname = 'Comufy::Connector.store_users') {
|
213
231
|
'617 - Some of the tags passed are not registered.'
|
214
232
|
}
|
215
233
|
when 632 then
|
216
|
-
@logger.debug(progname = 'Comufy::
|
234
|
+
@logger.debug(progname = 'Comufy::Connector.store_users') {
|
217
235
|
"632 - _ERROR_FACEBOOK_PAGE_NOT_FOUND - data = #{data} - message = #{message}."
|
218
236
|
}
|
219
|
-
@logger.warn(progname = 'Comufy::
|
237
|
+
@logger.warn(progname = 'Comufy::Connector.store_users') {
|
220
238
|
'632 - _ERROR_FACEBOOK_PAGE_NOT_FOUND'
|
221
239
|
}
|
222
240
|
else
|
223
|
-
@logger.debug(progname = 'Comufy::
|
241
|
+
@logger.debug(progname = 'Comufy::Connector.store_users') {
|
224
242
|
"UNKNOWN RESPONSE - data = #{data} - message = #{message}."
|
225
243
|
}
|
226
|
-
@logger.warn(progname = 'Comufy::
|
244
|
+
@logger.warn(progname = 'Comufy::Connector.store_users') {
|
227
245
|
"An error occurred when sending #{data}. Comufy returned #{message}. Please get in touch with Comufy if you cannot resolve the problem."
|
228
246
|
}
|
229
247
|
end
|
230
248
|
else
|
231
|
-
@logger.debug(progname = 'Comufy::
|
249
|
+
@logger.debug(progname = 'Comufy::Connector.store_users') {
|
232
250
|
"Authentication failed - data = #{data}."
|
233
251
|
}
|
234
|
-
@logger.warn(progname = 'Comufy::
|
252
|
+
@logger.warn(progname = 'Comufy::Connector.store_users') {
|
235
253
|
"Authentication failed when sending #{data}. Please get in touch with Comufy if you cannot resolve the problem."
|
236
254
|
}
|
237
255
|
end
|
238
256
|
false
|
239
257
|
end
|
240
258
|
|
259
|
+
|
260
|
+
# Registering a Facebook application tag allows you to store data-fields about each one of your customers.
|
261
|
+
#
|
262
|
+
# * (String) +app_name+ - The application you wish to register the tags with.
|
263
|
+
# * (Hash) +tag+ - The tag you wish to register
|
264
|
+
# * (String) +name+ - The name for the tag.
|
265
|
+
# * (String) +type+ - Must be one of the following: STRING, DATE, GENDER, INT, FLOAT.
|
266
|
+
#
|
267
|
+
# = Example
|
268
|
+
# Comufy::Connector.register_tag(YOUR_APPLICATION_NAME, name: 'dob', type: Connector::DATE_TYPE)
|
269
|
+
def register_tag app_name, tag = {}
|
270
|
+
register_tags(app_name, Array[tag])
|
271
|
+
end
|
272
|
+
|
241
273
|
# Registering a Facebook application tag allows you to store data-fields about each one of your customers.
|
242
274
|
#
|
243
275
|
# * (String) +app_name+ - The application you wish to register the tags with.
|
@@ -249,39 +281,39 @@ module Comufy
|
|
249
281
|
# Comufy::Connector.register_tags(
|
250
282
|
# YOUR_APPLICATION_NAME,
|
251
283
|
# [{
|
252
|
-
#
|
253
|
-
#
|
284
|
+
# Connector::NAME_TAG: 'dob',
|
285
|
+
# Connector::TYPE_TAG: Connector::DATE_TYPE
|
254
286
|
# },
|
255
287
|
# {
|
256
|
-
#
|
257
|
-
#
|
288
|
+
# Connector::NAME_TAG: 'height',
|
289
|
+
# Connector::TYPE_TAG: Connector::FLOAT_TYPE
|
258
290
|
# }]
|
259
291
|
# )
|
260
292
|
def register_tags app_name, tags
|
261
293
|
return false unless get_access_token
|
262
294
|
if app_name.nil? or app_name.empty?
|
263
|
-
@logger.warn(progname = 'Comufy::
|
295
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
264
296
|
'First parameter must be set to your application name.'
|
265
297
|
}
|
266
298
|
return false
|
267
299
|
end
|
268
300
|
if tags.nil? or not tags.is_a?(Array)
|
269
|
-
@logger.warn(progname = 'Comufy::
|
301
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
270
302
|
'Second parameter must be an array containing hashes.'
|
271
303
|
}
|
272
304
|
return false
|
273
305
|
end
|
274
306
|
tags.each do |tag|
|
275
307
|
tag.each do |key, value|
|
276
|
-
unless
|
277
|
-
@logger.warn(progname = 'Comufy::
|
278
|
-
|
308
|
+
unless LEGAL_TAGS.include?(key)
|
309
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
310
|
+
"You must have only two keys called #{NAME_TAG} and #{TYPE_TAG}."
|
279
311
|
}
|
280
312
|
return false
|
281
313
|
end
|
282
|
-
if key == "type"
|
283
|
-
@logger.warn(progname = 'Comufy::
|
284
|
-
|
314
|
+
if (key == "type" or key == :type) and not LEGAL_TYPES.include?(value)
|
315
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
316
|
+
"Your type must be one of these values: #{LEGAL_TYPES.join(',')}."
|
285
317
|
}
|
286
318
|
return false
|
287
319
|
end
|
@@ -299,48 +331,51 @@ module Comufy
|
|
299
331
|
if message
|
300
332
|
case message['cd']
|
301
333
|
when 386 then
|
334
|
+
@logger.debug(progname = 'Comufy::Connector.register_tags') {
|
335
|
+
"386 - Success! - data = #{data} - message = #{message}."
|
336
|
+
}
|
302
337
|
return true
|
303
338
|
when 475 then
|
304
|
-
@logger.debug(progname = 'Comufy::
|
339
|
+
@logger.debug(progname = 'Comufy::Connector.register_tags') {
|
305
340
|
"475 - Invalid parameters provided - data = #{data} - message = #{message}."
|
306
341
|
}
|
307
|
-
@logger.warn(progname = 'Comufy::
|
342
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
308
343
|
'475 - Invalid parameters provided'
|
309
344
|
}
|
310
345
|
when 603 then
|
311
|
-
@logger.debug(progname = 'Comufy::
|
346
|
+
@logger.debug(progname = 'Comufy::Connector.register_tags') {
|
312
347
|
"603 - _ERROR_DOMAIN_APPLICATION_NAME_NOT_FOUND - data = #{data} - message = #{message}."
|
313
348
|
}
|
314
|
-
@logger.warn(progname = 'Comufy::
|
349
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
315
350
|
'603 - _ERROR_DOMAIN_APPLICATION_NAME_NOT_FOUND'
|
316
351
|
}
|
317
352
|
when 607 then
|
318
|
-
@logger.debug(progname = 'Comufy::
|
353
|
+
@logger.debug(progname = 'Comufy::Connector.register_tags') {
|
319
354
|
"607 - _ERROR_UNAUTHORISED_ACTION - data = #{data} - message = #{message}."
|
320
355
|
}
|
321
|
-
@logger.warn(progname = 'Comufy::
|
356
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
322
357
|
'607 - _ERROR_UNAUTHORISED_ACTION'
|
323
358
|
}
|
324
359
|
when 618 then
|
325
|
-
@logger.debug(progname = 'Comufy::
|
360
|
+
@logger.debug(progname = 'Comufy::Connector.register_tags') {
|
326
361
|
"618 - _ERROR_DOMAIN_APPLICATION_TAG_ALREADY_REGISTERED - data = #{data} - message = #{message}."
|
327
362
|
}
|
328
|
-
@logger.warn(progname = 'Comufy::
|
363
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
329
364
|
'618 - _ERROR_DOMAIN_APPLICATION_TAG_ALREADY_REGISTERED'
|
330
365
|
}
|
331
366
|
else
|
332
|
-
@logger.debug(progname = 'Comufy::
|
367
|
+
@logger.debug(progname = 'Comufy::Connector.register_tags') {
|
333
368
|
"UNKNOWN RESPONSE - data = #{data} - message = #{message}."
|
334
369
|
}
|
335
|
-
@logger.warn(progname = 'Comufy::
|
370
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
336
371
|
"An error occurred when sending #{data}. Comufy returned #{message}. Please get in touch with Comufy if you cannot resolve the problem."
|
337
372
|
}
|
338
373
|
end
|
339
374
|
else
|
340
|
-
@logger.debug(progname = 'Comufy::
|
375
|
+
@logger.debug(progname = 'Comufy::Connector.register_tags') {
|
341
376
|
"Authentication failed - data = #{data}."
|
342
377
|
}
|
343
|
-
@logger.warn(progname = 'Comufy::
|
378
|
+
@logger.warn(progname = 'Comufy::Connector.register_tags') {
|
344
379
|
"Authentication failed when sending #{data}. Please get in touch with Comufy if you cannot resolve the problem."
|
345
380
|
}
|
346
381
|
end
|
@@ -358,13 +393,13 @@ module Comufy
|
|
358
393
|
def unregister_tag app_name, tag
|
359
394
|
return false unless get_access_token
|
360
395
|
if app_name.nil? or app_name.empty?
|
361
|
-
@logger.warn(progname = 'Comufy::
|
396
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
362
397
|
'First parameter must be set to your application name.'
|
363
398
|
}
|
364
399
|
return false
|
365
400
|
end
|
366
401
|
if tag.nil? or tag.empty?
|
367
|
-
@logger.warn(progname = 'Comufy::
|
402
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
368
403
|
'Second parameter must be set to the tag.'
|
369
404
|
}
|
370
405
|
return false
|
@@ -381,48 +416,51 @@ module Comufy
|
|
381
416
|
if message
|
382
417
|
case message['cd']
|
383
418
|
when 385 then
|
419
|
+
@logger.debug(progname = 'Comufy::Connector.unregister_tag') {
|
420
|
+
"385 - Success! - data = #{data} - message = #{message}."
|
421
|
+
}
|
384
422
|
return true
|
385
423
|
when 475 then
|
386
|
-
@logger.debug(progname = 'Comufy::
|
424
|
+
@logger.debug(progname = 'Comufy::Connector.unregister_tag') {
|
387
425
|
"475 - Invalid parameters provided - data = #{data} - message = #{message}."
|
388
426
|
}
|
389
|
-
@logger.warn(progname = 'Comufy::
|
427
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
390
428
|
'475 - Invalid parameters provided'
|
391
429
|
}
|
392
430
|
when 603 then
|
393
|
-
@logger.debug(progname = 'Comufy::
|
431
|
+
@logger.debug(progname = 'Comufy::Connector.unregister_tag') {
|
394
432
|
"603 - _ERROR_DOMAIN_APPLICATION_NAME_NOT_FOUND - data = #{data} - message = #{message}."
|
395
433
|
}
|
396
|
-
@logger.warn(progname = 'Comufy::
|
434
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
397
435
|
'603 - _ERROR_DOMAIN_APPLICATION_NAME_NOT_FOUND'
|
398
436
|
}
|
399
437
|
when 607 then
|
400
|
-
@logger.debug(progname = 'Comufy::
|
438
|
+
@logger.debug(progname = 'Comufy::Connector.unregister_tag') {
|
401
439
|
"607 - _ERROR_UNAUTHORISED_ACTION - data = #{data} - message = #{message}."
|
402
440
|
}
|
403
|
-
@logger.warn(progname = 'Comufy::
|
441
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
404
442
|
'607 - _ERROR_UNAUTHORISED_ACTION'
|
405
443
|
}
|
406
444
|
when 617 then
|
407
|
-
@logger.debug(progname = 'Comufy::
|
445
|
+
@logger.debug(progname = 'Comufy::Connector.unregister_tag') {
|
408
446
|
"617 - _ERROR_DOMAIN_APPLICATION_TAG_NOT_FOUND - data = #{data} - message = #{message}."
|
409
447
|
}
|
410
|
-
@logger.warn(progname = 'Comufy::
|
448
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
411
449
|
'617 - _ERROR_DOMAIN_APPLICATION_TAG_NOT_FOUND'
|
412
450
|
}
|
413
451
|
else
|
414
|
-
@logger.debug(progname = 'Comufy::
|
452
|
+
@logger.debug(progname = 'Comufy::Connector.unregister_tag') {
|
415
453
|
"UNKNOWN RESPONSE - data = #{data} - message = #{message}."
|
416
454
|
}
|
417
|
-
@logger.warn(progname = 'Comufy::
|
455
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
418
456
|
"An error occurred when sending #{data}. Comufy returned #{message}. Please get in touch with Comufy if you cannot resolve the problem."
|
419
457
|
}
|
420
458
|
end
|
421
459
|
else
|
422
|
-
@logger.debug(progname = 'Comufy::
|
460
|
+
@logger.debug(progname = 'Comufy::Connector.unregister_tag') {
|
423
461
|
"Authentication failed - data = #{data}."
|
424
462
|
}
|
425
|
-
@logger.warn(progname = 'Comufy::
|
463
|
+
@logger.warn(progname = 'Comufy::Connector.unregister_tag') {
|
426
464
|
"Authentication failed when sending #{data}. Please get in touch with Comufy if you cannot resolve the problem."
|
427
465
|
}
|
428
466
|
end
|
@@ -458,25 +496,25 @@ module Comufy
|
|
458
496
|
def send_facebook_message app_name, description, content, uids, opts = {}
|
459
497
|
return false unless get_access_token
|
460
498
|
if app_name.nil? or app_name.empty? or not content.is_a?(String)
|
461
|
-
@logger.warn(progname = 'Comufy::
|
499
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
462
500
|
'First parameter must be set to your application name, as a String.'
|
463
501
|
}
|
464
502
|
return false
|
465
503
|
end
|
466
504
|
if description.nil? or description.empty? or not content.is_a?(String)
|
467
|
-
@logger.warn(progname = 'Comufy::
|
505
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
468
506
|
'Second parameter must be set to your facebook description, as a String.'
|
469
507
|
}
|
470
508
|
return false
|
471
509
|
end
|
472
510
|
if content.nil? or content.empty? or not content.is_a?(String)
|
473
|
-
@logger.warn(progname = 'Comufy::
|
511
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
474
512
|
'Third parameter must be sent to your facebook content, as a String.'
|
475
513
|
}
|
476
514
|
return false
|
477
515
|
end
|
478
516
|
if uids.nil? or uids.empty? or not uids.is_a?(Array)
|
479
|
-
@logger.warn(progname = 'Comufy::
|
517
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
480
518
|
'Fourth parameter must be sent to your facebook uids, as an Array of Strings.'
|
481
519
|
}
|
482
520
|
return false
|
@@ -487,25 +525,25 @@ module Comufy
|
|
487
525
|
|
488
526
|
# optional checks
|
489
527
|
if opts.has_key?(:filter) and not opts[:filter].is_a?(String)
|
490
|
-
@logger.warn(progname = 'Comufy::
|
528
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
491
529
|
'When including "filter", it must be a String.'
|
492
530
|
}
|
493
531
|
return false
|
494
532
|
end
|
495
533
|
if opts.has_key?(:delivery_time) and not opts[:delivery_time].is_a?(Integer)
|
496
|
-
@logger.warn(progname = 'Comufy::
|
534
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
497
535
|
'When including "delivery_time", it must be an Integer, of unix time in milliseconds.'
|
498
536
|
}
|
499
537
|
return false
|
500
538
|
end
|
501
539
|
if opts.has_key?(:shorten_urls) and not %w[ true, false ].include?(opts[:shorten_urls])
|
502
|
-
@logger.warn(progname = 'Comufy::
|
540
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
503
541
|
'When including "shorten_urls", it must be an boolean value.'
|
504
542
|
}
|
505
543
|
return false
|
506
544
|
end
|
507
545
|
if opts.has_key?(:message_options) and not opts[:message_options].is_a?(Hash)
|
508
|
-
@logger.warn(progname = 'Comufy::
|
546
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
509
547
|
'When including "message_options", it must be a Hash.'
|
510
548
|
}
|
511
549
|
return false
|
@@ -543,83 +581,86 @@ module Comufy
|
|
543
581
|
if message
|
544
582
|
case message['cd']
|
545
583
|
when 383 then
|
584
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
585
|
+
"383 - Success! - data = #{data} - message = #{message}."
|
586
|
+
}
|
546
587
|
return true
|
547
588
|
when 416 then
|
548
|
-
@logger.debug(progname = 'Comufy::
|
589
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
549
590
|
"416 - _ERROR_MSG_SEND_FAILED - data = #{data} - message = #{message}."
|
550
591
|
}
|
551
|
-
@logger.warn(progname = 'Comufy::
|
592
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
552
593
|
'416 - _ERROR_MSG_SEND_FAILED'
|
553
594
|
}
|
554
595
|
when 475 then
|
555
|
-
@logger.debug(progname = 'Comufy::
|
596
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
556
597
|
"475 - Invalid parameters provided - data = #{data} - message = #{message}."
|
557
598
|
}
|
558
|
-
@logger.warn(progname = 'Comufy::
|
599
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
559
600
|
'475 - Invalid parameters provided'
|
560
601
|
}
|
561
602
|
when 551 then
|
562
|
-
@logger.debug(progname = 'Comufy::
|
603
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
563
604
|
"551 _ERROR_TAG_VALUE_NOT_FOUND - data = #{data} - message = #{message}."
|
564
605
|
}
|
565
|
-
@logger.warn(progname = 'Comufy::
|
606
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
566
607
|
'551 - _ERROR_TAG_VALUE_NOT_FOUND'
|
567
608
|
}
|
568
609
|
when 603 then
|
569
|
-
@logger.debug(progname = 'Comufy::
|
610
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
570
611
|
"603 - _ERROR_DOMAIN_APPLICATION_NAME_NOT_FOUND - data = #{data} - message = #{message}."
|
571
612
|
}
|
572
|
-
@logger.warn(progname = 'Comufy::
|
613
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
573
614
|
'603 - _ERROR_DOMAIN_APPLICATION_NAME_NOT_FOUND'
|
574
615
|
}
|
575
616
|
when 607 then
|
576
|
-
@logger.debug(progname = 'Comufy::
|
617
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
577
618
|
"607 - _ERROR_UNAUTHORISED_ACTION - data = #{data} - message = #{message}."
|
578
619
|
}
|
579
|
-
@logger.warn(progname = 'Comufy::
|
620
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
580
621
|
'607 - _ERROR_UNAUTHORISED_ACTION'
|
581
622
|
}
|
582
623
|
when 617 then
|
583
|
-
@logger.debug(progname = 'Comufy::
|
624
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
584
625
|
"617 - _ERROR_DOMAIN_APPLICATION_TAG_NOT_FOUND - data = #{data} - message = #{message}."
|
585
626
|
}
|
586
|
-
@logger.warn(progname = 'Comufy::
|
627
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
587
628
|
'617 - _ERROR_DOMAIN_APPLICATION_TAG_NOT_FOUND'
|
588
629
|
}
|
589
630
|
when 648 then
|
590
|
-
@logger.debug(progname = 'Comufy::
|
631
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
591
632
|
"648 - _ERROR_FACEBOOK_APPLICATION_USER_NOT_FOUND - data = #{data} - message = #{message}."
|
592
633
|
}
|
593
|
-
@logger.warn(progname = 'Comufy::
|
634
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
594
635
|
'648 - _ERROR_FACEBOOK_APPLICATION_USER_NOT_FOUND'
|
595
636
|
}
|
596
637
|
when 673 then
|
597
|
-
@logger.debug(progname = 'Comufy::
|
638
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
598
639
|
"673 - Invalid time exception - data = #{data} - message = #{message}."
|
599
640
|
}
|
600
|
-
@logger.warn(progname = 'Comufy::
|
641
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
601
642
|
'673 - Invalid time exception'
|
602
643
|
}
|
603
644
|
when 679 then
|
604
|
-
@logger.debug(progname = 'Comufy::
|
645
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
605
646
|
"679 - _ERROR_MALFORMED_TARGETING_EXPRESSION - data = #{data} - message = #{message}."
|
606
647
|
}
|
607
|
-
@logger.warn(progname = 'Comufy::
|
648
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
608
649
|
'679 - _ERROR_MALFORMED_TARGETING_EXPRESSION'
|
609
650
|
}
|
610
651
|
else
|
611
|
-
@logger.debug(progname = 'Comufy::
|
652
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
612
653
|
"UNKNOWN RESPONSE - data = #{data} - message = #{message}."
|
613
654
|
}
|
614
|
-
@logger.warn(progname = 'Comufy::
|
655
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
615
656
|
"An error occurred when sending #{data}. Comufy returned #{message}. Please get in touch with Comufy if you cannot resolve the problem."
|
616
657
|
}
|
617
658
|
end
|
618
659
|
else
|
619
|
-
@logger.debug(progname = 'Comufy::
|
660
|
+
@logger.debug(progname = 'Comufy::Connector.send_facebook_message') {
|
620
661
|
"Authentication failed - data = #{data}."
|
621
662
|
}
|
622
|
-
@logger.warn(progname = 'Comufy::
|
663
|
+
@logger.warn(progname = 'Comufy::Connector.send_facebook_message') {
|
623
664
|
"Authentication failed when sending #{data}. Please get in touch with Comufy if you cannot resolve the problem."
|
624
665
|
}
|
625
666
|
end
|
@@ -628,61 +669,64 @@ module Comufy
|
|
628
669
|
|
629
670
|
private
|
630
671
|
|
631
|
-
# Use the configured
|
632
|
-
# it means the user likely has their
|
672
|
+
# Use the configured user name and password to get and set the access token and expiry time, if it fails,
|
673
|
+
# it means the user likely has their user name/password wrong.
|
633
674
|
def authenticate
|
634
675
|
data = {
|
635
676
|
cd: 131,
|
636
|
-
user: @config.
|
677
|
+
user: @config.user,
|
637
678
|
password: @config.password
|
638
679
|
}
|
639
680
|
|
640
681
|
message = call_api(data, false)
|
641
682
|
case message['cd']
|
642
683
|
when 235 then
|
684
|
+
@logger.debug(progname = 'Comufy::Connector.authenticate') {
|
685
|
+
"235 - Success! - data = #{data} - message = #{message}."
|
686
|
+
}
|
643
687
|
@config.access_token = message['tokenInfo']['token']
|
644
688
|
@config.expiry_time = message['tokenInfo']['expiryTime']
|
645
689
|
return true
|
646
690
|
when 475 then
|
647
|
-
@logger.debug(progname = 'Comufy::
|
691
|
+
@logger.debug(progname = 'Comufy::Connector.authenticate') {
|
648
692
|
"475 - Invalid parameters provided. - data = #{data} - message = #{message}."
|
649
693
|
}
|
650
|
-
@logger.warn(progname = 'Comufy::
|
694
|
+
@logger.warn(progname = 'Comufy::Connector.authenticate') {
|
651
695
|
'475 - Invalid parameters provided.'
|
652
696
|
}
|
653
697
|
when 504 then
|
654
|
-
@logger.debug(progname = 'Comufy::
|
698
|
+
@logger.debug(progname = 'Comufy::Connector.authenticate') {
|
655
699
|
"504 - FIX. - data = #{data} - message = #{message}."
|
656
700
|
}
|
657
|
-
@logger.warn(progname = 'Comufy::
|
701
|
+
@logger.warn(progname = 'Comufy::Connector.authenticate') {
|
658
702
|
'504 - FIX.'
|
659
703
|
}
|
660
704
|
when 651 then
|
661
|
-
@logger.debug(progname = 'Comufy::
|
662
|
-
"651 - Invalid
|
705
|
+
@logger.debug(progname = 'Comufy::Connector.authenticate') {
|
706
|
+
"651 - Invalid user name exception. Check that you are login in using the format user@domain. - data = #{data} - message = #{message}."
|
663
707
|
}
|
664
|
-
@logger.warn(progname = 'Comufy::
|
665
|
-
'651 - Invalid
|
708
|
+
@logger.warn(progname = 'Comufy::Connector.authenticate') {
|
709
|
+
'651 - Invalid user name exception. Check that you are login in using the format user@domain.'
|
666
710
|
}
|
667
711
|
when 652 then
|
668
|
-
@logger.debug(progname = 'Comufy::
|
712
|
+
@logger.debug(progname = 'Comufy::Connector.authenticate') {
|
669
713
|
"652 - Invalid password exception. - data = #{data} - message = #{message}."
|
670
714
|
}
|
671
|
-
@logger.warn(progname = 'Comufy::
|
715
|
+
@logger.warn(progname = 'Comufy::Connector.authenticate') {
|
672
716
|
'652 - Invalid password exception.'
|
673
717
|
}
|
674
718
|
when 682 then
|
675
|
-
@logger.debug(progname = 'Comufy::
|
719
|
+
@logger.debug(progname = 'Comufy::Connector.authenticate') {
|
676
720
|
"682 - This user is blocked. - data = #{data} - message = #{message}."
|
677
721
|
}
|
678
|
-
@logger.warn(progname = 'Comufy::
|
722
|
+
@logger.warn(progname = 'Comufy::Connector.authenticate') {
|
679
723
|
'682 - This user is blocked.'
|
680
724
|
}
|
681
725
|
else
|
682
|
-
@logger.debug(progname = 'Comufy::
|
726
|
+
@logger.debug(progname = 'Comufy::Connector.authenticate') {
|
683
727
|
"UNKNOWN RESPONSE - data = #{data} - message = #{message}."
|
684
728
|
}
|
685
|
-
@logger.warn(progname = 'Comufy::
|
729
|
+
@logger.warn(progname = 'Comufy::Connector.authenticate') {
|
686
730
|
"An error occurred when sending #{data}. Comufy returned #{message}. Please get in touch with Comufy if you cannot resolve the problem."
|
687
731
|
}
|
688
732
|
end
|
@@ -701,12 +745,13 @@ module Comufy
|
|
701
745
|
return nil if not get_access_token
|
702
746
|
data[:token] = @config.access_token
|
703
747
|
end
|
704
|
-
|
705
|
-
|
706
|
-
http = Net::HTTP.new(
|
707
|
-
req = Net::HTTP::Get.new(url.to_s)
|
748
|
+
|
749
|
+
uri = URI.parse(@config::base_api_url)
|
750
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
708
751
|
http.use_ssl = true
|
709
|
-
|
752
|
+
request = Net::HTTP::Post.new(uri.path, initheader = { 'Content-Type' => 'application/json' })
|
753
|
+
request.set_form_data({ request: data.to_json })
|
754
|
+
response = http.request(request)
|
710
755
|
JSON.parse(response.read_body) if response.message == 'OK'
|
711
756
|
end
|
712
757
|
|
data/lib/comufy/version.rb
CHANGED
data/lib/comufy.rb
CHANGED
@@ -11,22 +11,13 @@ require 'logger'
|
|
11
11
|
|
12
12
|
module Comufy
|
13
13
|
|
14
|
-
def self.
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.new_connector params = {}
|
19
|
-
@connector = Connector.new(params)
|
20
|
-
end
|
21
|
-
|
22
|
-
def version
|
23
|
-
Comufy::VERSION
|
14
|
+
def self.connect params = {}
|
15
|
+
Connector.new(params)
|
24
16
|
end
|
25
17
|
|
26
18
|
# Based on Rails implementation, ensures all strings are converted
|
27
19
|
# into symbols.
|
28
20
|
def symbolize_keys hash
|
29
|
-
return hash unless hash.is_a?(Hash)
|
30
21
|
hash.each_with_object({}){|(k,v), h| h[k.to_sym] = v}
|
31
22
|
end
|
32
23
|
end
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comufy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2.pre2
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- plcstevens
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &21817520 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '2.5'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *21817520
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &21816920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,8 +32,8 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
-
description:
|
35
|
+
version_requirements: *21816920
|
36
|
+
description: This library can be used with Heroku
|
37
37
|
email:
|
38
38
|
- philip@tauri-tec.com
|
39
39
|
executables: []
|
@@ -45,6 +45,7 @@ files:
|
|
45
45
|
- README.md
|
46
46
|
- Rakefile
|
47
47
|
- comufyruby.gemspec
|
48
|
+
- example/comufy_example.rb
|
48
49
|
- lib/comufy.rb
|
49
50
|
- lib/comufy/config.rb
|
50
51
|
- lib/comufy/connector.rb
|
@@ -74,7 +75,8 @@ rubyforge_project:
|
|
74
75
|
rubygems_version: 1.8.11
|
75
76
|
signing_key:
|
76
77
|
specification_version: 3
|
77
|
-
summary:
|
78
|
+
summary: This library allows customers to interact with the Comufy backend and perform
|
79
|
+
common operations.
|
78
80
|
test_files:
|
79
81
|
- spec/comufy_spec.rb
|
80
82
|
- spec/spec_helper.rb
|