wire2air 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/wire2air.rb +27 -21
- data/manual_tests.rb +7 -5
- data/wire2air.gemspec +2 -2
- metadata +12 -12
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/lib/wire2air.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'net/http'
|
2
2
|
require 'uri'
|
3
3
|
|
4
|
-
# Class for interacting with the
|
4
|
+
# Class for interacting with the Wire2Air sms sending and receiving service.
|
5
5
|
# Example usage:
|
6
|
-
# connection =
|
6
|
+
# connection = Wire2Air.new(:username => 'your_username',
|
7
7
|
# :password => 'your password',
|
8
8
|
# :profile_id => 42,
|
9
|
-
# :
|
9
|
+
# :from => 1111,
|
10
10
|
# :vasid => 12345)
|
11
11
|
# connection.submit_sm()
|
12
12
|
class Wire2Air
|
@@ -31,7 +31,7 @@ class Wire2Air
|
|
31
31
|
end
|
32
32
|
|
33
33
|
|
34
|
-
# Initializes a
|
34
|
+
# Initializes a Wire2Air object with the common profile info needed
|
35
35
|
# for making connections.
|
36
36
|
# @param [Hash] opts The profile connection options
|
37
37
|
# @option opts [String] :username The user name to connect as
|
@@ -56,10 +56,10 @@ class Wire2Air
|
|
56
56
|
|
57
57
|
public
|
58
58
|
# sends an sms
|
59
|
-
# @param [String, Array<String>]
|
59
|
+
# @param [String, Array<String>] mobile_number DESTINATION MOBILE NUMBER. [(country
|
60
60
|
# code) + mobile number] e.g 17321234567 (for
|
61
61
|
# US), 919810601000 (for India)
|
62
|
-
# @param [String]
|
62
|
+
# @param [String] from The short code number
|
63
63
|
# @param [String] text The message text
|
64
64
|
# @param [Hash] opts Extra optional settings
|
65
65
|
# @option opts [String] :batch_reference A reference string used when sending many sms
|
@@ -69,24 +69,22 @@ class Wire2Air
|
|
69
69
|
# an Integer for the BatchID is returned.
|
70
70
|
# @raise NotEnoughError Not enough credits to send the sms
|
71
71
|
# @raise FailedAuthenticationError some authentication details are wrong
|
72
|
-
def submit_sm(
|
72
|
+
def submit_sm(from, mobile_number, text, opts = {})
|
73
73
|
params = common_options
|
74
74
|
params['VERSION'] = '2.0'
|
75
|
-
params['FROM'] =
|
75
|
+
params['FROM'] = from
|
76
76
|
params['TEXT'] = text
|
77
77
|
params['NETWORKID'] = opts[:network_id] if opts.has_key? :network_id
|
78
|
-
batch_send = !(
|
78
|
+
batch_send = !(mobile_number.is_a? String)
|
79
79
|
|
80
80
|
if !batch_send
|
81
|
-
params['TO'] =
|
81
|
+
params['TO'] = mobile_number
|
82
82
|
else
|
83
|
-
params['TO'] =
|
83
|
+
params['TO'] = mobile_number.join(',')
|
84
84
|
params['BATCHNAME'] = opts[:batch_reference]
|
85
85
|
|
86
86
|
end
|
87
87
|
|
88
|
-
p params
|
89
|
-
|
90
88
|
url = URI.parse('http://smsapi.wire2air.com/smsadmin/submitsm.aspx')
|
91
89
|
res = Net::HTTP.post_form(url, params).body
|
92
90
|
case res
|
@@ -138,7 +136,7 @@ class Wire2Air
|
|
138
136
|
'PASSWORD' => password,
|
139
137
|
'VASID' => vasid
|
140
138
|
}).body
|
141
|
-
raise FailedAuthenticationError if res =~ /ERR:
|
139
|
+
raise FailedAuthenticationError if res =~ /ERR:301/
|
142
140
|
res.to_i
|
143
141
|
end
|
144
142
|
|
@@ -152,14 +150,20 @@ class Wire2Air
|
|
152
150
|
'USERID' => userid,
|
153
151
|
'PASSWORD' => password,
|
154
152
|
'VASID' => vasid,
|
155
|
-
'
|
153
|
+
'SHORTCODE' => short_code,
|
156
154
|
'KEYWORD' => keyword
|
157
155
|
})
|
158
156
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
157
|
+
case response.body
|
158
|
+
when /Err:0/
|
159
|
+
return true
|
160
|
+
when /Err:705/
|
161
|
+
return false
|
162
|
+
when /Err:301/
|
163
|
+
raise FailedAuthenticationError
|
164
|
+
else
|
165
|
+
raise StandardError.new response.body
|
166
|
+
end
|
163
167
|
|
164
168
|
end
|
165
169
|
|
@@ -168,7 +172,7 @@ class Wire2Air
|
|
168
172
|
# for a given short code.
|
169
173
|
# @param opts Options for creating the keyword
|
170
174
|
# @option opts [String] :service_name Service name for the keyword
|
171
|
-
# @option opts [String] :
|
175
|
+
# @option opts [String] :short_code
|
172
176
|
# @option opts [String] :keyword
|
173
177
|
# @option opts [String] :processor_url The url of the webservice
|
174
178
|
# @option opts [String] :help_msg Response for help message
|
@@ -185,7 +189,7 @@ class Wire2Air
|
|
185
189
|
params['USERID'] = username
|
186
190
|
params['PASSWORD'] = password
|
187
191
|
params['VASID'] = vasid
|
188
|
-
params['SHORTCODE'] = opts[:
|
192
|
+
params['SHORTCODE'] = opts[:short_code]
|
189
193
|
params['SERVICENAME'] = opts[:service_name]
|
190
194
|
params['KEYWORD'] = opts[:keyword]
|
191
195
|
params['PROCESSORURL'] = opts[:processor_url]
|
@@ -199,6 +203,8 @@ class Wire2Air
|
|
199
203
|
case res
|
200
204
|
when /Err:70[012346789]/, /Err:71[0134]/
|
201
205
|
raise ArgumentError.new res
|
206
|
+
when /Err:300/
|
207
|
+
raise FailedAuthenticationError
|
202
208
|
when /Err:705/
|
203
209
|
raise KeywordIsTakenError
|
204
210
|
when /Err:712/
|
data/manual_tests.rb
CHANGED
@@ -71,12 +71,16 @@ describe "sms api" do
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
+
it 'can check the number of available credits' do
|
75
|
+
credits = connection.check_sms_credits
|
76
|
+
true_false_prompt("Are there #{credits} number of sms credits available?").should be_true
|
77
|
+
end
|
74
78
|
|
75
79
|
it 'can add more credits to the account' do
|
76
|
-
current_credits = prompt "Enter the number of available credits currently: "
|
80
|
+
current_credits = prompt "Enter the number of available keyword credits currently: "
|
77
81
|
|
78
82
|
puts connection.subscribe_keywords(4)
|
79
|
-
true_false_prompt("Are there now #{current_credits.to_i + 4} credits available?").should be_true
|
83
|
+
true_false_prompt("Are there now #{current_credits.to_i + 4} keyword credits available?").should be_true
|
80
84
|
end
|
81
85
|
|
82
86
|
it 'can find if a keyword is available' do
|
@@ -88,7 +92,7 @@ describe "sms api" do
|
|
88
92
|
service_keyword = 'new_keyword'
|
89
93
|
service_id = connection.register_keyword(
|
90
94
|
:service_name => service_name,
|
91
|
-
:
|
95
|
+
:short_code => opts[:short_code],
|
92
96
|
:keyword => service_keyword,
|
93
97
|
:processor_url => 'http://example.com/processor',
|
94
98
|
:help_msg => "help message",
|
@@ -96,8 +100,6 @@ describe "sms api" do
|
|
96
100
|
)
|
97
101
|
|
98
102
|
true_false_prompt("Did a new service get registered with name '#{service_name}'").should be_true
|
99
|
-
connection.delete_service(opts[:short_code], service_id, service_keyword)
|
100
|
-
true_false_prompt("Did the service '#{service_name}' get deleted?").should be_true
|
101
103
|
|
102
104
|
|
103
105
|
end
|
data/wire2air.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{wire2air}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{David Miani}]
|
12
|
-
s.date = %q{2011-09-
|
12
|
+
s.date = %q{2011-09-08}
|
13
13
|
s.description = %q{Allows sending sms and voice messages, checking and adding more credits, subscribing to keywords}
|
14
14
|
s.email = %q{davidmiani@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wire2air
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
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: 2011-09-
|
12
|
+
date: 2011-09-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153338800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.3.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153338800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: yard
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153338320 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.6.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153338320
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bundler
|
38
|
-
requirement: &
|
38
|
+
requirement: &2153337840 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2153337840
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: jeweler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2153337360 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.6.4
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2153337360
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rcov
|
60
|
-
requirement: &
|
60
|
+
requirement: &2153336880 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2153336880
|
69
69
|
description: Allows sending sms and voice messages, checking and adding more credits,
|
70
70
|
subscribing to keywords
|
71
71
|
email: davidmiani@gmail.com
|