comufy 0.0.2b → 0.0.2.pre2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|