plivo 0.2.12 → 0.2.13
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/plivo.rb +29 -68
- metadata +24 -10
- data/lib/test.rb +0 -7
data/lib/plivo.rb
CHANGED
@@ -21,7 +21,7 @@ module Plivo
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def hash_to_params(myhash)
|
24
|
-
|
24
|
+
return myhash.map { |k, v| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" }.join("&")
|
25
25
|
end
|
26
26
|
|
27
27
|
def request(method, path, params=nil)
|
@@ -444,22 +444,39 @@ module Plivo
|
|
444
444
|
|
445
445
|
attr_accessor :node, :name
|
446
446
|
|
447
|
-
def initialize(body=nil, attributes={})
|
447
|
+
def initialize(body=nil, attributes={}, &block)
|
448
448
|
@name = self.class.name.split('::')[1]
|
449
449
|
@body = body
|
450
450
|
@node = REXML::Element.new @name
|
451
451
|
attributes.each do |k, v|
|
452
|
-
if self.class.valid_attributes.include?(k)
|
453
|
-
@node.attributes[k] = convert_value(v)
|
452
|
+
if self.class.valid_attributes.include?(k.to_s)
|
453
|
+
@node.attributes[k.to_s] = convert_value(v)
|
454
454
|
else
|
455
|
-
raise PlivoError,
|
455
|
+
raise PlivoError, "invalid attribute #{k.to_s} for #{@name}"
|
456
456
|
end
|
457
457
|
end
|
458
458
|
if @body
|
459
459
|
@node.text = @body
|
460
460
|
end
|
461
|
+
|
462
|
+
# Allow for nested "nestable" elements using a code block
|
463
|
+
# ie
|
464
|
+
# Plivo::Response.new do |r|
|
465
|
+
# r.Dial do |n|
|
466
|
+
# n.Number '+15557779999'
|
467
|
+
# end
|
468
|
+
# end
|
469
|
+
yield(self) if block_given?
|
470
|
+
end
|
471
|
+
|
472
|
+
def method_missing(method, *args, &block)
|
473
|
+
# Handle the addElement methods
|
474
|
+
method = $1.to_sym if method.to_s =~ /^add(.*)/
|
475
|
+
# Add the element
|
476
|
+
add(Plivo.const_get(method).new(*args, &block))
|
461
477
|
end
|
462
478
|
|
479
|
+
|
463
480
|
def convert_value(v)
|
464
481
|
if v == true
|
465
482
|
return "true"
|
@@ -484,7 +501,7 @@ module Plivo
|
|
484
501
|
@node.elements << element.node
|
485
502
|
return element
|
486
503
|
else
|
487
|
-
raise PlivoError, element.name
|
504
|
+
raise PlivoError, "#{element.name} not nestable in #{@name}"
|
488
505
|
end
|
489
506
|
end
|
490
507
|
|
@@ -495,62 +512,6 @@ module Plivo
|
|
495
512
|
def to_s
|
496
513
|
return @node.to_s
|
497
514
|
end
|
498
|
-
|
499
|
-
def addSpeak(body, attributes={})
|
500
|
-
return add(Speak.new(body, attributes))
|
501
|
-
end
|
502
|
-
|
503
|
-
def addPlay(body, attributes={})
|
504
|
-
return add(Play.new(body, attributes))
|
505
|
-
end
|
506
|
-
|
507
|
-
def addGetDigits(attributes={})
|
508
|
-
return add(GetDigits.new(attributes))
|
509
|
-
end
|
510
|
-
|
511
|
-
def addRecord(attributes={})
|
512
|
-
return add(Record.new(attributes))
|
513
|
-
end
|
514
|
-
|
515
|
-
def addDial(attributes={})
|
516
|
-
return add(Dial.new(attributes))
|
517
|
-
end
|
518
|
-
|
519
|
-
def addNumber(body, attributes={})
|
520
|
-
return add(Number.new(body, attributes))
|
521
|
-
end
|
522
|
-
|
523
|
-
def addUser(body, attributes={})
|
524
|
-
return add(User.new(body, attributes))
|
525
|
-
end
|
526
|
-
|
527
|
-
def addRedirect(body, attributes={})
|
528
|
-
return add(Redirect.new(body, attributes))
|
529
|
-
end
|
530
|
-
|
531
|
-
def addWait(attributes={})
|
532
|
-
return add(Wait.new(attributes))
|
533
|
-
end
|
534
|
-
|
535
|
-
def addHangup(attributes={})
|
536
|
-
return add(Hangup.new(attributes))
|
537
|
-
end
|
538
|
-
|
539
|
-
def addPreAnswer(attributes={})
|
540
|
-
return add(PreAnswer.new(attributes))
|
541
|
-
end
|
542
|
-
|
543
|
-
def addConference(body, attributes={})
|
544
|
-
return add(Conference.new(body, attributes))
|
545
|
-
end
|
546
|
-
|
547
|
-
def addMessage(body, attributes={})
|
548
|
-
return add(Message.new(body, attributes))
|
549
|
-
end
|
550
|
-
|
551
|
-
def addDTMF(body, attributes={})
|
552
|
-
return add(DTMF.new(body, attributes))
|
553
|
-
end
|
554
515
|
end
|
555
516
|
|
556
517
|
|
@@ -639,8 +600,8 @@ module Plivo
|
|
639
600
|
'validDigits', 'playBeep', 'redirect',
|
640
601
|
'digitTimeout']
|
641
602
|
|
642
|
-
def initialize(attributes={})
|
643
|
-
super(nil, attributes)
|
603
|
+
def initialize(attributes={}, &block)
|
604
|
+
super(nil, attributes, &block)
|
644
605
|
end
|
645
606
|
end
|
646
607
|
|
@@ -679,8 +640,8 @@ module Plivo
|
|
679
640
|
'callbackUrl', 'callbackMethod', 'digitsMatch',
|
680
641
|
'sipHeaders']
|
681
642
|
|
682
|
-
def initialize(attributes={})
|
683
|
-
super(nil, attributes)
|
643
|
+
def initialize(attributes={}, &block)
|
644
|
+
super(nil, attributes, &block)
|
684
645
|
end
|
685
646
|
end
|
686
647
|
|
@@ -720,8 +681,8 @@ module Plivo
|
|
720
681
|
@nestables = ['Play', 'Speak', 'GetDigits', 'Wait', 'Redirect', 'Message', 'DTMF']
|
721
682
|
@valid_attributes = []
|
722
683
|
|
723
|
-
def initialize(attributes={})
|
724
|
-
super(nil, attributes)
|
684
|
+
def initialize(attributes={}, &block)
|
685
|
+
super(nil, attributes, &block)
|
725
686
|
end
|
726
687
|
end
|
727
688
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plivo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.13
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 2.1.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.1.2
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rest-client
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 1.6.7
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.6.7
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: json
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,7 +53,12 @@ dependencies:
|
|
43
53
|
version: 1.6.6
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.6.6
|
47
62
|
description: A Ruby gem for interacting with the Plivo Platform
|
48
63
|
email: support@plivo.com
|
49
64
|
executables: []
|
@@ -51,7 +66,6 @@ extensions: []
|
|
51
66
|
extra_rdoc_files:
|
52
67
|
- README.md
|
53
68
|
files:
|
54
|
-
- lib/test.rb
|
55
69
|
- lib/plivo.rb
|
56
70
|
- README.md
|
57
71
|
homepage: http://www.plivo.com
|
@@ -74,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
88
|
version: '0'
|
75
89
|
requirements: []
|
76
90
|
rubyforge_project:
|
77
|
-
rubygems_version: 1.8.
|
91
|
+
rubygems_version: 1.8.23
|
78
92
|
signing_key:
|
79
93
|
specification_version: 3
|
80
94
|
summary: A Ruby gem for communicating with the Plivo Platform
|