connfu-client 0.1.2 → 0.1.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.
- data/README.rdoc +1 -1
- data/examples/provisioning/voice/dtmf/create.rb +28 -0
- data/examples/provisioning/voice/dtmf/delete.rb +32 -0
- data/examples/provisioning/voice/dtmf/get.rb +38 -0
- data/lib/connfu/provisioning/application.rb +43 -10
- data/lib/connfu/provisioning/base.rb +0 -4
- data/lib/connfu/provisioning/channel.rb +6 -7
- data/lib/connfu/provisioning/dtmf.rb +55 -0
- data/lib/connfu/provisioning/rss.rb +2 -2
- data/lib/connfu/provisioning/twitter.rb +2 -2
- data/lib/connfu/provisioning/voice.rb +3 -4
- data/lib/connfu/provisioning/whitelist.rb +0 -4
- data/lib/connfu/provisioning/whitelist_user.rb +18 -0
- data/lib/connfu/provisioning.rb +3 -0
- data/lib/connfu/version.rb +1 -1
- data/spec/provisioning/channel_shared_examples.rb +2 -2
- data/spec/provisioning/voice_spec.rb +7 -7
- data/spec/provisioning_spec.rb +45 -38
- metadata +35 -30
data/README.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
== Welcome to connfu-client {<img src="
|
1
|
+
== Welcome to connfu-client {<img src="https://secure.travis-ci.org/bluevialabs/connfu-client.png" />}[http://travis-ci.org/bluevialabs/connfu-client]
|
2
2
|
|
3
3
|
connFu gem provides an easy way to get access to connFu platform using the defined DSL and the provisioning API.
|
4
4
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'lib')
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..')
|
4
|
+
|
5
|
+
require 'connfu'
|
6
|
+
|
7
|
+
require 'examples/provisioning/setup'
|
8
|
+
|
9
|
+
ARGV.length < 4 and
|
10
|
+
(
|
11
|
+
puts "Please include as argument the api_key, the channel name, the tone and the message to be used"
|
12
|
+
exit
|
13
|
+
)
|
14
|
+
|
15
|
+
api_key = ARGV.shift
|
16
|
+
channel_name = ARGV.shift
|
17
|
+
tone = ARGV.shift
|
18
|
+
message = ARGV.shift
|
19
|
+
|
20
|
+
application = Connfu::Provisioning::Application.new(api_key, CONNFU_ENDPOINT)
|
21
|
+
|
22
|
+
begin
|
23
|
+
puts application.add_dtmf(channel_name, tone, message)
|
24
|
+
rescue Exception => ex
|
25
|
+
puts "There was an error: #{ex.inspect}"
|
26
|
+
puts "Exception message: #{ex.message}"
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'lib')
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..')
|
4
|
+
|
5
|
+
require 'connfu'
|
6
|
+
|
7
|
+
require 'examples/provisioning/setup'
|
8
|
+
|
9
|
+
ARGV.length < 2 and
|
10
|
+
(
|
11
|
+
puts "Please include as argument the api_key, the channel and the dtmf (optional) to be deleted"
|
12
|
+
exit
|
13
|
+
)
|
14
|
+
|
15
|
+
api_key = ARGV.shift
|
16
|
+
channel = ARGV.shift
|
17
|
+
dtmf = if ARGV.length < 1
|
18
|
+
""
|
19
|
+
else
|
20
|
+
ARGV.shift
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
application = Connfu::Provisioning::Application.new(api_key, CONNFU_ENDPOINT)
|
25
|
+
|
26
|
+
begin
|
27
|
+
puts application.delete_dtmf(channel, dtmf)
|
28
|
+
rescue Exception => ex
|
29
|
+
puts "There was an error:"
|
30
|
+
puts "Exception message: #{ex.message}"
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'lib')
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..')
|
4
|
+
|
5
|
+
require 'connfu'
|
6
|
+
|
7
|
+
require 'examples/provisioning/setup'
|
8
|
+
|
9
|
+
ARGV.length < 2 and
|
10
|
+
(
|
11
|
+
puts "Please include as argument the api_key, the channel and optionally the dtmf tone"
|
12
|
+
exit
|
13
|
+
)
|
14
|
+
|
15
|
+
api_key = ARGV.shift
|
16
|
+
|
17
|
+
channel = ARGV.shift
|
18
|
+
|
19
|
+
dtmf = if ARGV.length < 1
|
20
|
+
""
|
21
|
+
else
|
22
|
+
ARGV.shift
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
Connfu.log_level = Logger::DEBUG
|
27
|
+
|
28
|
+
application = Connfu::Provisioning::Application.new(api_key, CONNFU_ENDPOINT)
|
29
|
+
|
30
|
+
|
31
|
+
begin
|
32
|
+
phones = application.get_dtmf(channel, dtmf)
|
33
|
+
p phones
|
34
|
+
rescue Exception => ex
|
35
|
+
puts "There was an error:"
|
36
|
+
puts "Exception message: #{ex.message}"
|
37
|
+
end
|
38
|
+
|
@@ -151,11 +151,12 @@ module Connfu
|
|
151
151
|
users = params[:origin]
|
152
152
|
end
|
153
153
|
|
154
|
-
@base.post("channels/twitter",
|
154
|
+
data = @base.post("channels/twitter",
|
155
155
|
{:uid => key,
|
156
156
|
:accounts => users.collect { |item| {:name => item} },
|
157
157
|
:filter => filter
|
158
158
|
})
|
159
|
+
Twitter.unmarshal(ActiveSupport::JSON.decode(data))
|
159
160
|
else
|
160
161
|
# retrieve users mentions
|
161
162
|
users = params[:mentions]
|
@@ -165,11 +166,12 @@ module Connfu
|
|
165
166
|
user_filter = filter.dup
|
166
167
|
user_filter << "recipients:#{user}"
|
167
168
|
|
168
|
-
|
169
|
+
data = @base.post("channels/twitter",
|
169
170
|
{:uid => key,
|
170
171
|
:accounts => [{:name => user}],
|
171
172
|
:filter => "(#{user_filter.join(' AND ')})"
|
172
173
|
})
|
174
|
+
locations << Twitter.unmarshal(ActiveSupport::JSON.decode(data))
|
173
175
|
}
|
174
176
|
locations
|
175
177
|
end
|
@@ -231,7 +233,7 @@ module Connfu
|
|
231
233
|
# * +country+ country to allocate a DID
|
232
234
|
#
|
233
235
|
def create_voice_channel(name, country, privacy = Voice::Privacy::WHITELIST)
|
234
|
-
@base.post("channels/voice", {:uid => name, :country => country, :privacy => privacy})
|
236
|
+
Voice.unmarshal(ActiveSupport::JSON.decode(@base.post("channels/voice", {:uid => name, :country => country, :privacy => privacy})))
|
235
237
|
end
|
236
238
|
|
237
239
|
##
|
@@ -272,6 +274,32 @@ module Connfu
|
|
272
274
|
@base.post("channels/voice/#{voice}/phones", {:country => country})
|
273
275
|
end
|
274
276
|
|
277
|
+
##
|
278
|
+
# Retrieve a voice channel dtmf tones, that's the list of actions associated to a IVR voice channel
|
279
|
+
# ==== Parameters
|
280
|
+
# * +voice+ Voice channel identifier
|
281
|
+
# * +dtmf+ (optional) specific Dtmf tone to retrieve. If it is not specified, all the list is fetched
|
282
|
+
def get_dtmf(voice, dtmf = "")
|
283
|
+
Dtmf.unmarshal(voice, ActiveSupport::JSON.decode(@base.get("channels/voice/#{voice}/dtmf/#{dtmf}")))
|
284
|
+
end
|
285
|
+
|
286
|
+
##
|
287
|
+
# Delete one dtmf action or the whole dtmf actions
|
288
|
+
# ==== Parameters
|
289
|
+
# * +voice+: Voice channel identifier
|
290
|
+
# * +dtmf+: specific dtmf tone to delete.
|
291
|
+
def delete_dtmf(voice, dtmf)
|
292
|
+
@base.delete("channels/voice/#{voice}/dtmf/#{dtmf}")
|
293
|
+
end
|
294
|
+
|
295
|
+
##
|
296
|
+
# Add a new dtmf action to the Voice channel
|
297
|
+
# ==== Parameters
|
298
|
+
# * +voice+: Voice channel identifier
|
299
|
+
# * +dtmf+: for the phone number to be allocated
|
300
|
+
def add_dtmf(voice, tone, message)
|
301
|
+
@base.post("channels/voice/#{voice}/dtmf", {:tone => tone, :message => message})
|
302
|
+
end
|
275
303
|
|
276
304
|
##
|
277
305
|
# Voice channel Whitelist management
|
@@ -296,22 +324,25 @@ module Connfu
|
|
296
324
|
@base.delete("channels/voice/#{voice}/whitelisted/#{number}")
|
297
325
|
end
|
298
326
|
|
299
|
-
|
327
|
+
##
|
300
328
|
# Create a new item in the whitelist
|
301
|
-
#
|
329
|
+
# ===== Parameters
|
330
|
+
# * *args:
|
302
331
|
# - First parameter: voice channel identifier
|
303
332
|
# - Second parameter can be either:
|
304
333
|
# - WhitelistUser object with the name and phone information
|
305
334
|
# - two arguments name, phone
|
306
335
|
#
|
336
|
+
# ==== Return
|
337
|
+
# * Whitelist object
|
307
338
|
def add_whitelist(*args)
|
308
|
-
|
339
|
+
voice_id = args[0]
|
309
340
|
if args.length.eql?(2)
|
310
|
-
@base.post("channels/voice/#{
|
341
|
+
whitelist = @base.post("channels/voice/#{voice_id}/whitelisted", {:name => args[1].name, :phone => args[1].phone})
|
311
342
|
else
|
312
|
-
@base.post("channels/voice/#{
|
343
|
+
whitelist = @base.post("channels/voice/#{voice_id}/whitelisted", {:name => args[1], :phone => args[2]})
|
313
344
|
end
|
314
|
-
|
345
|
+
WhitelistUser.unmarshal(ActiveSupport::JSON.decode(whitelist))
|
315
346
|
end
|
316
347
|
|
317
348
|
#
|
@@ -348,7 +379,9 @@ module Connfu
|
|
348
379
|
# @param uri RSS endpoint
|
349
380
|
#
|
350
381
|
def create_rss_channel(name, uri)
|
351
|
-
@base.post("channels/rss", {:uid => name, :uri => uri})
|
382
|
+
data = @base.post("channels/rss", {:uid => name, :uri => uri})
|
383
|
+
data = ActiveSupport::JSON.decode(data)
|
384
|
+
Rss.unmarshal(data)
|
352
385
|
end
|
353
386
|
|
354
387
|
#
|
@@ -41,10 +41,6 @@ module Connfu
|
|
41
41
|
RestClient.post("#{@endpoint}/#{path}", ActiveSupport::JSON.encode(body), headers) { |response, request, result|
|
42
42
|
case response.code
|
43
43
|
when 200..201
|
44
|
-
# If there is a :location header, return it
|
45
|
-
if response.headers.has_key?(:location)
|
46
|
-
return response.headers[:location]
|
47
|
-
end
|
48
44
|
# else, do the normal stuff
|
49
45
|
if block_given?
|
50
46
|
response.return!(request, result, &Proc.new)
|
@@ -17,12 +17,12 @@ module Connfu
|
|
17
17
|
attr_accessor :uid
|
18
18
|
|
19
19
|
# channel type
|
20
|
-
attr_accessor :
|
20
|
+
attr_accessor :channel_type
|
21
21
|
|
22
22
|
# Creates a Channel instance using a Hash values
|
23
23
|
# It creates an instance variable per each hash key
|
24
24
|
def initialize(params)
|
25
|
-
self.
|
25
|
+
self.channel_type = self.class.to_s.downcase
|
26
26
|
params.each_pair { |key, value|
|
27
27
|
self.instance_variable_set("@#{key}", value)
|
28
28
|
}
|
@@ -52,14 +52,13 @@ module Connfu
|
|
52
52
|
#
|
53
53
|
# * +data+ - hash containing channel information retrieved using the connFu API
|
54
54
|
def unmarshal(data)
|
55
|
-
|
56
|
-
# Helper to get the channel class using the type attribute (we are
|
55
|
+
# Helper to get the channel class using the channel_type attribute (we are
|
57
56
|
# retrieving all the channels) or the client class (we are retrieving
|
58
57
|
# specific a channel type)
|
59
58
|
create_channel = lambda { |channel|
|
60
|
-
if channel.has_key?("type") # get the class from type attribute (get all channels)
|
61
|
-
|
62
|
-
Connfu::Provisioning.const_get(
|
59
|
+
if channel.has_key?("type") && ListenerChannel::CHANNEL_TYPES.include?(channel["type"].to_sym) # get the class from type attribute (get all channels)
|
60
|
+
channel_type = channel["type"].capitalize
|
61
|
+
Connfu::Provisioning.const_get(channel_type).new(channel)
|
63
62
|
else # get the class from class
|
64
63
|
self.new(channel)
|
65
64
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Connfu
|
2
|
+
|
3
|
+
module Provisioning
|
4
|
+
|
5
|
+
#
|
6
|
+
# connFu Dtmf press key (belongs to a Voice channel)
|
7
|
+
#
|
8
|
+
class Dtmf
|
9
|
+
|
10
|
+
# tone
|
11
|
+
attr_accessor :tone
|
12
|
+
|
13
|
+
# message
|
14
|
+
attr_accessor :message
|
15
|
+
|
16
|
+
# voice channel unique identifier
|
17
|
+
attr_reader :voice
|
18
|
+
|
19
|
+
# @param voice voice channel identifier
|
20
|
+
# @param tone
|
21
|
+
# @param message
|
22
|
+
def initialize(voice, tone, message = "")
|
23
|
+
@voice = voice
|
24
|
+
@tone = tone
|
25
|
+
@message = message
|
26
|
+
end
|
27
|
+
|
28
|
+
# Hash way to retrieve attributes
|
29
|
+
def [](value)
|
30
|
+
self.respond_to?(value.to_sym) ? self.send(value.to_sym) : nil
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_hash
|
34
|
+
{"tone" => tone, "message" => message}
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_s
|
38
|
+
"#{self.class.to_s}: #{to_hash}"
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Creates a Dtmf object using the raw data from the provisioning API
|
43
|
+
# @param voice channel unique identifier
|
44
|
+
# @param data Hash containing the raw data
|
45
|
+
def self.unmarshal(voice, data)
|
46
|
+
if data.is_a?(Array)
|
47
|
+
data.map{|item| Dtmf.new(voice, item["tone"], item["message"])}
|
48
|
+
else
|
49
|
+
Dtmf.new(voice, data["tone"], data["message"])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -9,11 +9,11 @@ module Connfu
|
|
9
9
|
|
10
10
|
def initialize(params)
|
11
11
|
super(params)
|
12
|
-
self.
|
12
|
+
self.channel_type = "rss"
|
13
13
|
end
|
14
14
|
|
15
15
|
def to_hash
|
16
|
-
{"uid" => uid, "
|
16
|
+
{"uid" => uid, "channel_type" => channel_type, "uri" => uri}
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
@@ -15,12 +15,12 @@ module Connfu
|
|
15
15
|
|
16
16
|
def initialize(params)
|
17
17
|
super(params)
|
18
|
-
self.
|
18
|
+
self.channel_type = "twitter"
|
19
19
|
end
|
20
20
|
|
21
21
|
# Creates a hash with the Twitter instance info
|
22
22
|
def to_hash
|
23
|
-
{"uid" => uid, "
|
23
|
+
{"uid" => uid, "channel_type" => channel_type, "accounts" => accounts, "filter" => filter}
|
24
24
|
end
|
25
25
|
|
26
26
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'connfu/provisioning/whitelist'
|
2
1
|
|
3
2
|
module Connfu
|
4
3
|
|
@@ -15,7 +14,7 @@ module Connfu
|
|
15
14
|
end
|
16
15
|
|
17
16
|
# Voice channel attributes that could be updated
|
18
|
-
UPDATE_ATTRIBUTES = ["topic", "welcome_message", "rejected_message", "privacy"]
|
17
|
+
UPDATE_ATTRIBUTES = ["topic", "welcome_message", "rejected_message", "privacy", "type"]
|
19
18
|
|
20
19
|
_values = UPDATE_ATTRIBUTES.dup
|
21
20
|
_values.each { |value|
|
@@ -39,11 +38,11 @@ module Connfu
|
|
39
38
|
|
40
39
|
def initialize(params)
|
41
40
|
super(params)
|
42
|
-
self.
|
41
|
+
self.channel_type = "voice"
|
43
42
|
end
|
44
43
|
|
45
44
|
def to_hash
|
46
|
-
{"uid" => uid, "
|
45
|
+
{"uid" => uid, "channel_type" => channel_type, "phones" => phones.map(&:to_hash)}
|
47
46
|
end
|
48
47
|
|
49
48
|
# access the Voice channel Whitelist
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Connfu
|
2
|
+
module Provisioning
|
3
|
+
##
|
4
|
+
# This class defines a whitelist user (whitelist item)
|
5
|
+
class WhitelistUser < Struct.new(:name, :phone)
|
6
|
+
|
7
|
+
##
|
8
|
+
# Creates a WhitelistUser object using the raw data from the provisioning API
|
9
|
+
# ==== Parameters
|
10
|
+
# * +data+ raw data retrieved using the connFu API
|
11
|
+
def self.unmarshal(data)
|
12
|
+
WhitelistUser.new(*data.values)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/connfu/provisioning.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'connfu/provisioning/application'
|
2
2
|
require 'connfu/provisioning/base'
|
3
3
|
require 'connfu/provisioning/channel'
|
4
|
+
require 'connfu/provisioning/dtmf'
|
4
5
|
require 'connfu/provisioning/phone'
|
5
6
|
require 'connfu/provisioning/rss'
|
6
7
|
require 'connfu/provisioning/twitter'
|
7
8
|
require 'connfu/provisioning/voice'
|
9
|
+
require 'connfu/provisioning/whitelist'
|
10
|
+
require 'connfu/provisioning/whitelist_user'
|
8
11
|
|
9
12
|
module Connfu
|
10
13
|
module Provisioning
|
data/lib/connfu/version.rb
CHANGED
@@ -12,7 +12,7 @@ def channel_attrs
|
|
12
12
|
end
|
13
13
|
|
14
14
|
|
15
|
-
shared_examples_for "Channel" do |channel,
|
15
|
+
shared_examples_for "Channel" do |channel, channel_type|
|
16
16
|
|
17
17
|
|
18
18
|
RSpec::Matchers.define :have_defined_channel_attributes do |expected|
|
@@ -20,7 +20,7 @@ shared_examples_for "Channel" do |channel, type|
|
|
20
20
|
channel_attrs.keys.each { |attribute|
|
21
21
|
channel.send(attribute).should eql(expected[attribute])
|
22
22
|
}
|
23
|
-
channel.
|
23
|
+
channel.channel_type.should be_instance_of(String)
|
24
24
|
channel.uid.should be_instance_of(String)
|
25
25
|
end
|
26
26
|
end
|
@@ -26,7 +26,7 @@ describe Connfu::Provisioning::Voice do
|
|
26
26
|
[:uid, :topic, :welcome_message, :rejected_message].each { |attribute|
|
27
27
|
voice.send(attribute).should eql(expected[attribute])
|
28
28
|
}
|
29
|
-
voice.
|
29
|
+
voice.channel_type.should eql("voice")
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -82,12 +82,12 @@ describe Connfu::Provisioning::Voice do
|
|
82
82
|
match do |actual| # actual should be the Connfu::Provisioning::Voice instance
|
83
83
|
actual.should be_instance_of(Hash)
|
84
84
|
|
85
|
-
["uid", "
|
85
|
+
["uid", "channel_type", "phones"].each{|key|
|
86
86
|
actual.should have_key(key)
|
87
87
|
}
|
88
88
|
|
89
89
|
actual["uid"].should eql(uid)
|
90
|
-
actual["
|
90
|
+
actual["channel_type"].should eql("voice")
|
91
91
|
|
92
92
|
actual["phones"].should be_instance_of(Array)
|
93
93
|
actual["phones"].length.should eql(phones.length)
|
@@ -103,25 +103,25 @@ describe Connfu::Provisioning::Voice do
|
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
-
it "should retrieved uid,
|
106
|
+
it "should retrieved uid, channel_type and phones attributes (empty phones)" do
|
107
107
|
voice = Connfu::Provisioning::Voice.new(voice_attrs)
|
108
108
|
voice.to_hash.should have_voice_details(VOICE_KEY, [])
|
109
109
|
end
|
110
110
|
|
111
|
-
it "should retrieved uid,
|
111
|
+
it "should retrieved uid, channel_type and phones attributes (phones with elements)" do
|
112
112
|
voice = Connfu::Provisioning::Voice.new(voice_attrs)
|
113
113
|
voice << phone
|
114
114
|
voice.to_hash.should have_voice_details(VOICE_KEY, [phone])
|
115
115
|
end
|
116
116
|
|
117
|
-
it "should retrieved uid,
|
117
|
+
it "should retrieved uid, channel_type and phones attributes (phones two elements)" do
|
118
118
|
voice = Connfu::Provisioning::Voice.new(voice_attrs)
|
119
119
|
voice << phone
|
120
120
|
voice << phone
|
121
121
|
voice.to_hash.should have_voice_details(VOICE_KEY, [phone, phone])
|
122
122
|
end
|
123
123
|
|
124
|
-
it "should retrieved uid,
|
124
|
+
it "should retrieved uid, channel_type and phones attributes (phones hundred elements)" do
|
125
125
|
voice = Connfu::Provisioning::Voice.new(voice_attrs)
|
126
126
|
data = []
|
127
127
|
100.times do
|
data/spec/provisioning_spec.rb
CHANGED
@@ -18,11 +18,11 @@ describe Connfu::Provisioning do
|
|
18
18
|
RSpec::Matchers.define :be_well_defined_as_voice do |uid, phones|
|
19
19
|
match do |actual| # actual should be the Connfu::Provisioning::Voice instance
|
20
20
|
actual.should be_instance_of(Connfu::Provisioning::Voice)
|
21
|
-
["uid", "
|
21
|
+
["uid", "channel_type", "phones"].each { |key|
|
22
22
|
actual.to_hash.should have_key(key)
|
23
23
|
}
|
24
24
|
actual.uid.should eql(uid)
|
25
|
-
actual.
|
25
|
+
actual.channel_type.should eql("voice")
|
26
26
|
|
27
27
|
actual.should respond_to("topic")
|
28
28
|
actual.should respond_to("welcome_message")
|
@@ -46,12 +46,12 @@ describe Connfu::Provisioning do
|
|
46
46
|
RSpec::Matchers.define :be_well_defined_as_twitter do |uid, twitter_accounts|
|
47
47
|
match do |actual| # actual should be the Connfu::Provisioning::Twitter instance
|
48
48
|
actual.should be_instance_of(Connfu::Provisioning::Twitter)
|
49
|
-
["uid", "
|
49
|
+
["uid", "channel_type", "accounts"].each { |key|
|
50
50
|
actual.to_hash.should have_key(key)
|
51
51
|
}
|
52
52
|
|
53
53
|
actual.uid.should eql(uid)
|
54
|
-
actual.
|
54
|
+
actual.channel_type.should eql("twitter")
|
55
55
|
|
56
56
|
actual.accounts.should be_instance_of(Array)
|
57
57
|
actual.accounts.length.should eql(twitter_accounts.length)
|
@@ -85,56 +85,57 @@ describe Connfu::Provisioning do
|
|
85
85
|
it "should create a Twitter channel application with one origin speficied as array" do
|
86
86
|
stub_request(:post, "#{ENDPOINT}/channels/twitter").
|
87
87
|
with(:body => create_twitter_channel_request(["juan"]), :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
88
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
88
|
+
to_return(:status => 201, :body => "{'accounts':[{'name':'juan'}],'created_at':'2011-09-06T05:33:39+00:00','filter':'','uid':'#{TWITTER_KEY}','updated_at':'2011-09-06T05:33:39+00:00'}", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
89
89
|
|
90
90
|
response = @application.create_twitter_channel(TWITTER_KEY, ["juan"])
|
91
|
-
response.should
|
91
|
+
response.should be_well_defined_as_twitter(TWITTER_KEY, ['juan'])
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should create a Twitter channel application with one origins speficied as hash (string)" do
|
95
95
|
stub_request(:post, "#{ENDPOINT}/channels/twitter").
|
96
96
|
with(:body => create_twitter_channel_request(["juan"]), :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
97
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
97
|
+
to_return(:status => 201, :body => "{'accounts':[{'name':'juan'}],'created_at':'2011-09-06T05:33:39+00:00','filter':'','uid':'#{TWITTER_KEY}','updated_at':'2011-09-06T05:33:39+00:00'}", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
98
98
|
|
99
99
|
response = @application.create_twitter_channel(TWITTER_KEY, {:origin => "juan"})
|
100
|
-
response.should
|
100
|
+
response.should be_well_defined_as_twitter(TWITTER_KEY, ['juan'])
|
101
101
|
end
|
102
102
|
|
103
103
|
it "should create a Twitter channel application with one origins speficied as hash (array)" do
|
104
104
|
stub_request(:post, "#{ENDPOINT}/channels/twitter").
|
105
105
|
with(:body => create_twitter_channel_request(["juan"]), :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
106
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
106
|
+
to_return(:status => 201, :body => "{'accounts':[{'name':'juan'}],'created_at':'2011-09-06T05:33:39+00:00','filter':'','uid':'#{TWITTER_KEY}','updated_at':'2011-09-06T05:33:39+00:00'}", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
107
107
|
|
108
108
|
response = @application.create_twitter_channel(TWITTER_KEY, {:origin => ["juan"]})
|
109
|
-
response.should
|
109
|
+
response.should be_well_defined_as_twitter(TWITTER_KEY, ['juan'])
|
110
110
|
end
|
111
111
|
|
112
112
|
it "should create a Twitter channel application with two origins speficied as Hash" do
|
113
113
|
stub_request(:post, "#{ENDPOINT}/channels/twitter").
|
114
114
|
with(:body => create_twitter_channel_request(["juan", "connfu"]), :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
115
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
115
|
+
to_return(:status => 201, :body => "{'accounts':[{'name':'juan'},{'name':'connfu'}],'created_at':'2011-09-06T05:33:39+00:00','filter':'','uid':'#{TWITTER_KEY}','updated_at':'2011-09-06T05:33:39+00:00'}", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
116
116
|
|
117
117
|
response = @application.create_twitter_channel(TWITTER_KEY, {:origin => ["juan", "connfu"]})
|
118
|
-
response.should
|
118
|
+
response.should be_well_defined_as_twitter(TWITTER_KEY, ['juan', 'connfu'])
|
119
119
|
end
|
120
120
|
|
121
121
|
it "should create a Twitter channel application with two origins speficied as Array" do
|
122
122
|
stub_request(:post, "#{ENDPOINT}/channels/twitter").
|
123
123
|
with(:body => create_twitter_channel_request(["juan", "connfu"]), :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
124
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
124
|
+
to_return(:status => 201, :body => "{'accounts':[{'name':'juan'},{'name':'connfu'}],'created_at':'2011-09-06T05:33:39+00:00','filter':'','uid':'#{TWITTER_KEY}','updated_at':'2011-09-06T05:33:39+00:00'}", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
125
125
|
|
126
126
|
response = @application.create_twitter_channel(TWITTER_KEY, ["juan", "connfu"])
|
127
|
-
response.should
|
127
|
+
response.should be_well_defined_as_twitter(TWITTER_KEY, ['juan', 'connfu'])
|
128
128
|
end
|
129
129
|
|
130
130
|
it "should create a Twitter channel application with one mention" do
|
131
131
|
stub_request(:post, "#{ENDPOINT}/channels/twitter").
|
132
132
|
with(:body => create_twitter_channel_request(["juan"], TWITTER_KEY, "(recipients:juan)"), :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
133
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
133
|
+
to_return(:status => 201, :body => "{'accounts':[{'name':'juan'}],'created_at':'2011-09-06T05:33:39+00:00','filter':'','uid':'#{TWITTER_KEY}','updated_at':'2011-09-06T05:33:39+00:00'}", :headers => {:location => "#{ENDPOINT}/channels/twitter/#{TWITTER_KEY}"})
|
134
134
|
|
135
135
|
response = @application.create_twitter_channel(TWITTER_KEY, {:mentions => ["juan"]})
|
136
|
-
response.should
|
137
|
-
response
|
136
|
+
response.should be_instance_of(Array)
|
137
|
+
response.length.should be(1)
|
138
|
+
response[0].should be_well_defined_as_twitter(TWITTER_KEY, ["juan"])
|
138
139
|
end
|
139
140
|
|
140
141
|
it "should retrieve a channel information when the channel exists" do
|
@@ -180,29 +181,32 @@ describe Connfu::Provisioning do
|
|
180
181
|
|
181
182
|
it "should create a Voice channel application with the default privacy attribute" do
|
182
183
|
stub_request(:post, "#{ENDPOINT}/channels/voice").
|
183
|
-
with(:body => "{\"uid\":\"#{VOICE_KEY}\",\"country\":\"
|
184
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}"})
|
184
|
+
with(:body => "{\"uid\":\"#{VOICE_KEY}\",\"country\":\"#{COUNTRY}\",\"privacy\":\"whitelisted\"}", :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
185
|
+
to_return(:status => 201, :body => "{'created_at':'2011-08-25T14:16:44+03:00','rejected_message':'You are not allowed to join this conference','privacy':'whitelisted','topic':'hello_man','uid':'#{VOICE_KEY}','updated_at':'2011-08-25T15:10:12+03:00','welcome_message':'Welcome to connFu, you are going to join the conference','phones':[{'country':'#{COUNTRY}','phone_number':'#{PHONE_NUMBER}'}]}", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}"})
|
185
186
|
|
186
|
-
response = @application.create_voice_channel(VOICE_KEY,
|
187
|
-
response.should
|
187
|
+
response = @application.create_voice_channel(VOICE_KEY, COUNTRY)
|
188
|
+
response.should be_well_defined_as_voice(VOICE_KEY, [{:phone_number => PHONE_NUMBER, :country => COUNTRY}])
|
189
|
+
response.privacy.should eql("whitelisted")
|
188
190
|
end
|
189
191
|
|
190
192
|
it "should create a Voice channel application with a privacy attribute (public)" do
|
191
193
|
stub_request(:post, "#{ENDPOINT}/channels/voice").
|
192
|
-
with(:body => "{\"uid\":\"#{VOICE_KEY}\",\"country\":\"
|
193
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}"})
|
194
|
+
with(:body => "{\"uid\":\"#{VOICE_KEY}\",\"country\":\"#{COUNTRY}\",\"privacy\":\"public\"}", :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
195
|
+
to_return(:status => 201, :body => "{'created_at':'2011-08-25T14:16:44+03:00','rejected_message':'You are not allowed to join this conference','privacy':'public','topic':'hello_man','uid':'#{VOICE_KEY}','updated_at':'2011-08-25T15:10:12+03:00','welcome_message':'Welcome to connFu, you are going to join the conference','phones':[{'country':'#{COUNTRY}','phone_number':'#{PHONE_NUMBER}'}]}", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}"})
|
194
196
|
|
195
|
-
response = @application.create_voice_channel(VOICE_KEY,
|
196
|
-
response.should
|
197
|
+
response = @application.create_voice_channel(VOICE_KEY, COUNTRY, Connfu::Provisioning::Voice::Privacy::PUBLIC)
|
198
|
+
response.should be_well_defined_as_voice(VOICE_KEY, [{:phone_number => PHONE_NUMBER, :country => COUNTRY}])
|
199
|
+
response.privacy.should eql("public")
|
197
200
|
end
|
198
201
|
|
199
202
|
it "should create a Voice channel application with a privacy attribute (whitelisted)" do
|
200
203
|
stub_request(:post, "#{ENDPOINT}/channels/voice").
|
201
|
-
with(:body => "{\"uid\":\"#{VOICE_KEY}\",\"country\":\"
|
202
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}"})
|
204
|
+
with(:body => "{\"uid\":\"#{VOICE_KEY}\",\"country\":\"#{COUNTRY}\",\"privacy\":\"whitelisted\"}", :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
205
|
+
to_return(:status => 201, :body => "{'created_at':'2011-08-25T14:16:44+03:00','rejected_message':'You are not allowed to join this conference','privacy':'whitelisted','topic':'hello_man','uid':'#{VOICE_KEY}','updated_at':'2011-08-25T15:10:12+03:00','welcome_message':'Welcome to connFu, you are going to join the conference','phones':[{'country':'#{COUNTRY}','phone_number':'#{PHONE_NUMBER}'}]}", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}"})
|
203
206
|
|
204
|
-
response = @application.create_voice_channel(VOICE_KEY,
|
205
|
-
response.should
|
207
|
+
response = @application.create_voice_channel(VOICE_KEY, COUNTRY, Connfu::Provisioning::Voice::Privacy::WHITELIST)
|
208
|
+
response.should be_well_defined_as_voice(VOICE_KEY, [{:phone_number => PHONE_NUMBER, :country => COUNTRY}])
|
209
|
+
response.privacy.should eql("whitelisted")
|
206
210
|
end
|
207
211
|
|
208
212
|
it "should retrieve a channel information when the channel exists" do
|
@@ -419,22 +423,24 @@ describe Connfu::Provisioning do
|
|
419
423
|
|
420
424
|
stub_request(:post, "#{ENDPOINT}/channels/voice/#{VOICE_KEY}/whitelisted").
|
421
425
|
with(:body => "{\"name\":\"juan\",\"phone\":\"#{PHONE_NUMBER}\"}", :headers => {'Accept'=>'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
422
|
-
to_return(:status => 200, :body => "", :headers => {})
|
426
|
+
to_return(:status => 200, :body => "{\"name\":\"juan\",\"phone\":\"#{PHONE_NUMBER}\"}", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}/whitelisted/#{PHONE_NUMBER}"})
|
423
427
|
|
424
428
|
response = @application.add_whitelist(VOICE_KEY, 'juan', PHONE_NUMBER)
|
425
|
-
response.should
|
426
|
-
|
429
|
+
response.should be_instance_of(Connfu::Provisioning::WhitelistUser)
|
430
|
+
response.name.should eql("juan")
|
431
|
+
response.phone.should eql(PHONE_NUMBER)
|
427
432
|
end
|
428
433
|
|
429
434
|
it "should create a whitelist number with 1 parameter (WhitelistUser)" do
|
430
435
|
|
431
436
|
stub_request(:post, "#{ENDPOINT}/channels/voice/#{VOICE_KEY}/whitelisted").
|
432
437
|
with(:body => "{\"name\":\"juan\",\"phone\":\"#{PHONE_NUMBER}\"}", :headers => {'Accept'=>'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
433
|
-
to_return(:status => 200, :body => "", :headers => {})
|
438
|
+
to_return(:status => 200, :body => "{'name':'juan','phone':'#{PHONE_NUMBER}'}", :headers => {:location => "#{ENDPOINT}/channels/voice/#{VOICE_KEY}/whitelisted/#{PHONE_NUMBER}"})
|
434
439
|
|
435
440
|
response = @application.add_whitelist(VOICE_KEY, Connfu::Provisioning::WhitelistUser.new('juan', PHONE_NUMBER))
|
436
|
-
response.should
|
437
|
-
|
441
|
+
response.should be_instance_of(Connfu::Provisioning::WhitelistUser)
|
442
|
+
response.name.should eql("juan")
|
443
|
+
response.phone.should eql(PHONE_NUMBER)
|
438
444
|
end
|
439
445
|
|
440
446
|
it "should update a whitelist number with 1 parameter (WhitelistUser)" do
|
@@ -454,10 +460,11 @@ describe Connfu::Provisioning do
|
|
454
460
|
it "should create a RSS channel application" do
|
455
461
|
stub_request(:post, "#{ENDPOINT}/channels/rss").
|
456
462
|
with(:body => "{\"uid\":\"#{RSS_KEY}\",\"uri\":\"http://connfu.com/rss\"}", :headers => {'Accept'=>'application/json', 'Content-Type' => 'application/json', 'AUTH_TOKEN' => "#{API_KEY}"}).
|
457
|
-
to_return(:status => 201, :body => "", :headers => {:location => "#{ENDPOINT}/channels/voice/#{RSS_KEY}"})
|
463
|
+
to_return(:status => 201, :body => "{'created_at':'2011-07-17T20:57:01+03:00','uri':'http://connfu.com/rss','uid':#{RSS_KEY},'updated_at':'2011-07-17T20:57:01+03:00'}", :headers => {:location => "#{ENDPOINT}/channels/voice/#{RSS_KEY}"})
|
458
464
|
|
459
|
-
|
460
|
-
|
465
|
+
rss = @application.create_rss_channel(RSS_KEY, "http://connfu.com/rss")
|
466
|
+
rss.uid.should eql(RSS_KEY)
|
467
|
+
rss.uri.should eql("http://connfu.com/rss")
|
461
468
|
end
|
462
469
|
|
463
470
|
it "should retrieve a RSS channel information when the channel exists" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: connfu-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-10-01 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement: &
|
17
|
+
requirement: &2152266480 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.0.8
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2152266480
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rest-client
|
28
|
-
requirement: &
|
28
|
+
requirement: &2152265500 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2152265500
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec
|
39
|
-
requirement: &
|
39
|
+
requirement: &2152257780 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2152257780
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: flog
|
50
|
-
requirement: &
|
50
|
+
requirement: &2152256520 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 2.5.1
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2152256520
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: flay
|
61
|
-
requirement: &
|
61
|
+
requirement: &2152254840 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 1.4.2
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2152254840
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: roodi
|
72
|
-
requirement: &
|
72
|
+
requirement: &2152253620 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 2.1.0
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *2152253620
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: reek
|
83
|
-
requirement: &
|
83
|
+
requirement: &2152252180 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 1.2.8
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *2152252180
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: simplecov
|
94
|
-
requirement: &
|
94
|
+
requirement: &2152251040 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ! '>='
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: 0.4.0
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *2152251040
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: webmock
|
105
|
-
requirement: &
|
105
|
+
requirement: &2152246400 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ! '>='
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '0'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *2152246400
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: sdoc
|
116
|
-
requirement: &
|
116
|
+
requirement: &2152245100 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ! '>='
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: '0'
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *2152245100
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: metric_fu
|
127
|
-
requirement: &
|
127
|
+
requirement: &2152243580 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ! '>='
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: '0'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *2152243580
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: metrical
|
138
|
-
requirement: &
|
138
|
+
requirement: &2152241660 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - ! '>='
|
@@ -143,10 +143,10 @@ dependencies:
|
|
143
143
|
version: '0'
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *2152241660
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: rake
|
149
|
-
requirement: &
|
149
|
+
requirement: &2152240520 !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|
152
152
|
- - ! '>='
|
@@ -154,10 +154,10 @@ dependencies:
|
|
154
154
|
version: '0'
|
155
155
|
type: :development
|
156
156
|
prerelease: false
|
157
|
-
version_requirements: *
|
157
|
+
version_requirements: *2152240520
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
159
|
name: gli
|
160
|
-
requirement: &
|
160
|
+
requirement: &2152238980 !ruby/object:Gem::Requirement
|
161
161
|
none: false
|
162
162
|
requirements:
|
163
163
|
- - ! '>='
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
version: '0'
|
166
166
|
type: :runtime
|
167
167
|
prerelease: false
|
168
|
-
version_requirements: *
|
168
|
+
version_requirements: *2152238980
|
169
169
|
description: This gem provides a smooth access to connFu capabilities
|
170
170
|
email:
|
171
171
|
- devs@connfu.com
|
@@ -204,6 +204,9 @@ files:
|
|
204
204
|
- examples/provisioning/twitter/put.rb
|
205
205
|
- examples/provisioning/voice/create.rb
|
206
206
|
- examples/provisioning/voice/delete.rb
|
207
|
+
- examples/provisioning/voice/dtmf/create.rb
|
208
|
+
- examples/provisioning/voice/dtmf/delete.rb
|
209
|
+
- examples/provisioning/voice/dtmf/get.rb
|
207
210
|
- examples/provisioning/voice/get.rb
|
208
211
|
- examples/provisioning/voice/phones/create.rb
|
209
212
|
- examples/provisioning/voice/phones/delete.rb
|
@@ -228,11 +231,13 @@ files:
|
|
228
231
|
- lib/connfu/provisioning/application.rb
|
229
232
|
- lib/connfu/provisioning/base.rb
|
230
233
|
- lib/connfu/provisioning/channel.rb
|
234
|
+
- lib/connfu/provisioning/dtmf.rb
|
231
235
|
- lib/connfu/provisioning/phone.rb
|
232
236
|
- lib/connfu/provisioning/rss.rb
|
233
237
|
- lib/connfu/provisioning/twitter.rb
|
234
238
|
- lib/connfu/provisioning/voice.rb
|
235
239
|
- lib/connfu/provisioning/whitelist.rb
|
240
|
+
- lib/connfu/provisioning/whitelist_user.rb
|
236
241
|
- lib/connfu/version.rb
|
237
242
|
- lib/rdoc/generator/template/connfu/_context.rhtml
|
238
243
|
- lib/rdoc/generator/template/connfu/_head.rhtml
|