tropo-provisioning 0.0.22 → 0.0.23
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/Gemfile.lock +8 -4
- data/LICENSE +1 -1
- data/README.rdoc +1 -1
- data/Rakefile +0 -1
- data/lib/tropo-provisioning/tropo_client.rb +31 -11
- data/lib/tropo-provisioning/tropo_provisioning.rb +13 -6
- data/lib/tropo-provisioning/version.rb +1 -1
- data/lib/tropo-provisioning.rb +1 -1
- data/spec/live-tropo-provisioning_spec.rb +16 -16
- data/spec/tropo-provisioning_spec.rb +59 -55
- data/tropo-provisioning.gemspec +2 -0
- metadata +28 -17
data/Gemfile.lock
CHANGED
@@ -1,21 +1,24 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tropo-provisioning (0.0.
|
4
|
+
tropo-provisioning (0.0.22)
|
5
5
|
activesupport
|
6
6
|
hashie (>= 0.2.1)
|
7
7
|
i18n
|
8
|
+
json
|
8
9
|
|
9
10
|
GEM
|
10
11
|
remote: http://rubygems.org/
|
11
12
|
specs:
|
12
|
-
activesupport (3.1.
|
13
|
+
activesupport (3.1.3)
|
13
14
|
multi_json (~> 1.0)
|
14
15
|
diff-lcs (1.1.2)
|
15
16
|
fakeweb (1.3.0)
|
16
|
-
hashie (1.
|
17
|
+
hashie (1.2.0)
|
17
18
|
i18n (0.6.0)
|
18
|
-
|
19
|
+
json (1.6.5)
|
20
|
+
json (1.6.5-java)
|
21
|
+
multi_json (1.0.4)
|
19
22
|
rdoc (3.9.4)
|
20
23
|
rspec (2.3.0)
|
21
24
|
rspec-core (~> 2.3.0)
|
@@ -28,6 +31,7 @@ GEM
|
|
28
31
|
yard (0.7.2)
|
29
32
|
|
30
33
|
PLATFORMS
|
34
|
+
java
|
31
35
|
ruby
|
32
36
|
|
33
37
|
DEPENDENCIES
|
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -18,7 +18,7 @@ The Tropo Provisioning gem provides a library for convenient access to the Tropo
|
|
18
18
|
|
19
19
|
== Requirements
|
20
20
|
|
21
|
-
* Unit tests passed on: Ruby MRI v1.8.6/1.8.7, Ruby 1.9.2
|
21
|
+
* Unit tests passed on: Ruby MRI v1.8.6/1.8.7, Ruby 1.9.2 and JRuby 1.6.3
|
22
22
|
|
23
23
|
* RubyGems: Check tropo-provisioning.gemspec
|
24
24
|
|
data/Rakefile
CHANGED
@@ -27,14 +27,22 @@ class TropoClient
|
|
27
27
|
# * [required, String] *password* valid password
|
28
28
|
# * [optional, String] *base_uri* Tropo provisioning API endpoint
|
29
29
|
# * [optional, String] *headers* required HTTP headers
|
30
|
+
# * [optional, Hash] * proxy => {"host" : <host>, "port" : <port>}
|
30
31
|
#
|
31
32
|
# ==== Return
|
32
33
|
# * new TropoClient instance
|
33
|
-
def initialize(username, password, base_uri = "http://api.tropo.com/v1", headers)
|
34
|
+
def initialize(username, password, base_uri = "http://api.tropo.com/v1/", headers = nil, proxy = nil)
|
34
35
|
@base_uri = base_uri
|
36
|
+
if RUBY_VERSION =~ /1.8/
|
37
|
+
@base_uri << "/" if !@base_uri[-1].eql?(47)
|
38
|
+
elsif RUBY_VERSION =~ /1.9/
|
39
|
+
@base_uri << "/" if !@base_uri[-1].eql?("/")
|
40
|
+
end
|
41
|
+
|
35
42
|
@username = username
|
36
43
|
@password = password
|
37
44
|
@headers = headers.nil? ? {} : headers
|
45
|
+
@proxy = proxy
|
38
46
|
end
|
39
47
|
|
40
48
|
##
|
@@ -142,7 +150,22 @@ class TropoClient
|
|
142
150
|
def http
|
143
151
|
@http ||= (
|
144
152
|
uri = URI.parse(base_uri)
|
145
|
-
|
153
|
+
if @proxy.nil?
|
154
|
+
base = Net::HTTP
|
155
|
+
else
|
156
|
+
[:host, :port].each{|item|
|
157
|
+
if @proxy.has_key(item)
|
158
|
+
proxy[item.to_s] = proxy[item]
|
159
|
+
end
|
160
|
+
}
|
161
|
+
if @proxy.has_key?("host") && @proxy.has_key?("port")
|
162
|
+
base = Net::HTTP::Proxy(@proxy["host"], @proxy["port"])
|
163
|
+
else
|
164
|
+
base = Net::HTTP
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
http = base.new(uri.host, uri.port)
|
146
169
|
http.use_ssl = true if uri.scheme == 'https'
|
147
170
|
http
|
148
171
|
)
|
@@ -153,18 +176,13 @@ class TropoClient
|
|
153
176
|
#
|
154
177
|
# ==== Parameters
|
155
178
|
# * [required, Symbol] http_request Net::HTTPRequest child
|
156
|
-
# * [required, Hash]
|
157
|
-
# * [String] :resource the resource to call on the base URL
|
158
|
-
# * [Hash] :body the details to use when posting, putting or deleting an object, converts into the appropriate JSON
|
179
|
+
# * [required, Hash] body details parameters to use when posting or putting an object, converts into the appropriate JSON
|
159
180
|
#
|
160
181
|
# ==== Return
|
161
182
|
# * [Hash] the result of the request
|
162
183
|
# * [TropoError]
|
163
184
|
# if it can not connect to the API server or if the response.code is not 200
|
164
|
-
def request(http_request,
|
165
|
-
params[:body] and params[:body] = camelize_params(params[:body])
|
166
|
-
|
167
|
-
uri = params[:resource].nil? ? "" : params[:resource]
|
185
|
+
def request(http_request, body = {})
|
168
186
|
|
169
187
|
unless http_request.is_a?(Net::HTTPRequest)
|
170
188
|
raise TropoError.new("Invalid request type #{http_request}")
|
@@ -172,8 +190,10 @@ class TropoClient
|
|
172
190
|
|
173
191
|
http_request.initialize_http_header(headers)
|
174
192
|
http_request.basic_auth username, password
|
175
|
-
|
176
|
-
|
193
|
+
|
194
|
+
# Include body if received
|
195
|
+
body.empty? or http_request.body = ActiveSupport::JSON.encode(camelize_params(body))
|
196
|
+
|
177
197
|
begin
|
178
198
|
response = http.request(http_request)
|
179
199
|
rescue => e
|
@@ -32,8 +32,9 @@ class TropoProvisioning
|
|
32
32
|
#
|
33
33
|
# TropoProvisioning object
|
34
34
|
def initialize(username, password, params={})
|
35
|
-
base_uri = params[:base_uri] || "
|
36
|
-
|
35
|
+
base_uri = params[:base_uri] || "https://api.tropo.com/v1/"
|
36
|
+
proxy = params[:proxy] || nil
|
37
|
+
@tropo_client = TropoClient.new(username, password, base_uri, { 'Content-Type' => 'application/json' }, proxy)
|
37
38
|
user(username)
|
38
39
|
end
|
39
40
|
|
@@ -161,7 +162,7 @@ class TropoProvisioning
|
|
161
162
|
# ==== Parameters
|
162
163
|
# * [required] search_term
|
163
164
|
# * [String] a key/value of the search term you would like to use, such as 'username=foobar', or 'city=Orlando'
|
164
|
-
# * [Hash] a Hash instance, such as {
|
165
|
+
# * [Hash] a Hash instance, such as {"username" => "foobar"}, or {"city" => "Orlando"}
|
165
166
|
#
|
166
167
|
# ==== Return
|
167
168
|
# * [Array]
|
@@ -300,9 +301,9 @@ class TropoProvisioning
|
|
300
301
|
# Add/modify payment info for a user
|
301
302
|
#
|
302
303
|
# ==== Parameters
|
303
|
-
# * [required, String]
|
304
|
+
# * [user_id - required, String] to add the payment details for
|
304
305
|
# * [require, Hash] params the params to add the payment info
|
305
|
-
# * [required, String]
|
306
|
+
# * [:account_number] [required, String] the credit card number
|
306
307
|
# * [required, String] :payment_type the type, such as visa, mastercard, etc
|
307
308
|
# * [required, String] :address
|
308
309
|
# * [optional, String] :address2
|
@@ -411,7 +412,13 @@ class TropoProvisioning
|
|
411
412
|
# * [String] :partition defines whether the application is in staging/development or production
|
412
413
|
def application(application_id)
|
413
414
|
app = @tropo_client.get("applications/#{application_id.to_s}")
|
414
|
-
|
415
|
+
if app.instance_of? Array
|
416
|
+
href = app[0].href
|
417
|
+
app[0].merge!({ :application_id => get_element(href) })
|
418
|
+
else
|
419
|
+
href = app.href
|
420
|
+
app.merge!({ :application_id => get_element(href) })
|
421
|
+
end
|
415
422
|
end
|
416
423
|
|
417
424
|
##
|
data/lib/tropo-provisioning.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
require 'json' if RUBY_VERSION =~ /1.8/
|
2
2
|
require 'tropo-provisioning/tropo_provisioning'
|
@@ -97,14 +97,14 @@ describe "TropoProvisioning" do
|
|
97
97
|
it "should create an application" do
|
98
98
|
# Get a specific user by username
|
99
99
|
FakeWeb.register_uri(:get,
|
100
|
-
"
|
100
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/users/jsgoecke",
|
101
101
|
:body => ActiveSupport::JSON.encode(existing_user),
|
102
102
|
:content_type => "application/json",
|
103
103
|
:status => ["200", "OK"])
|
104
104
|
|
105
105
|
# Create an application
|
106
106
|
FakeWeb.register_uri(:post,
|
107
|
-
%r|
|
107
|
+
%r|https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/applications|,
|
108
108
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/provisioning/applications/#{APPLICATION_ID}" }),
|
109
109
|
:status => ["200", "OK"])
|
110
110
|
|
@@ -118,7 +118,7 @@ describe "TropoProvisioning" do
|
|
118
118
|
it "should get a list of exchanges" do
|
119
119
|
# Exchanges
|
120
120
|
FakeWeb.register_uri(:get,
|
121
|
-
"
|
121
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/exchanges",
|
122
122
|
:body => exchanges,
|
123
123
|
:status => ["200", "OK"],
|
124
124
|
:content_type => "application/json")
|
@@ -130,21 +130,21 @@ describe "TropoProvisioning" do
|
|
130
130
|
it "should add a phone, IM and token address to the application" do
|
131
131
|
# Get a specific user by username
|
132
132
|
FakeWeb.register_uri(:get,
|
133
|
-
"
|
133
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/users/jsgoecke",
|
134
134
|
:body => ActiveSupport::JSON.encode(existing_user),
|
135
135
|
:content_type => "application/json",
|
136
136
|
:status => ["200", "OK"])
|
137
137
|
|
138
138
|
# Exchanges
|
139
139
|
FakeWeb.register_uri(:get,
|
140
|
-
"
|
140
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/exchanges",
|
141
141
|
:body => exchanges,
|
142
142
|
:status => ["200", "OK"],
|
143
143
|
:content_type => "application/json")
|
144
144
|
|
145
145
|
# Get a address that is a number
|
146
146
|
FakeWeb.register_uri(:post,
|
147
|
-
"
|
147
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/applications/108016/addresses",
|
148
148
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/108000/addresses/number/7202551912" }),
|
149
149
|
:content_type => "application/json")
|
150
150
|
|
@@ -156,21 +156,21 @@ describe "TropoProvisioning" do
|
|
156
156
|
it "should add an IM token address to the application" do
|
157
157
|
# Get a specific user by username
|
158
158
|
FakeWeb.register_uri(:get,
|
159
|
-
"
|
159
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/users/jsgoecke",
|
160
160
|
:body => ActiveSupport::JSON.encode(existing_user),
|
161
161
|
:content_type => "application/json",
|
162
162
|
:status => ["200", "OK"])
|
163
163
|
|
164
164
|
# Exchanges
|
165
165
|
FakeWeb.register_uri(:get,
|
166
|
-
"
|
166
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/exchanges",
|
167
167
|
:body => exchanges,
|
168
168
|
:status => ["200", "OK"],
|
169
169
|
:content_type => "application/json")
|
170
170
|
|
171
171
|
# Get a address that is a number
|
172
172
|
FakeWeb.register_uri(:post,
|
173
|
-
"
|
173
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/applications/#{APPLICATION_ID}/addresses",
|
174
174
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/#{APPLICATION_ID}/addresses/jabber/appsdsdsdasd@bot.im" }),
|
175
175
|
:content_type => "application/json")
|
176
176
|
|
@@ -182,21 +182,21 @@ describe "TropoProvisioning" do
|
|
182
182
|
it "should add a token to the application" do
|
183
183
|
# Get a specific user by username
|
184
184
|
FakeWeb.register_uri(:get,
|
185
|
-
"
|
185
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/users/jsgoecke",
|
186
186
|
:body => ActiveSupport::JSON.encode(existing_user),
|
187
187
|
:content_type => "application/json",
|
188
188
|
:status => ["200", "OK"])
|
189
189
|
|
190
190
|
# Exchanges
|
191
191
|
FakeWeb.register_uri(:get,
|
192
|
-
"
|
192
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/exchanges",
|
193
193
|
:body => exchanges,
|
194
194
|
:status => ["200", "OK"],
|
195
195
|
:content_type => "application/json")
|
196
196
|
|
197
197
|
# Get a address that is a number
|
198
198
|
FakeWeb.register_uri(:post,
|
199
|
-
"
|
199
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/applications/#{APPLICATION_ID}/addresses",
|
200
200
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/#{APPLICATION_ID}/addresses/token/"+("w"*88) }),
|
201
201
|
:content_type => "application/json")
|
202
202
|
result = tropo_provisioning.create_address(APPLICATION_ID, { :type => 'token', :channel => 'voice' } )
|
@@ -208,7 +208,7 @@ describe "TropoProvisioning" do
|
|
208
208
|
|
209
209
|
# A specific application
|
210
210
|
FakeWeb.register_uri(:get,
|
211
|
-
"
|
211
|
+
"https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/applications/#{APPLICATION_ID}",
|
212
212
|
:body => ActiveSupport::JSON.encode(application),
|
213
213
|
:content_type => "application/json")
|
214
214
|
|
@@ -217,7 +217,7 @@ describe "TropoProvisioning" do
|
|
217
217
|
|
218
218
|
# Update a specific application
|
219
219
|
FakeWeb.register_uri(:put,
|
220
|
-
%r|
|
220
|
+
%r|https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/applications/#{APPLICATION_ID}|,
|
221
221
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/#{APPLICATION_ID}" }),
|
222
222
|
:status => ["200", "OK"])
|
223
223
|
|
@@ -229,7 +229,7 @@ describe "TropoProvisioning" do
|
|
229
229
|
pending
|
230
230
|
# Create an application
|
231
231
|
FakeWeb.register_uri(:post,
|
232
|
-
%r|
|
232
|
+
%r|https://#{USERNAME}:#{PASSWORD}@api.tropo.com/v1/applications|,
|
233
233
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/provisioning/applications/#{APPLICATION_ID}" }),
|
234
234
|
:status => ["200", "OK"])
|
235
235
|
|
@@ -269,4 +269,4 @@ describe "TropoProvisioning" do
|
|
269
269
|
# result = @tp.delete_application(APPLICATION_ID)
|
270
270
|
# result.message.should == 'delete successful'
|
271
271
|
# end
|
272
|
-
end
|
272
|
+
end
|
@@ -173,19 +173,19 @@ describe "TropoProvisioning" do
|
|
173
173
|
|
174
174
|
# Applications
|
175
175
|
FakeWeb.register_uri(:get,
|
176
|
-
%r|
|
176
|
+
%r|https://foo:bar@api.tropo.com/v1/applications|,
|
177
177
|
:body => ActiveSupport::JSON.encode(applications),
|
178
178
|
:content_type => "application/json")
|
179
179
|
|
180
180
|
# Create an application
|
181
181
|
FakeWeb.register_uri(:post,
|
182
|
-
%r|
|
182
|
+
%r|https://foo:bar@api.tropo.com/v1/applications|,
|
183
183
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/108016" }),
|
184
184
|
:status => ["200", "OK"])
|
185
185
|
|
186
186
|
# Update a specific application
|
187
187
|
FakeWeb.register_uri(:put,
|
188
|
-
%r|
|
188
|
+
%r|https://foo:bar@api.tropo.com/v1/applications/108000|,
|
189
189
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/108016" }),
|
190
190
|
:status => ["200", "OK"])
|
191
191
|
|
@@ -197,19 +197,19 @@ describe "TropoProvisioning" do
|
|
197
197
|
|
198
198
|
# Get a specific address
|
199
199
|
FakeWeb.register_uri(:get,
|
200
|
-
"
|
200
|
+
"https://foo:bar@api.tropo.com/v1/applications/108000/addresses/number/883510001812716",
|
201
201
|
:body => ActiveSupport::JSON.encode(@addresses[0]),
|
202
202
|
:content_type => "application/json")
|
203
203
|
|
204
204
|
# Get a address that is an IM/username
|
205
205
|
FakeWeb.register_uri(:get,
|
206
|
-
"
|
206
|
+
"https://foo:bar@api.tropo.com/v1/applications/108000/addresses/jabber/xyz123",
|
207
207
|
:body => ActiveSupport::JSON.encode(@addresses[2]),
|
208
208
|
:content_type => "application/json")
|
209
209
|
|
210
210
|
# Get a address that is a token
|
211
211
|
FakeWeb.register_uri(:get,
|
212
|
-
"
|
212
|
+
"https://foo:bar@api.tropo.com/v1/applications/108000/addresses/jabber/xyz123",
|
213
213
|
:body => ActiveSupport::JSON.encode(@addresses[2]),
|
214
214
|
:content_type => "application/json")
|
215
215
|
|
@@ -221,80 +221,80 @@ describe "TropoProvisioning" do
|
|
221
221
|
|
222
222
|
# Get a address that is a token
|
223
223
|
FakeWeb.register_uri(:get,
|
224
|
-
"
|
224
|
+
"https://foo:bar@api.tropo.com/v1/applications/108000/addresses/token/a1b2c3d4",
|
225
225
|
:body => ActiveSupport::JSON.encode(@addresses[4]),
|
226
226
|
:content_type => "application/json")
|
227
227
|
|
228
228
|
# Get a address that is a number
|
229
229
|
FakeWeb.register_uri(:post,
|
230
|
-
"
|
230
|
+
"https://foo:bar@api.tropo.com/v1/applications/108000/addresses",
|
231
231
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/108000/addresses/number/7202551912" }),
|
232
232
|
:content_type => "application/json")
|
233
233
|
|
234
234
|
# Create a address that is an IM account
|
235
235
|
FakeWeb.register_uri(:post,
|
236
|
-
"
|
236
|
+
"https://foo:bar@api.tropo.com/v1/applications/108001/addresses",
|
237
237
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/108001/addresses/jabber/xyz123@bot.im" }),
|
238
238
|
:content_type => "application/json")
|
239
239
|
|
240
240
|
# Create a address that is a Token
|
241
241
|
FakeWeb.register_uri(:post,
|
242
|
-
"
|
242
|
+
"https://foo:bar@api.tropo.com/v1/applications/108002/addresses",
|
243
243
|
:body => ActiveSupport::JSON.encode({ "href" => "http://api.tropo.com/v1/applications/108002/addresses/token/12345679f90bac47a05b178c37d3c68aaf38d5bdbc5aba0c7abb12345d8a9fd13f1234c1234567dbe2c6f63b" }),
|
244
244
|
:content_type => "application/json")
|
245
245
|
|
246
246
|
# Delete an application
|
247
247
|
FakeWeb.register_uri(:delete,
|
248
|
-
"
|
248
|
+
"https://foo:bar@api.tropo.com/v1/applications/108000",
|
249
249
|
:body => ActiveSupport::JSON.encode({ 'message' => 'delete successful' }),
|
250
250
|
:content_type => "application/json",
|
251
251
|
:status => ["200", "OK"])
|
252
252
|
|
253
253
|
# Exchanges
|
254
254
|
FakeWeb.register_uri(:get,
|
255
|
-
"
|
255
|
+
"https://foo:bar@api.tropo.com/v1/exchanges",
|
256
256
|
:body => exchanges,
|
257
257
|
:status => ["200", "OK"],
|
258
258
|
:content_type => "application/json")
|
259
259
|
|
260
260
|
# Delete a address
|
261
261
|
FakeWeb.register_uri(:delete,
|
262
|
-
"
|
262
|
+
"https://foo:bar@api.tropo.com/v1/applications/108000/addresses/number/883510001812716",
|
263
263
|
:body => ActiveSupport::JSON.encode({ 'message' => 'delete successful' }),
|
264
264
|
:content_type => "application/json",
|
265
265
|
:status => ["200", "OK"])
|
266
266
|
|
267
267
|
# Add a specific address
|
268
268
|
FakeWeb.register_uri(:post,
|
269
|
-
"
|
269
|
+
"https://foo:bar@api.tropo.com/v1/applications/108002/addresses/number/883510001812716",
|
270
270
|
:body => ActiveSupport::JSON.encode({ 'message' => 'delete successful' }),
|
271
271
|
:content_type => "application/json",
|
272
272
|
:status => ["200", "OK"])
|
273
273
|
|
274
274
|
# Create a new user
|
275
275
|
FakeWeb.register_uri(:post,
|
276
|
-
"
|
276
|
+
"https://foo:bar@api.tropo.com/v1/users",
|
277
277
|
:body => @new_user_json,
|
278
278
|
:content_type => "application/json",
|
279
279
|
:status => ["200", "OK"])
|
280
280
|
|
281
281
|
# Get a specific user by user_id
|
282
282
|
FakeWeb.register_uri(:get,
|
283
|
-
"
|
283
|
+
"https://foo:bar@api.tropo.com/v1/users/12345",
|
284
284
|
:body => ActiveSupport::JSON.encode(@existing_user),
|
285
285
|
:content_type => "application/json",
|
286
286
|
:status => ["200", "OK"])
|
287
287
|
|
288
288
|
# Get a specific user by user_id
|
289
289
|
FakeWeb.register_uri(:get,
|
290
|
-
"
|
290
|
+
"https://foo:bar@api.tropo.com/v1/users/98765",
|
291
291
|
:body => nil,
|
292
292
|
:content_type => "application/json",
|
293
293
|
:status => ["404", "Got an error here!"])
|
294
294
|
|
295
295
|
# Get a specific user by username
|
296
296
|
FakeWeb.register_uri(:get,
|
297
|
-
"
|
297
|
+
"https://foo:bar@api.tropo.com/v1/users/foo",
|
298
298
|
:body => ActiveSupport::JSON.encode(@existing_user),
|
299
299
|
:content_type => "application/json",
|
300
300
|
:status => ["200", "OK"])
|
@@ -308,62 +308,62 @@ describe "TropoProvisioning" do
|
|
308
308
|
|
309
309
|
# Invalid credentials
|
310
310
|
FakeWeb.register_uri(:get,
|
311
|
-
"
|
311
|
+
"https://bad:password@api.tropo.com/v1/users/bad",
|
312
312
|
:content_type => "application/json",
|
313
313
|
:status => ["401", "Unauthorized"])
|
314
314
|
|
315
315
|
# Confirm an account account
|
316
316
|
FakeWeb.register_uri(:post,
|
317
|
-
"
|
317
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/confirmations",
|
318
318
|
:body => ActiveSupport::JSON.encode({"message" => "successfully confirmed user 12345" }),
|
319
319
|
:content_type => "application/json",
|
320
320
|
:status => ["200", "OK"])
|
321
321
|
|
322
322
|
# Return the payment method configured for a user
|
323
323
|
FakeWeb.register_uri(:get,
|
324
|
-
"
|
324
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/payment/method",
|
325
325
|
:body => ActiveSupport::JSON.encode(@payment_method),
|
326
326
|
:content_type => "application/json",
|
327
327
|
:status => ["200", "OK"])
|
328
328
|
|
329
329
|
# Return payment types
|
330
330
|
FakeWeb.register_uri(:get,
|
331
|
-
"
|
331
|
+
"https://foo:bar@api.tropo.com/v1/types/payment",
|
332
332
|
:body => ActiveSupport::JSON.encode(@payment_methods),
|
333
333
|
:content_type => "application/json",
|
334
334
|
:status => ["200", "OK"])
|
335
335
|
|
336
336
|
# Return features
|
337
337
|
FakeWeb.register_uri(:get,
|
338
|
-
"
|
338
|
+
"https://foo:bar@api.tropo.com/v1/features",
|
339
339
|
:body => ActiveSupport::JSON.encode(@features),
|
340
340
|
:content_type => "application/json",
|
341
341
|
:status => ["200", "OK"])
|
342
342
|
|
343
343
|
# Return features for a user
|
344
344
|
FakeWeb.register_uri(:get,
|
345
|
-
"
|
345
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/features",
|
346
346
|
:body => ActiveSupport::JSON.encode(@user_features),
|
347
347
|
:content_type => "application/json",
|
348
348
|
:status => ["200", "OK"])
|
349
349
|
|
350
350
|
# Add a feature to a user
|
351
351
|
FakeWeb.register_uri(:post,
|
352
|
-
"
|
352
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/features",
|
353
353
|
:body => ActiveSupport::JSON.encode(@feature),
|
354
354
|
:content_type => "application/json",
|
355
355
|
:status => ["200", "OK"])
|
356
356
|
|
357
357
|
# Add a feature to a user
|
358
358
|
FakeWeb.register_uri(:delete,
|
359
|
-
"
|
359
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/features/8",
|
360
360
|
:body => ActiveSupport::JSON.encode(@feature_delete_message),
|
361
361
|
:content_type => "application/json",
|
362
362
|
:status => ["200", "OK"])
|
363
363
|
|
364
364
|
# Add payment info to a user
|
365
365
|
FakeWeb.register_uri(:put,
|
366
|
-
"
|
366
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/payment/method",
|
367
367
|
:body => ActiveSupport::JSON.encode(@payment_info_message),
|
368
368
|
:content_type => "application/json",
|
369
369
|
:status => ["200", "OK"])
|
@@ -371,103 +371,103 @@ describe "TropoProvisioning" do
|
|
371
371
|
|
372
372
|
# List an account, with bad credentials
|
373
373
|
FakeWeb.register_uri(:get,
|
374
|
-
"
|
374
|
+
"https://evolution.voxeo.com/api/account/accesstoken/get.jsp?username=foobar7474&password=fooeyfooey",
|
375
375
|
:body => ActiveSupport::JSON.encode(@bad_account_creds),
|
376
376
|
:content_type => "application/json",
|
377
377
|
:status => ["403", "Invalid Login."])
|
378
378
|
|
379
379
|
# Get our search terms
|
380
380
|
FakeWeb.register_uri(:get,
|
381
|
-
"
|
381
|
+
"https://foo:bar@api.tropo.com/v1/users/?username=foobar",
|
382
382
|
:body => ActiveSupport::JSON.encode(@search_accounts),
|
383
383
|
:content_type => "application/json",
|
384
384
|
:status => ["200", "OK"])
|
385
385
|
|
386
386
|
# Payment resource
|
387
387
|
FakeWeb.register_uri(:post,
|
388
|
-
"
|
388
|
+
"https://foo:bar@api.tropo.com/v1/users/1234/payments",
|
389
389
|
:body => ActiveSupport::JSON.encode({ :message => "successfully posted payment for the amount 1.000000" }),
|
390
390
|
:content_type => "application/json",
|
391
391
|
:status => ["200", "OK"])
|
392
392
|
|
393
393
|
# Modify a user
|
394
394
|
FakeWeb.register_uri(:put,
|
395
|
-
"
|
395
|
+
"https://foo:bar@api.tropo.com/v1/users/12345",
|
396
396
|
:body => ActiveSupport::JSON.encode({ :href => "http://api-smsified-eng.voxeo.net/v1/users/12345" }),
|
397
397
|
:content_type => "application/json",
|
398
398
|
:status => ["200", "OK"])
|
399
399
|
|
400
400
|
# List available partitions
|
401
401
|
FakeWeb.register_uri(:get,
|
402
|
-
"
|
402
|
+
"https://foo:bar@api.tropo.com/v1/partitions",
|
403
403
|
:body => ActiveSupport::JSON.encode(@partitions),
|
404
404
|
:content_type => "application/json",
|
405
405
|
:status => ["200", "OK"])
|
406
406
|
|
407
407
|
# List available platforms
|
408
408
|
FakeWeb.register_uri(:get,
|
409
|
-
"
|
409
|
+
"https://foo:bar@api.tropo.com/v1/partitions/staging/platforms",
|
410
410
|
:body => ActiveSupport::JSON.encode(@platforms),
|
411
411
|
:content_type => "application/json",
|
412
412
|
:status => ["200", "OK"])
|
413
413
|
|
414
414
|
# List balance
|
415
415
|
FakeWeb.register_uri(:get,
|
416
|
-
"
|
416
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/usage",
|
417
417
|
:body => ActiveSupport::JSON.encode(@balance),
|
418
418
|
:content_type => "application/json",
|
419
419
|
:status => ["200", "OK"])
|
420
420
|
|
421
421
|
# Whitelist
|
422
422
|
FakeWeb.register_uri(:get,
|
423
|
-
"
|
423
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/partitions/production/platforms/sms/whitelist",
|
424
424
|
:body => ActiveSupport::JSON.encode(@whitelist),
|
425
425
|
:content_type => "application/json",
|
426
426
|
:status => ["200", "OK"])
|
427
427
|
# Whitelist
|
428
428
|
FakeWeb.register_uri(:get,
|
429
|
-
"
|
429
|
+
"https://foo:bar@api.tropo.com/v1/users/partitions/production/platforms/sms/whitelist",
|
430
430
|
:body => ActiveSupport::JSON.encode(@whitelist),
|
431
431
|
:content_type => "application/json",
|
432
432
|
:status => ["200", "OK"])
|
433
433
|
|
434
434
|
# Whitelist create
|
435
435
|
FakeWeb.register_uri(:post,
|
436
|
-
"
|
436
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/partitions/production/platforms/sms/whitelist",
|
437
437
|
:body => ActiveSupport::JSON.encode(@whitelist),
|
438
438
|
:content_type => "application/json",
|
439
439
|
:status => ["200", "OK"])
|
440
440
|
# Whitelist delete
|
441
441
|
FakeWeb.register_uri(:delete,
|
442
|
-
"
|
442
|
+
"https://foo:bar@api.tropo.com/v1/users/12345/partitions/production/platforms/sms/whitelist/14155551212",
|
443
443
|
:body => ActiveSupport::JSON.encode(@whitelist),
|
444
444
|
:content_type => "application/json",
|
445
445
|
:status => ["200", "OK"])
|
446
446
|
|
447
447
|
# Countries
|
448
448
|
FakeWeb.register_uri(:get,
|
449
|
-
"
|
449
|
+
"https://foo:bar@api.tropo.com/v1/countries",
|
450
450
|
:body => ActiveSupport::JSON.encode(@countries),
|
451
451
|
:content_type => "application/json",
|
452
452
|
:status => ["200", "OK"])
|
453
453
|
|
454
454
|
# States
|
455
455
|
FakeWeb.register_uri(:get,
|
456
|
-
"
|
456
|
+
"https://foo:bar@api.tropo.com/v1/countries/36/states",
|
457
457
|
:body => ActiveSupport::JSON.encode(@states),
|
458
458
|
:content_type => "application/json",
|
459
459
|
:status => ["200", "OK"])
|
460
460
|
|
461
461
|
# Recurrency get
|
462
462
|
FakeWeb.register_uri(:get,
|
463
|
-
"
|
463
|
+
"https://foo:bar@api.tropo.com/v1/users/1234/payment/recurrence",
|
464
464
|
:body => ActiveSupport::JSON.encode(@recurrence),
|
465
465
|
:content_type => "application/json",
|
466
466
|
:status => ["200", "OK"])
|
467
467
|
|
468
468
|
# Recurrency update
|
469
469
|
FakeWeb.register_uri(:put,
|
470
|
-
"
|
470
|
+
"https://foo:bar@api.tropo.com/v1/users/1234/payment/recurrence",
|
471
471
|
:body => ActiveSupport::JSON.encode(@recurrence_updated),
|
472
472
|
:content_type => "application/json",
|
473
473
|
:status => ["200", "OK"])
|
@@ -479,63 +479,63 @@ describe "TropoProvisioning" do
|
|
479
479
|
|
480
480
|
# List invitations
|
481
481
|
FakeWeb.register_uri(:get,
|
482
|
-
"
|
482
|
+
"https://foo:bar@api.tropo.com/v1/invitations",
|
483
483
|
:body => ActiveSupport::JSON.encode(@invitations),
|
484
484
|
:content_type => "application/json",
|
485
485
|
:status => ["200", "OK"])
|
486
486
|
|
487
487
|
# Get an invitation
|
488
488
|
FakeWeb.register_uri(:get,
|
489
|
-
"
|
489
|
+
"https://foo:bar@api.tropo.com/v1/invitations/ABC457",
|
490
490
|
:body => ActiveSupport::JSON.encode(@invitations[1]),
|
491
491
|
:content_type => "application/json",
|
492
492
|
:status => ["200", "OK"])
|
493
493
|
|
494
494
|
# Update an invitation
|
495
495
|
FakeWeb.register_uri(:put,
|
496
|
-
"
|
496
|
+
"https://foo:bar@api.tropo.com/v1/invitations/ABC457",
|
497
497
|
:body => ActiveSupport::JSON.encode(@invitation_created),
|
498
498
|
:content_type => "application/json",
|
499
499
|
:status => ["200", "OK"])
|
500
500
|
|
501
501
|
# Update an invitation
|
502
502
|
FakeWeb.register_uri(:put,
|
503
|
-
"
|
503
|
+
"https://foo:bar@api.tropo.com/v1/users/15909/invitations/ABC457",
|
504
504
|
:body => ActiveSupport::JSON.encode(@invitation_created),
|
505
505
|
:content_type => "application/json",
|
506
506
|
:status => ["200", "OK"])
|
507
507
|
|
508
508
|
# Delete an invitation
|
509
509
|
FakeWeb.register_uri(:delete,
|
510
|
-
"
|
510
|
+
"https://foo:bar@api.tropo.com/v1/invitations/ABC457",
|
511
511
|
:body => ActiveSupport::JSON.encode(@deleted_invitation),
|
512
512
|
:content_type => "application/json",
|
513
513
|
:status => ["200", "OK"])
|
514
514
|
|
515
515
|
# Delete an invitation
|
516
516
|
FakeWeb.register_uri(:delete,
|
517
|
-
"
|
517
|
+
"https://foo:bar@api.tropo.com/v1/users/15909/invitations/ABC457",
|
518
518
|
:body => ActiveSupport::JSON.encode(@deleted_invitation),
|
519
519
|
:content_type => "application/json",
|
520
520
|
:status => ["200", "OK"])
|
521
521
|
|
522
522
|
# Create invitation
|
523
523
|
FakeWeb.register_uri(:post,
|
524
|
-
"
|
524
|
+
"https://foo:bar@api.tropo.com/v1/invitations",
|
525
525
|
:body => ActiveSupport::JSON.encode(@invitation_created),
|
526
526
|
:content_type => "application/json",
|
527
527
|
:status => ["200", "OK"])
|
528
528
|
|
529
529
|
# Create invitation
|
530
530
|
FakeWeb.register_uri(:post,
|
531
|
-
"
|
531
|
+
"https://foo:bar@api.tropo.com/v1/users/15909/invitations",
|
532
532
|
:body => ActiveSupport::JSON.encode(@invitation_created),
|
533
533
|
:content_type => "application/json",
|
534
534
|
:status => ["200", "OK"])
|
535
535
|
|
536
536
|
# List invitation for a user
|
537
537
|
FakeWeb.register_uri(:get,
|
538
|
-
"
|
538
|
+
"https://foo:bar@api.tropo.com/v1/users/15909/invitations",
|
539
539
|
:body => ActiveSupport::JSON.encode([@invitation_created]),
|
540
540
|
:content_type => "application/json",
|
541
541
|
:status => ["200", "OK"])
|
@@ -549,7 +549,7 @@ describe "TropoProvisioning" do
|
|
549
549
|
|
550
550
|
# List invitation for a user
|
551
551
|
FakeWeb.register_uri(:get,
|
552
|
-
"
|
552
|
+
"https://foo:bar@api.tropo.com/v1/users/15909/invitations/ABC457",
|
553
553
|
:body => ActiveSupport::JSON.encode(@invitations[1]),
|
554
554
|
:content_type => "application/json",
|
555
555
|
:status => ["200", "OK"])
|
@@ -557,7 +557,7 @@ describe "TropoProvisioning" do
|
|
557
557
|
@username_check = { 'available' => false, 'href' => "http://api.smsified.com/v1/usernames/jsgoecke", 'valid' => true }
|
558
558
|
# List invitation for a user
|
559
559
|
FakeWeb.register_uri(:get,
|
560
|
-
"
|
560
|
+
"https://foo:bar@api.tropo.com/v1/usernames/12345",
|
561
561
|
:body => ActiveSupport::JSON.encode(@username_check),
|
562
562
|
:content_type => "application/json",
|
563
563
|
:status => ["200", "OK"])
|
@@ -808,17 +808,21 @@ describe "TropoProvisioning" do
|
|
808
808
|
end
|
809
809
|
end
|
810
810
|
|
811
|
-
it "should add appropriate
|
811
|
+
it "should add appropriate number address" do
|
812
812
|
# Add a address based on a prefix
|
813
813
|
result = tropo_provisioning.create_address('108000', { :type => 'number', :prefix => '1303' })
|
814
814
|
result[:href].should == "http://api.tropo.com/v1/applications/108000/addresses/number/7202551912"
|
815
815
|
result[:address].should == '7202551912'
|
816
|
+
end
|
816
817
|
|
818
|
+
it "should add appropriate jabber address" do
|
817
819
|
# Add a jabber account
|
818
820
|
result = tropo_provisioning.create_address('108001', { :type => 'jabber', :username => 'xyz123@bot.im' })
|
819
821
|
result[:href].should == "http://api.tropo.com/v1/applications/108001/addresses/jabber/xyz123@bot.im"
|
820
822
|
result[:address].should == 'xyz123@bot.im'
|
821
|
-
|
823
|
+
end
|
824
|
+
|
825
|
+
it "should add appropriate token address" do
|
822
826
|
# Add a token
|
823
827
|
result = tropo_provisioning.create_address('108002', { :type => 'token', :channel => 'voice' })
|
824
828
|
result[:href].should == "http://api.tropo.com/v1/applications/108002/addresses/token/12345679f90bac47a05b178c37d3c68aaf38d5bdbc5aba0c7abb12345d8a9fd13f1234c1234567dbe2c6f63b"
|
data/tropo-provisioning.gemspec
CHANGED
@@ -27,9 +27,11 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_development_dependency("fakeweb")
|
28
28
|
s.add_development_dependency("yard")
|
29
29
|
s.add_development_dependency("rdoc")
|
30
|
+
s.add_development_dependency("rake")
|
30
31
|
|
31
32
|
s.add_runtime_dependency("hashie", ">= 0.2.1")
|
32
33
|
s.add_runtime_dependency("activesupport")
|
33
34
|
s.add_runtime_dependency("i18n")
|
35
|
+
s.add_runtime_dependency("json") if RUBY_VERSION =~ /1.8/
|
34
36
|
end
|
35
37
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tropo-provisioning
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.23
|
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-09-05 00:00:00.
|
13
|
+
date: 2011-09-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
17
|
-
requirement: &
|
17
|
+
requirement: &70314617321460 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70314617321460
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: fakeweb
|
28
|
-
requirement: &
|
28
|
+
requirement: &70314617320080 !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: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70314617320080
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: yard
|
39
|
-
requirement: &
|
39
|
+
requirement: &70314617319300 !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: *70314617319300
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rdoc
|
50
|
-
requirement: &
|
50
|
+
requirement: &70314617318680 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,21 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70314617318680
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rake
|
61
|
+
requirement: &70314617330920 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
type: :development
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: *70314617330920
|
59
70
|
- !ruby/object:Gem::Dependency
|
60
71
|
name: hashie
|
61
|
-
requirement: &
|
72
|
+
requirement: &70314617329260 !ruby/object:Gem::Requirement
|
62
73
|
none: false
|
63
74
|
requirements:
|
64
75
|
- - ! '>='
|
@@ -66,10 +77,10 @@ dependencies:
|
|
66
77
|
version: 0.2.1
|
67
78
|
type: :runtime
|
68
79
|
prerelease: false
|
69
|
-
version_requirements: *
|
80
|
+
version_requirements: *70314617329260
|
70
81
|
- !ruby/object:Gem::Dependency
|
71
82
|
name: activesupport
|
72
|
-
requirement: &
|
83
|
+
requirement: &70314617327680 !ruby/object:Gem::Requirement
|
73
84
|
none: false
|
74
85
|
requirements:
|
75
86
|
- - ! '>='
|
@@ -77,10 +88,10 @@ dependencies:
|
|
77
88
|
version: '0'
|
78
89
|
type: :runtime
|
79
90
|
prerelease: false
|
80
|
-
version_requirements: *
|
91
|
+
version_requirements: *70314617327680
|
81
92
|
- !ruby/object:Gem::Dependency
|
82
93
|
name: i18n
|
83
|
-
requirement: &
|
94
|
+
requirement: &70314617326680 !ruby/object:Gem::Requirement
|
84
95
|
none: false
|
85
96
|
requirements:
|
86
97
|
- - ! '>='
|
@@ -88,7 +99,7 @@ dependencies:
|
|
88
99
|
version: '0'
|
89
100
|
type: :runtime
|
90
101
|
prerelease: false
|
91
|
-
version_requirements: *
|
102
|
+
version_requirements: *70314617326680
|
92
103
|
description: Library for interacting with the Tropo Provisioning API
|
93
104
|
email:
|
94
105
|
- jsgoecke@voxeo.com
|
@@ -158,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
169
|
version: '0'
|
159
170
|
requirements: []
|
160
171
|
rubyforge_project: tropo-provisioning
|
161
|
-
rubygems_version: 1.8.
|
172
|
+
rubygems_version: 1.8.10
|
162
173
|
signing_key:
|
163
174
|
specification_version: 3
|
164
175
|
summary: Library for interacting with the Tropo Provisioning API
|