tropo-webapi-ruby 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.rdoc +7 -2
- data/README.rdoc +19 -1
- data/Rakefile +8 -6
- data/VERSION +1 -1
- data/lib/tropo-webapi-ruby.rb +1 -5
- data/lib/tropo-webapi-ruby/tropo-webapi-ruby-helpers.rb +11 -11
- data/lib/tropo-webapi-ruby/tropo-webapi-ruby.rb +8 -8
- data/spec/spec_helper.rb +1 -4
- data/spec/tropo-webapi-ruby_spec.rb +12 -4
- data/tropo-webapi-ruby.gemspec +9 -6
- metadata +14 -5
- data/.yardoc +0 -0
data/HISTORY.rdoc
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
= Tropo Release History
|
2
2
|
|
3
|
-
== Version 0.1.
|
3
|
+
== Version 0.1.5
|
4
4
|
|
5
|
-
-
|
5
|
+
- First public release
|
6
|
+
|
7
|
+
== Version 0.1.6
|
8
|
+
|
9
|
+
- Added the appropriate ActiveSupport dependency for 'instance_exec' for Ruby 1.8.6 support.
|
10
|
+
- Added a dependency and support for Hashie.
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Tropo Web API Ruby Library
|
2
2
|
|
3
|
-
A Ruby library for interaction with the Tropo Web API using JSON.
|
3
|
+
A Ruby library for interaction with the Tropo Web API (http://tropo.com) using JSON.
|
4
4
|
|
5
5
|
== Tropo Web API Overview
|
6
6
|
|
@@ -12,6 +12,8 @@ your own web servers.
|
|
12
12
|
* Ruby v1.8.6+ or JRuby v1.4.0+
|
13
13
|
* RubyGems
|
14
14
|
|
15
|
+
Note: If using with ActiveSupport, v2.3.5 or better of ActiveSupport is required.
|
16
|
+
|
15
17
|
== Installation
|
16
18
|
|
17
19
|
$ sudo gem install tropo-webapi-ruby
|
@@ -187,6 +189,22 @@ Using the great RESTful Web Services framework Sinatra for Ruby.
|
|
187
189
|
|
188
190
|
May be found by checking out the project from Github, and then looking in $PROJECT_HOME/examples and $PROJECT_HOME/spec/tropo-webapi-ruby_spec.rb.
|
189
191
|
|
192
|
+
=== Documentation
|
193
|
+
|
194
|
+
* API Documentation:
|
195
|
+
|
196
|
+
http://voxeo.github.com/tropo-webapi-ruby
|
197
|
+
|
198
|
+
* Tropo Web API Documentation
|
199
|
+
|
200
|
+
http://docs.tropo.com/webapi/2.0/home.htm
|
201
|
+
|
202
|
+
== Notes
|
203
|
+
|
204
|
+
In order to maintain compatibility between Ruby MRI and JRuby the gem requires 'json_pure'. If you are using the Ruby MRI and would prefer to use the C version of 'json', simply install the 'json' gem as follows:
|
205
|
+
|
206
|
+
sudo gem install json
|
207
|
+
|
190
208
|
== Copyright
|
191
209
|
|
192
210
|
Copyright (c) 2010 Voxeo, Corporation. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
+
require 'yard'
|
3
4
|
|
4
5
|
begin
|
5
6
|
require 'jeweler'
|
@@ -12,7 +13,10 @@ begin
|
|
12
13
|
gem.authors = ["Jason Goecke"]
|
13
14
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
15
|
gem.files.include %w(lib/tropo-webapi-ruby.rb lib/tropo-webapi-ruby/tropo-webapi-ruby.rb lib/tropo-webapi-ruby/tropo-webapi-ruby-helpers.rb LICENSE VERSION README.markdown)
|
15
|
-
gem.add_dependency('json', '>= 1.2.0')
|
16
|
+
#gem.add_dependency('json', '>= 1.2.0')
|
17
|
+
gem.add_dependency('json_pure', '>= 1.2.0')
|
18
|
+
gem.add_dependency('hashie', '>= 0.2.0')
|
19
|
+
gem.required_ruby_version = '>= 1.8.6'
|
16
20
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
17
21
|
end
|
18
22
|
Jeweler::GemcutterTasks.new
|
@@ -46,8 +50,6 @@ Rake::RDocTask.new do |rdoc|
|
|
46
50
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
47
51
|
end
|
48
52
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
# t.options = ['--any', '--extra', '--opts'] # optional
|
53
|
-
# end
|
53
|
+
YARD::Rake::YardocTask.new do |t|
|
54
|
+
t.files = ['lib/tropo-webapi-ruby/*.rb', 'lib/*.rb', 'README']
|
55
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
data/lib/tropo-webapi-ruby.rb
CHANGED
@@ -1,6 +1,2 @@
|
|
1
1
|
$: << File.expand_path(File.dirname(__FILE__))
|
2
|
-
require
|
3
|
-
require 'json'
|
4
|
-
require 'time'
|
5
|
-
require 'tropo-webapi-ruby/tropo-webapi-ruby-helpers'
|
6
|
-
require 'tropo-webapi-ruby/tropo-webapi-ruby'
|
2
|
+
%w(uri json hashie time tropo-webapi-ruby/tropo-webapi-ruby-helpers tropo-webapi-ruby/tropo-webapi-ruby).each { |lib| require lib }
|
@@ -161,8 +161,8 @@ module Tropo
|
|
161
161
|
|
162
162
|
array.each_with_index do |ele, i|
|
163
163
|
# Set the key to the value of the respresentative key
|
164
|
-
key = ele['key']
|
165
|
-
key = ele['name']
|
164
|
+
key = ele['key'] if ele['key']
|
165
|
+
key = ele['name'] if ele['name']
|
166
166
|
|
167
167
|
# Merge this new key into the hash
|
168
168
|
transformed_to_hash.merge!({ key => Hash.new })
|
@@ -196,16 +196,16 @@ module Tropo
|
|
196
196
|
# @param[String] the key to be decamelized and symobolized
|
197
197
|
# @param[Hash] the newly created hash that contins the properly formatted key
|
198
198
|
def transform_pair(key, value)
|
199
|
-
hash = { decamelize(key)
|
200
|
-
hash[
|
201
|
-
if hash[
|
202
|
-
if hash[
|
203
|
-
key_name = hash[
|
204
|
-
hash[
|
205
|
-
hash[
|
199
|
+
hash = { decamelize(key) => value }
|
200
|
+
hash['timestamp'] = Time.parse(value) if hash['timestamp']
|
201
|
+
if hash['actions']
|
202
|
+
if hash['actions']['name']
|
203
|
+
key_name = hash['actions']['name']
|
204
|
+
hash['actions'].delete('name')
|
205
|
+
hash['actions'] = { key_name => hash['actions'] }
|
206
206
|
end
|
207
207
|
end
|
208
|
-
set_session_type(hash) if hash[
|
208
|
+
set_session_type(hash) if hash['channel']
|
209
209
|
hash
|
210
210
|
end
|
211
211
|
|
@@ -215,7 +215,7 @@ module Tropo
|
|
215
215
|
# @param[Hash] the key, value pair of the channel
|
216
216
|
# @return nil
|
217
217
|
def set_session_type(hash)
|
218
|
-
case hash[
|
218
|
+
case hash['channel']
|
219
219
|
when "VOICE"
|
220
220
|
@voice_session = true
|
221
221
|
@text_session = false
|
@@ -186,28 +186,28 @@ module Tropo
|
|
186
186
|
# @param [String] a JSON string
|
187
187
|
# @return [Hash] a Hash representing the response from Tropo
|
188
188
|
def parse(json_string)
|
189
|
-
response = JSON.parse
|
190
|
-
|
189
|
+
response = JSON.parse(json_string)
|
190
|
+
|
191
191
|
# Check to see what type of response we are working with
|
192
192
|
if response['session']
|
193
|
-
transformed_response = {
|
193
|
+
transformed_response = { 'session' => { } }
|
194
194
|
|
195
195
|
response['session'].each_pair do |key, value|
|
196
196
|
value = transform_hash value if value.kind_of? Hash
|
197
|
-
transformed_response[
|
197
|
+
transformed_response['session'].merge!(transform_pair(key, value))
|
198
198
|
end
|
199
199
|
|
200
200
|
elsif response['result']
|
201
|
-
transformed_response = {
|
201
|
+
transformed_response = { 'result' => { } }
|
202
202
|
|
203
203
|
response['result'].each_pair do |key, value|
|
204
204
|
value = transform_hash value if value.kind_of? Hash
|
205
205
|
value = transform_array value if value.kind_of? Array
|
206
|
-
transformed_response[
|
206
|
+
transformed_response['result'].merge!(transform_pair(key, value))
|
207
207
|
end
|
208
208
|
end
|
209
|
-
|
210
|
-
transformed_response
|
209
|
+
|
210
|
+
transformed_response = Hashie::Mash.new(transformed_response)
|
211
211
|
end
|
212
212
|
|
213
213
|
##
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
-
require
|
4
|
-
require 'tropo-webapi-ruby'
|
5
|
-
require 'spec'
|
6
|
-
require 'spec/autorun'
|
3
|
+
%w(rubygems tropo-webapi-ruby hashie spec spec/autorun).each { |lib| require lib }
|
7
4
|
|
8
5
|
Spec::Runner.configure do |config|
|
9
6
|
|
@@ -212,7 +212,7 @@ describe "Tropo" do
|
|
212
212
|
it "should accept a valid email address when a 'record' action is called" do
|
213
213
|
response = Tropo::Generator.record({ :name => 'bar',
|
214
214
|
:url => 'foo@bar.com' })
|
215
|
-
response.should == "{\"tropo\":[{\"record\":{\"url\":\"foo@bar.com\",\"name\":\"bar\"}}]}"
|
215
|
+
JSON.parse(response).should == JSON.parse("{\"tropo\":[{\"record\":{\"url\":\"foo@bar.com\",\"name\":\"bar\"}}]}")
|
216
216
|
end
|
217
217
|
|
218
218
|
# Redirect action tests
|
@@ -334,12 +334,12 @@ describe "Tropo" do
|
|
334
334
|
|
335
335
|
it "should build a Ruby hash object when a result arrives in JSON" do
|
336
336
|
json_result = "{\"result\":{\"sessionId\":\"sessionId\",\"callState\":\"ANSWERED\",\"sessionDuration\":10,\"sequence\":1,\"complete\":true,\"error\":\"error\",\"properties\":[{\"key\":\"foo\",\"value\":\"bar\"},{\"key\":\"charlie\",\"value\":\"foxtrot\"}],\"actions\":{\"name\":\"pin\",\"attempts\":1,\"disposition\":\"SUCCESS\",\"confidence\":100,\"interpretation\":\"12345\",\"utterance\":\"1 2 3 4 5\"}}}"
|
337
|
-
Tropo::Generator.parse(json_result).should == {:result=>{:session_id=>"sessionId", :properties=>{:foo=>{:value=>"bar"}, :charlie=>{:value=>"foxtrot"}}, :complete=>true, :call_state=>"ANSWERED", :actions=>{:pin=>{:disposition=>"SUCCESS", :utterance=>"1 2 3 4 5", :attempts=>1, :interpretation=>"12345", :confidence=>100}}, :session_duration=>10, :error=>"error", :sequence=>1}}
|
337
|
+
Tropo::Generator.parse(json_result).should == Hashie::Mash.new({:result=>{:session_id=>"sessionId", :properties=>{:foo=>{:value=>"bar"}, :charlie=>{:value=>"foxtrot"}}, :complete=>true, :call_state=>"ANSWERED", :actions=>{:pin=>{:disposition=>"SUCCESS", :utterance=>"1 2 3 4 5", :attempts=>1, :interpretation=>"12345", :confidence=>100}}, :session_duration=>10, :error=>"error", :sequence=>1}})
|
338
338
|
end
|
339
339
|
|
340
340
|
it "should build a ruby hash object when a realworld JSON string arrives" do
|
341
341
|
json_result = "{\"result\":{\"sessionId\":\"CCFD9C86-1DD1-11B2-B76D-B9B253E4B7FB@161.253.55.20\",\"callState\":\"ANSWERED\",\"sessionDuration\":2,\"sequence\":1,\"complete\":true,\"error\":null,\"actions\":[{\"name\":\"zip\",\"attempts\":1,\"disposition\":\"SUCCESS\",\"confidence\":100,\"interpretation\":\"12345\",\"utterance\":\"1 2 3 4 5\"},{\"name\":\"days\",\"attempts\":1,\"disposition\":\"SUCCESS\",\"confidence\":100,\"interpretation\":\"1\",\"utterance\":\"1\"}]}}"
|
342
|
-
Tropo::Generator.parse(json_result).should == {:result=>{:call_state=>"ANSWERED", :complete=>true, :actions=>{:zip=>{:disposition=>"SUCCESS", :utterance=>"1 2 3 4 5", :attempts=>1, :interpretation=>"12345", :confidence=>100}, :days=>{:disposition=>"SUCCESS", :utterance=>"1", :attempts=>1, :interpretation=>"1", :confidence=>100}}, :session_duration=>2, :sequence=>1, :session_id=>"CCFD9C86-1DD1-11B2-B76D-B9B253E4B7FB@161.253.55.20", :error=>nil}}
|
342
|
+
Tropo::Generator.parse(json_result).should == Hashie::Mash.new({:result=>{:call_state=>"ANSWERED", :complete=>true, :actions=>{:zip=>{:disposition=>"SUCCESS", :utterance=>"1 2 3 4 5", :attempts=>1, :interpretation=>"12345", :confidence=>100}, :days=>{:disposition=>"SUCCESS", :utterance=>"1", :attempts=>1, :interpretation=>"1", :confidence=>100}}, :session_duration=>2, :sequence=>1, :session_id=>"CCFD9C86-1DD1-11B2-B76D-B9B253E4B7FB@161.253.55.20", :error=>nil}})
|
343
343
|
end
|
344
344
|
|
345
345
|
it "should see an object delcared outside of a block" do
|
@@ -409,7 +409,15 @@ describe "Tropo" do
|
|
409
409
|
it "should build a Ruby hash object when a result arrives in JSON with one action returned in an array" do
|
410
410
|
json_result = "{\"result\":{\"sessionId\":\"CCFD9C86-1DD1-11B2-B76D-B9B253E4B7FB@161.253.55.20\",\"callState\":\"ANSWERED\",\"sessionDuration\":2,\"sequence\":1,\"complete\":true,\"error\":null,\"actions\":{\"name\":\"zip\",\"attempts\":1,\"disposition\":\"SUCCESS\",\"confidence\":100,\"interpretation\":\"12345\",\"utterance\":\"1 2 3 4 5\"}}}"
|
411
411
|
hash = Tropo::Generator.parse(json_result)
|
412
|
-
hash.should == {:result=>{:call_state=>"ANSWERED", :complete=>true, :actions=>{:zip=>{:utterance=>"1 2 3 4 5", :attempts=>1, :interpretation=>"12345", :confidence=>100, :disposition=>"SUCCESS"}}, :session_id=>"CCFD9C86-1DD1-11B2-B76D-B9B253E4B7FB@161.253.55.20", :session_duration=>2, :error=>nil, :sequence=>1}}
|
412
|
+
hash.should == Hashie::Mash.new({:result=>{:call_state=>"ANSWERED", :complete=>true, :actions=>{:zip=>{:utterance=>"1 2 3 4 5", :attempts=>1, :interpretation=>"12345", :confidence=>100, :disposition=>"SUCCESS"}}, :session_id=>"CCFD9C86-1DD1-11B2-B76D-B9B253E4B7FB@161.253.55.20", :session_duration=>2, :error=>nil, :sequence=>1}})
|
413
|
+
end
|
414
|
+
|
415
|
+
it "should build a Hashie object when a result arrives in JSON" do
|
416
|
+
json_result = "{\"result\":{\"sessionId\":\"CCFD9C86-1DD1-11B2-B76D-B9B253E4B7FB@161.253.55.20\",\"callState\":\"ANSWERED\",\"sessionDuration\":2,\"sequence\":1,\"complete\":true,\"error\":null,\"actions\":{\"name\":\"zip\",\"attempts\":1,\"disposition\":\"SUCCESS\",\"confidence\":100,\"interpretation\":\"12345\",\"utterance\":\"1 2 3 4 5\"}}}"
|
417
|
+
hash = Tropo::Generator.parse(json_result)
|
418
|
+
hash.result.call_state.should == 'ANSWERED'
|
419
|
+
hash[:result][:call_state].should == 'ANSWERED'
|
420
|
+
hash['result']['call_state'].should == 'ANSWERED'
|
413
421
|
end
|
414
422
|
|
415
423
|
it "should generate valid JSON when a startRecording is used" do
|
data/tropo-webapi-ruby.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{tropo-webapi-ruby}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jason Goecke"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-26}
|
13
13
|
s.description = %q{Ruby library for interacting with the Tropo Web API via REST & JSON}
|
14
14
|
s.email = %q{jsgoecke@voxeo.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".gitignore",
|
22
|
-
".yardoc",
|
23
22
|
"HISTORY.rdoc",
|
24
23
|
"LICENSE",
|
25
24
|
"README.rdoc",
|
@@ -37,6 +36,7 @@ Gem::Specification.new do |s|
|
|
37
36
|
s.homepage = %q{http://tropo.com}
|
38
37
|
s.rdoc_options = ["--charset=UTF-8"]
|
39
38
|
s.require_paths = ["lib"]
|
39
|
+
s.required_ruby_version = Gem::Requirement.new(">= 1.8.6")
|
40
40
|
s.rubygems_version = %q{1.3.5}
|
41
41
|
s.summary = %q{Tropo Web API Ruby Gem}
|
42
42
|
s.test_files = [
|
@@ -51,14 +51,17 @@ Gem::Specification.new do |s|
|
|
51
51
|
|
52
52
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
53
53
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
54
|
-
s.add_runtime_dependency(%q<
|
54
|
+
s.add_runtime_dependency(%q<json_pure>, [">= 1.2.0"])
|
55
|
+
s.add_runtime_dependency(%q<hashie>, [">= 0.2.0"])
|
55
56
|
else
|
56
57
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
57
|
-
s.add_dependency(%q<
|
58
|
+
s.add_dependency(%q<json_pure>, [">= 1.2.0"])
|
59
|
+
s.add_dependency(%q<hashie>, [">= 0.2.0"])
|
58
60
|
end
|
59
61
|
else
|
60
62
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
61
|
-
s.add_dependency(%q<
|
63
|
+
s.add_dependency(%q<json_pure>, [">= 1.2.0"])
|
64
|
+
s.add_dependency(%q<hashie>, [">= 0.2.0"])
|
62
65
|
end
|
63
66
|
end
|
64
67
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tropo-webapi-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Goecke
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-04-26 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
version: 1.2.9
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: json_pure
|
27
27
|
type: :runtime
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -32,6 +32,16 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.2.0
|
34
34
|
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: hashie
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.2.0
|
44
|
+
version:
|
35
45
|
description: Ruby library for interacting with the Tropo Web API via REST & JSON
|
36
46
|
email: jsgoecke@voxeo.com
|
37
47
|
executables: []
|
@@ -44,7 +54,6 @@ extra_rdoc_files:
|
|
44
54
|
files:
|
45
55
|
- .document
|
46
56
|
- .gitignore
|
47
|
-
- .yardoc
|
48
57
|
- HISTORY.rdoc
|
49
58
|
- LICENSE
|
50
59
|
- README.rdoc
|
@@ -71,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
80
|
requirements:
|
72
81
|
- - ">="
|
73
82
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
83
|
+
version: 1.8.6
|
75
84
|
version:
|
76
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
86
|
requirements:
|
data/.yardoc
DELETED
Binary file
|