tropo-provisioning 0.0.23 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +19 -18
- data/README.rdoc +1 -1
- data/lib/tropo-provisioning/tropo_client.rb +19 -20
- data/lib/tropo-provisioning/tropo_provisioning.rb +106 -106
- data/lib/tropo-provisioning/version.rb +2 -2
- data/spec/spec_helper.rb +2 -0
- data/spec/tropo-provisioning_spec.rb +433 -415
- metadata +65 -18
@@ -5,39 +5,39 @@ require 'active_support/inflector'
|
|
5
5
|
# This class is a wrapper that allows an easy way to access Tropo HTTP Provisioning API
|
6
6
|
# It defines a set of methods to create, update, retrieve or delete different kind of resources.
|
7
7
|
class TropoProvisioning
|
8
|
-
|
8
|
+
|
9
9
|
autoload :TropoClient, 'tropo-provisioning/tropo_client'
|
10
10
|
autoload :TropoError, 'tropo-provisioning/tropo_error'
|
11
|
-
|
11
|
+
|
12
12
|
# Defaults for the creation of applications
|
13
13
|
DEFAULT_OPTIONS = { :partition => 'staging', :platform => 'scripting' }
|
14
|
-
|
14
|
+
|
15
15
|
# Array of supported platforms in Tropo
|
16
16
|
VALID_PLATFORMS = %w(scripting webapi)
|
17
17
|
# Array of supported partitions in Tropo
|
18
18
|
VALID_PARTITIONS = %w(staging production)
|
19
|
-
|
20
|
-
attr_reader :user_data
|
21
|
-
|
19
|
+
|
20
|
+
attr_reader :user_data, :base_uri
|
21
|
+
|
22
22
|
##
|
23
23
|
# Creates a new TropoProvisioning object
|
24
24
|
#
|
25
25
|
# ==== Parameters
|
26
26
|
# * [required, String] username for your Tropo user
|
27
27
|
# * [required, String] password for your Tropo user
|
28
|
-
# * [optional, Hash] params
|
28
|
+
# * [optional, Hash] params
|
29
29
|
# * [optional, String] :base_uri to use for accessing the provisioning API if you would like a custom one
|
30
30
|
#
|
31
31
|
# ==== Return
|
32
32
|
#
|
33
33
|
# TropoProvisioning object
|
34
|
-
def initialize(username, password, params={})
|
35
|
-
base_uri
|
36
|
-
proxy
|
37
|
-
@tropo_client
|
34
|
+
def initialize(username, password, params={})
|
35
|
+
@base_uri = (params[:base_uri] || "https://api.tropo.com/v1/").sub(/(\/)+$/,'/')
|
36
|
+
proxy = params[:proxy] || nil
|
37
|
+
@tropo_client = TropoClient.new(username, password, @base_uri, { 'Content-Type' => 'application/json' }, proxy)
|
38
38
|
user(username)
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
##
|
42
42
|
# Retrieves specific user information
|
43
43
|
# ==== Parameters
|
@@ -50,15 +50,15 @@ class TropoProvisioning
|
|
50
50
|
end
|
51
51
|
temp_request("/#{action}.jsp?username=#{username}&password=#{password}")
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
##
|
55
55
|
# Username used for HTTP authentication (valid Tropo user)
|
56
56
|
def username
|
57
57
|
@tropo_client.username
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
alias :authenticate_account :account
|
61
|
-
|
61
|
+
|
62
62
|
##
|
63
63
|
# Obtain information about a user
|
64
64
|
#
|
@@ -76,7 +76,7 @@ class TropoProvisioning
|
|
76
76
|
end
|
77
77
|
result
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
##
|
81
81
|
# Confirms a user after they have been created. For example, you may want to email your user to make
|
82
82
|
# sure they are real before activating the user.
|
@@ -93,7 +93,7 @@ class TropoProvisioning
|
|
93
93
|
params = { :key => confirmation_key, :endUserHost => ip_address }
|
94
94
|
@tropo_client.post("users/#{user_id}/confirmations", params)
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
##
|
98
98
|
# Creates a new user in a pending state. Once you receive the href/user_id/confirmation_key
|
99
99
|
# you may then invoke the confirm_user method once you have taken appropriate steps to confirm the
|
@@ -104,8 +104,8 @@ class TropoProvisioning
|
|
104
104
|
# * [required, String] :username the name of the user to create the user for
|
105
105
|
# * [required, String] :password the password to use for the user
|
106
106
|
# * [required, String] :email the email address to use
|
107
|
-
# * [
|
108
|
-
# * [
|
107
|
+
# * [required, String] :first_name of the user
|
108
|
+
# * [required, String] :last_name of the user
|
109
109
|
# * [optional, String] :website the URL of the user's website
|
110
110
|
# * [optional, String] :organization of the user, such as a company name
|
111
111
|
# * [optional, String] :job_title of the user
|
@@ -125,11 +125,11 @@ class TropoProvisioning
|
|
125
125
|
# * [ArgumentError]
|
126
126
|
# if missing the :username, :password or :email parameters
|
127
127
|
def create_user(params={})
|
128
|
-
validate_params(params, %w(username password email))
|
129
|
-
|
128
|
+
validate_params(params, %w(username password first_name last_name email))
|
129
|
+
|
130
130
|
# Set the Company Branding ID, or use default
|
131
|
-
params[:website] = 'tropo' unless params[:website]
|
132
|
-
|
131
|
+
params[:website] = 'tropo' unless params[:website]
|
132
|
+
|
133
133
|
result = @tropo_client.post("users", params)
|
134
134
|
result[:user_id] = get_element(result.href)
|
135
135
|
result[:confirmation_key] = result['confirmationKey']
|
@@ -155,7 +155,7 @@ class TropoProvisioning
|
|
155
155
|
end
|
156
156
|
result
|
157
157
|
end
|
158
|
-
|
158
|
+
|
159
159
|
##
|
160
160
|
# Allows you to search users to find a list of users
|
161
161
|
#
|
@@ -184,11 +184,11 @@ class TropoProvisioning
|
|
184
184
|
# * [required, String] a username to check
|
185
185
|
# ==== Return
|
186
186
|
# * [Array]
|
187
|
-
# a hash containing an array of hashes with the qualifying account details
|
187
|
+
# a hash containing an array of hashes with the qualifying account details
|
188
188
|
def username_exists?(username)
|
189
189
|
@tropo_client.get("usernames/#{username}")
|
190
190
|
end
|
191
|
-
|
191
|
+
|
192
192
|
##
|
193
193
|
# Fetches the payment information for a user
|
194
194
|
#
|
@@ -203,7 +203,7 @@ class TropoProvisioning
|
|
203
203
|
result.merge!({ :id => get_element(result.paymentType) })
|
204
204
|
result
|
205
205
|
end
|
206
|
-
|
206
|
+
|
207
207
|
##
|
208
208
|
# Lists the available payment types
|
209
209
|
#
|
@@ -213,7 +213,7 @@ class TropoProvisioning
|
|
213
213
|
def available_payment_types
|
214
214
|
@tropo_client.get("types/payment")
|
215
215
|
end
|
216
|
-
|
216
|
+
|
217
217
|
##
|
218
218
|
# Obtain the current balance of a user
|
219
219
|
#
|
@@ -226,7 +226,7 @@ class TropoProvisioning
|
|
226
226
|
def balance(user_id)
|
227
227
|
@tropo_client.get("users/#{user_id}/usage")
|
228
228
|
end
|
229
|
-
|
229
|
+
|
230
230
|
##
|
231
231
|
# Return the list of available countries
|
232
232
|
#
|
@@ -237,7 +237,7 @@ class TropoProvisioning
|
|
237
237
|
result = @tropo_client.get("countries")
|
238
238
|
add_ids(result)
|
239
239
|
end
|
240
|
-
|
240
|
+
|
241
241
|
##
|
242
242
|
# Return the list of available states for a country
|
243
243
|
#
|
@@ -248,7 +248,7 @@ class TropoProvisioning
|
|
248
248
|
result = @tropo_client.get("countries/#{id}/states")
|
249
249
|
add_ids(result)
|
250
250
|
end
|
251
|
-
|
251
|
+
|
252
252
|
##
|
253
253
|
# Lists the available features
|
254
254
|
#
|
@@ -268,7 +268,7 @@ class TropoProvisioning
|
|
268
268
|
def user_features(user_id)
|
269
269
|
@tropo_client.get("users/#{user_id}/features")
|
270
270
|
end
|
271
|
-
|
271
|
+
|
272
272
|
##
|
273
273
|
# Enable a particular feature for a user
|
274
274
|
#
|
@@ -282,7 +282,7 @@ class TropoProvisioning
|
|
282
282
|
def user_enable_feature(user_id, feature)
|
283
283
|
@tropo_client.post("users/#{user_id}/features", { :feature => feature })
|
284
284
|
end
|
285
|
-
|
285
|
+
|
286
286
|
##
|
287
287
|
# Disable a particular feature for a user
|
288
288
|
#
|
@@ -296,7 +296,7 @@ class TropoProvisioning
|
|
296
296
|
def user_disable_feature(user_id, feature_number)
|
297
297
|
@tropo_client.delete("users/#{user_id}/features/#{feature_number}")
|
298
298
|
end
|
299
|
-
|
299
|
+
|
300
300
|
##
|
301
301
|
# Add/modify payment info for a user
|
302
302
|
#
|
@@ -305,7 +305,7 @@ class TropoProvisioning
|
|
305
305
|
# * [require, Hash] params the params to add the payment info
|
306
306
|
# * [:account_number] [required, String] the credit card number
|
307
307
|
# * [required, String] :payment_type the type, such as visa, mastercard, etc
|
308
|
-
# * [required, String] :address
|
308
|
+
# * [required, String] :address
|
309
309
|
# * [optional, String] :address2
|
310
310
|
# * [required, String] :city
|
311
311
|
# * [required, String] :state
|
@@ -327,10 +327,10 @@ class TropoProvisioning
|
|
327
327
|
@tropo_client.put("users/#{user_id}/payment/method", params)
|
328
328
|
end
|
329
329
|
alias :modify_payment_info :add_payment_info
|
330
|
-
|
330
|
+
|
331
331
|
##
|
332
332
|
# Add/modify recurring fund amount and threshold
|
333
|
-
#
|
333
|
+
#
|
334
334
|
# ==== Parameters
|
335
335
|
# * [required, String] user_id to add the payment details for
|
336
336
|
# * [require, Hash] params the params to add the recurrence
|
@@ -341,13 +341,13 @@ class TropoProvisioning
|
|
341
341
|
# * [Hash]
|
342
342
|
def update_recurrence(user_id, params={})
|
343
343
|
validate_params(params, %w(recharge_amount threshold_percentage))
|
344
|
-
|
344
|
+
|
345
345
|
@tropo_client.put("users/#{user_id}/payment/recurrence", params)
|
346
346
|
end
|
347
|
-
|
347
|
+
|
348
348
|
##
|
349
349
|
# Add/modify recurring fund amount and threshold
|
350
|
-
#
|
350
|
+
#
|
351
351
|
# ==== Parameters
|
352
352
|
# * [required, String] user_id to get the recurrence info for
|
353
353
|
#
|
@@ -356,7 +356,7 @@ class TropoProvisioning
|
|
356
356
|
def get_recurrence(user_id)
|
357
357
|
result = @tropo_client.get("users/#{user_id}/payment/recurrence")
|
358
358
|
end
|
359
|
-
|
359
|
+
|
360
360
|
##
|
361
361
|
# Makes a payment on behalf of a user
|
362
362
|
#
|
@@ -369,10 +369,10 @@ class TropoProvisioning
|
|
369
369
|
# a message with the success or failure of the payment
|
370
370
|
def make_payment(user_id, amount)
|
371
371
|
amount.instance_of?(Float) or raise ArgumentError, 'amount must be of type Float'
|
372
|
-
|
372
|
+
|
373
373
|
@tropo_client.post("users/#{user_id}/payments", { :amount => amount })
|
374
374
|
end
|
375
|
-
|
375
|
+
|
376
376
|
##
|
377
377
|
# Creates an address to an existing application
|
378
378
|
#
|
@@ -384,18 +384,18 @@ class TropoProvisioning
|
|
384
384
|
# * [String] :username the messaging/IM account's username
|
385
385
|
# * [String] :password the messaging/IM account's password
|
386
386
|
#
|
387
|
-
# ==== Return
|
387
|
+
# ==== *Return*
|
388
388
|
# * [Hash] params the key/values that make up the application
|
389
389
|
# * [String] :href identifies the address that was added, refer to address method for details
|
390
390
|
# * [String] :address the address that was created
|
391
391
|
def create_address(application_id, params={})
|
392
392
|
validate_address_parameters(params)
|
393
|
-
|
393
|
+
|
394
394
|
result = @tropo_client.post("applications/#{application_id.to_s}/addresses", params)
|
395
395
|
result[:address] = get_element(result.href)
|
396
396
|
result
|
397
397
|
end
|
398
|
-
|
398
|
+
|
399
399
|
##
|
400
400
|
# Get a specific application
|
401
401
|
#
|
@@ -420,7 +420,7 @@ class TropoProvisioning
|
|
420
420
|
app.merge!({ :application_id => get_element(href) })
|
421
421
|
end
|
422
422
|
end
|
423
|
-
|
423
|
+
|
424
424
|
##
|
425
425
|
# Fetches all of the applications configured for a user
|
426
426
|
#
|
@@ -434,7 +434,7 @@ class TropoProvisioning
|
|
434
434
|
end
|
435
435
|
result_with_ids
|
436
436
|
end
|
437
|
-
|
437
|
+
|
438
438
|
##
|
439
439
|
# Fetches the application(s) with the associated addresses in the hash
|
440
440
|
#
|
@@ -455,7 +455,7 @@ class TropoProvisioning
|
|
455
455
|
end
|
456
456
|
end
|
457
457
|
alias :application_with_address :applications_with_addresses
|
458
|
-
|
458
|
+
|
459
459
|
##
|
460
460
|
# Create a new application
|
461
461
|
#
|
@@ -476,7 +476,7 @@ class TropoProvisioning
|
|
476
476
|
result[:application_id] = get_element(result.href)
|
477
477
|
result
|
478
478
|
end
|
479
|
-
|
479
|
+
|
480
480
|
##
|
481
481
|
# Deletes an application
|
482
482
|
#
|
@@ -488,7 +488,7 @@ class TropoProvisioning
|
|
488
488
|
def delete_application(application_id)
|
489
489
|
@tropo_client.delete("applications/#{application_id.to_s}")
|
490
490
|
end
|
491
|
-
|
491
|
+
|
492
492
|
##
|
493
493
|
# Deletes a address from a specific application
|
494
494
|
#
|
@@ -497,10 +497,10 @@ class TropoProvisioning
|
|
497
497
|
# * [String] address_id for the address
|
498
498
|
def delete_address(application_id, address_id)
|
499
499
|
address_to_delete = address(application_id, address_id)
|
500
|
-
|
500
|
+
|
501
501
|
@tropo_client.delete("applications/#{application_id.to_s}/addresses/#{address_to_delete['type']}/#{address_id.to_s}")
|
502
502
|
end
|
503
|
-
|
503
|
+
|
504
504
|
##
|
505
505
|
# Provides a list of available exchanges to obtain Numbers from
|
506
506
|
#
|
@@ -509,7 +509,7 @@ class TropoProvisioning
|
|
509
509
|
def exchanges
|
510
510
|
@tropo_client.get("exchanges")
|
511
511
|
end
|
512
|
-
|
512
|
+
|
513
513
|
##
|
514
514
|
# Used to move a address between one application and another
|
515
515
|
#
|
@@ -520,7 +520,7 @@ class TropoProvisioning
|
|
520
520
|
# * [required, String] :address
|
521
521
|
def move_address(params={})
|
522
522
|
validate_params(params, %w(from to address))
|
523
|
-
|
523
|
+
|
524
524
|
begin
|
525
525
|
address_to_move = address(params[:from], params[:address])
|
526
526
|
delete_address(params[:from], params[:address])
|
@@ -529,7 +529,7 @@ class TropoProvisioning
|
|
529
529
|
raise RuntimeError, 'Unable to move the address'
|
530
530
|
end
|
531
531
|
end
|
532
|
-
|
532
|
+
|
533
533
|
##
|
534
534
|
# Get a specific address for an application
|
535
535
|
#
|
@@ -554,13 +554,13 @@ class TropoProvisioning
|
|
554
554
|
# * [String] :password the messaging/IM account's password
|
555
555
|
# * [String] :token alphanumeric string that identifies your Tropo application, used with the Session API
|
556
556
|
def address(application_id, address_id)
|
557
|
-
addresses(application_id).each { |address| return address if address['number'] == address_id ||
|
558
|
-
|
559
|
-
|
560
|
-
|
557
|
+
addresses(application_id).each { |address| return address if address['number'] == address_id ||
|
558
|
+
address['username'] == address_id ||
|
559
|
+
address['pin'] == address_id ||
|
560
|
+
address['token'] == address_id }
|
561
561
|
raise RuntimeError, 'Address not found with that application.'
|
562
562
|
end
|
563
|
-
|
563
|
+
|
564
564
|
##
|
565
565
|
# Get all of the configured addresses for an application
|
566
566
|
#
|
@@ -572,7 +572,7 @@ class TropoProvisioning
|
|
572
572
|
def addresses(application_id)
|
573
573
|
@tropo_client.get("applications/#{application_id.to_s}/addresses")
|
574
574
|
end
|
575
|
-
|
575
|
+
|
576
576
|
##
|
577
577
|
# Updated an existing application
|
578
578
|
#
|
@@ -590,7 +590,7 @@ class TropoProvisioning
|
|
590
590
|
def update_application(application_id, params={})
|
591
591
|
@tropo_client.put("applications/#{application_id.to_s}", params )
|
592
592
|
end
|
593
|
-
|
593
|
+
|
594
594
|
##
|
595
595
|
# Fetch all invitations, or invitations by user
|
596
596
|
#
|
@@ -609,7 +609,7 @@ class TropoProvisioning
|
|
609
609
|
end
|
610
610
|
end
|
611
611
|
alias :user_invitations :invitations
|
612
|
-
|
612
|
+
|
613
613
|
##
|
614
614
|
# Fetch an invitation
|
615
615
|
#
|
@@ -625,12 +625,12 @@ class TropoProvisioning
|
|
625
625
|
# * [Hash] return an invitation
|
626
626
|
def invitation(invitation_id, user_id = nil)
|
627
627
|
path = user_id.nil? ? "invitations/#{invitation_id}" : "users/#{user_id}/invitations/#{invitation_id}"
|
628
|
-
|
628
|
+
|
629
629
|
@tropo_client.get(path)
|
630
630
|
end
|
631
631
|
|
632
632
|
alias :user_invitation :invitation
|
633
|
-
|
633
|
+
|
634
634
|
##
|
635
635
|
# Fetch an invitation
|
636
636
|
#
|
@@ -646,30 +646,30 @@ class TropoProvisioning
|
|
646
646
|
# * [Hash] return an invitation
|
647
647
|
def delete_invitation(invitation_id, user_id = nil)
|
648
648
|
path = user_id.nil? ? "invitations/#{invitation_id}" : "users/#{user_id}/invitations/#{invitation_id}"
|
649
|
-
|
649
|
+
|
650
650
|
@tropo_client.delete(path)
|
651
651
|
end
|
652
652
|
|
653
653
|
alias :delete_user_invitation :delete_invitation
|
654
|
-
|
654
|
+
|
655
655
|
##
|
656
656
|
# Create an invitation
|
657
657
|
#
|
658
658
|
# @overload def create_invitation(options)
|
659
659
|
# ==== Parameters
|
660
660
|
# * [required, Hash] params the parameters used to create the application
|
661
|
-
# * [optional, String] :code the invitation code (defaults to a random alphanum string of length 6 if not specified on POST)
|
662
|
-
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
663
|
-
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
661
|
+
# * [optional, String] :code the invitation code (defaults to a random alphanum string of length 6 if not specified on POST)
|
662
|
+
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
663
|
+
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
664
664
|
# * [optional, String] :partition whether to create in staging or production
|
665
|
-
# * [optional, String] :owner URI identifying the user to which this invite code belongs (optional - null implies this is a "global" code)
|
665
|
+
# * [optional, String] :owner URI identifying the user to which this invite code belongs (optional - null implies this is a "global" code)
|
666
666
|
# @overload def create_user_invitation(user_id, options)
|
667
667
|
# ==== Parameters
|
668
668
|
# * [requried, String] user_id to create the invitation for
|
669
669
|
# * [required, Hash] params the parameters used to create the application
|
670
|
-
# * [optional, String] :code the invitation code (defaults to a random alphanum string of length 6 if not specified on POST)
|
671
|
-
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
672
|
-
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
670
|
+
# * [optional, String] :code the invitation code (defaults to a random alphanum string of length 6 if not specified on POST)
|
671
|
+
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
672
|
+
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
673
673
|
# * [optional, String] :partition whether to create in staging or production
|
674
674
|
# * [optional, String] :owner URI identifying the user to which this invite code belongs (optional - null implies this is a "global" code)
|
675
675
|
#
|
@@ -683,7 +683,7 @@ class TropoProvisioning
|
|
683
683
|
end
|
684
684
|
end
|
685
685
|
alias :create_user_invitation :create_invitation
|
686
|
-
|
686
|
+
|
687
687
|
##
|
688
688
|
# Update an invitation
|
689
689
|
#
|
@@ -691,17 +691,17 @@ class TropoProvisioning
|
|
691
691
|
# ==== Parameters
|
692
692
|
# * [required, String] id of the invitation to udpate (code)
|
693
693
|
# * [required, Hash] params the parameters used to update the application
|
694
|
-
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
695
|
-
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
694
|
+
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
695
|
+
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
696
696
|
# * [optional, String] :partition whether to create in staging or production
|
697
|
-
# * [optional, String] :owner URI identifying the user to which this invite code belongs (optional - null implies this is a "global" code)
|
697
|
+
# * [optional, String] :owner URI identifying the user to which this invite code belongs (optional - null implies this is a "global" code)
|
698
698
|
# @overload def updated_user_invitation(invitation_id, user_id, options)
|
699
699
|
# ==== Parameters
|
700
700
|
# * [required, String] id of the invitation to udpate (code)
|
701
701
|
# * [required, String] id of the user to update the invitation code for
|
702
702
|
# * [required, Hash] params the parameters used to update the application
|
703
|
-
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
704
|
-
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
703
|
+
# * [optional, String] :count the number of accounts that may signup with this code (decrements on each signup)
|
704
|
+
# * [optional, String] :credit starting account balance for users who signup with this code (replaces the default for the brand)
|
705
705
|
# * [optional, String] :partition whether to create in staging or production
|
706
706
|
# * [optional, String] :owner URI identifying the user to which this invite code belongs (optional - null implies this is a "global" code)
|
707
707
|
#
|
@@ -715,7 +715,7 @@ class TropoProvisioning
|
|
715
715
|
end
|
716
716
|
end
|
717
717
|
alias :update_user_invitation :update_invitation
|
718
|
-
|
718
|
+
|
719
719
|
##
|
720
720
|
# Get the available partitions available
|
721
721
|
#
|
@@ -725,7 +725,7 @@ class TropoProvisioning
|
|
725
725
|
def partitions
|
726
726
|
@tropo_client.get("partitions")
|
727
727
|
end
|
728
|
-
|
728
|
+
|
729
729
|
##
|
730
730
|
# Get the available platforms available under a certain partition
|
731
731
|
#
|
@@ -737,7 +737,7 @@ class TropoProvisioning
|
|
737
737
|
def platforms(partition)
|
738
738
|
@tropo_client.get("partitions/#{partition}/platforms")
|
739
739
|
end
|
740
|
-
|
740
|
+
|
741
741
|
##
|
742
742
|
# Get the whitelist of the numbers on a particular users list
|
743
743
|
#
|
@@ -749,10 +749,10 @@ class TropoProvisioning
|
|
749
749
|
# the href and value containing the number on the whitelist
|
750
750
|
def whitelist(user_id = nil)
|
751
751
|
resource = user_id.nil? ? "users/partitions/production/platforms/sms/whitelist" : "users/#{user_id}/partitions/production/platforms/sms/whitelist"
|
752
|
-
|
752
|
+
|
753
753
|
@tropo_client.get(resource)
|
754
754
|
end
|
755
|
-
|
755
|
+
|
756
756
|
##
|
757
757
|
# Add to a whitelist for a particular user
|
758
758
|
#
|
@@ -763,11 +763,11 @@ class TropoProvisioning
|
|
763
763
|
#
|
764
764
|
# ==== Return
|
765
765
|
# * [Hash]
|
766
|
-
# the href
|
766
|
+
# the href
|
767
767
|
def add_whitelist(params={})
|
768
|
-
resource = params.has_key?(:user_id) ?
|
769
|
-
|
770
|
-
|
768
|
+
resource = params.has_key?(:user_id) ?
|
769
|
+
"users/#{params[:user_id]}/partitions/production/platforms/sms/whitelist" :
|
770
|
+
"users/partitions/production/platforms/sms/whitelist"
|
771
771
|
@tropo_client.post(resource, {:value => params[:value]})
|
772
772
|
end
|
773
773
|
|
@@ -780,15 +780,15 @@ class TropoProvisioning
|
|
780
780
|
#
|
781
781
|
# ==== Return
|
782
782
|
# * [Hash]
|
783
|
-
# the href
|
783
|
+
# the href
|
784
784
|
def delete_whitelist(params={})
|
785
785
|
resource = params.has_key?(:user_id) ? "users/#{params[:user_id]}/partitions/production/platforms/sms/whitelist/" : "users/partitions/production/platforms/sms/whitelist/"
|
786
786
|
|
787
787
|
@tropo_client.delete("#{resource}#{params[:value]}")
|
788
788
|
end
|
789
|
-
|
789
|
+
|
790
790
|
private
|
791
|
-
|
791
|
+
|
792
792
|
##
|
793
793
|
# Returns the current method name
|
794
794
|
#
|
@@ -797,13 +797,13 @@ class TropoProvisioning
|
|
797
797
|
def current_method_name
|
798
798
|
caller[0] =~ /`([^']*)'/ and $1
|
799
799
|
end
|
800
|
-
|
800
|
+
|
801
801
|
##
|
802
802
|
# Adds the IDs to an Array of Hashes if no ID is present
|
803
803
|
#
|
804
804
|
# ==== Parameters
|
805
805
|
# * [required, Array] array of hashes to add IDs to
|
806
|
-
#
|
806
|
+
#
|
807
807
|
# ==== Return
|
808
808
|
# * [Array]
|
809
809
|
# the array of hashes with ID added
|
@@ -813,7 +813,7 @@ class TropoProvisioning
|
|
813
813
|
end
|
814
814
|
array
|
815
815
|
end
|
816
|
-
|
816
|
+
|
817
817
|
##
|
818
818
|
# Parses the URL and returns the last element
|
819
819
|
#
|
@@ -825,7 +825,7 @@ class TropoProvisioning
|
|
825
825
|
def get_element(url)
|
826
826
|
url.split('/').last
|
827
827
|
end
|
828
|
-
|
828
|
+
|
829
829
|
##
|
830
830
|
# Associates the addresses to an application
|
831
831
|
#
|
@@ -838,7 +838,7 @@ class TropoProvisioning
|
|
838
838
|
add = addresses(app.application_id)
|
839
839
|
app.merge!({ :addresses => add })
|
840
840
|
end
|
841
|
-
|
841
|
+
|
842
842
|
##
|
843
843
|
# Creates the appropriate request for the temporary Evolution account API
|
844
844
|
#
|
@@ -865,7 +865,7 @@ class TropoProvisioning
|
|
865
865
|
Hashie::Mash.new(result)
|
866
866
|
end
|
867
867
|
end
|
868
|
-
|
868
|
+
|
869
869
|
|
870
870
|
##
|
871
871
|
# Used to validate required params in either underscore or camelCase formats
|
@@ -885,7 +885,7 @@ class TropoProvisioning
|
|
885
885
|
end
|
886
886
|
end
|
887
887
|
end
|
888
|
-
|
888
|
+
|
889
889
|
##
|
890
890
|
# Validates that we have all of the appropriate params when creating an application
|
891
891
|
#
|
@@ -902,25 +902,25 @@ class TropoProvisioning
|
|
902
902
|
def validate_application_params(params={})
|
903
903
|
# Make sure all of the arguments are present
|
904
904
|
raise ArgumentError, ':name is a required parameter' unless params[:name] || params['name']
|
905
|
-
|
905
|
+
|
906
906
|
# Make sure the arguments have valid values
|
907
907
|
raise ArgumentError, ":platform must be #{VALID_PLATFORMS.map{|platform| "\'#{platform}\'"}.join(' or ')}" unless VALID_PLATFORMS.include?(params[:platform]) or VALID_PLATFORMS.include?(params["platform"])
|
908
908
|
raise ArgumentError, ":partition must be #{VALID_PARTITIONS.map{|partition| "\'#{partition}\'"}.join(' or ')}" unless VALID_PARTITIONS.include?(params[:partition]) or VALID_PARTITIONS.include?(params["partition"])
|
909
909
|
end
|
910
|
-
|
910
|
+
|
911
911
|
##
|
912
912
|
# Validates a create address request parameters
|
913
913
|
#
|
914
914
|
# ==== Parameters
|
915
915
|
# * [required, Hash] required parameters values
|
916
|
-
#
|
916
|
+
#
|
917
917
|
# ==== Return
|
918
|
-
# * nil if successful validation
|
918
|
+
# * nil if successful validation
|
919
919
|
# * ArgumentError is a required parameter is missing
|
920
920
|
#
|
921
921
|
def validate_address_parameters(params={})
|
922
922
|
raise ArgumentError, ":type is a required parameter" unless params[:type] || params['type']
|
923
|
-
|
923
|
+
|
924
924
|
case params[:type].downcase
|
925
925
|
when 'number'
|
926
926
|
raise ArgumentError, ':prefix required to add a number address' unless params[:prefix] || params[:number] || params['prefix'] || params['number']
|
@@ -934,4 +934,4 @@ class TropoProvisioning
|
|
934
934
|
raise ArgumentError, ':channel must be voice or messaging' unless params[:channel] == 'voice' || params[:channel] == 'messaging' || params['channel'] == 'voice' || params['channel'] == 'messaging'
|
935
935
|
end
|
936
936
|
end
|
937
|
-
end
|
937
|
+
end
|