textmagic 0.5.0 → 0.6.0
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.
- checksums.yaml +7 -0
- data/Gemfile +7 -0
- data/History.txt +4 -0
- data/README.md +131 -0
- data/Rakefile +1 -3
- data/bin/tm +5 -5
- data/lib/textmagic/executor.rb +1 -2
- data/lib/textmagic/version.rb +1 -1
- data/test/test_api.rb +100 -76
- data/test/test_charset.rb +25 -25
- data/test/test_error.rb +9 -9
- data/test/test_executor.rb +20 -23
- data/test/test_helper.rb +10 -14
- data/test/test_response.rb +100 -100
- data/test/test_validation.rb +50 -50
- data/textmagic.gemspec +1 -5
- metadata +17 -60
- data/README.rdoc +0 -153
data/test/test_validation.rb
CHANGED
@@ -1,110 +1,110 @@
|
|
1
1
|
require "test_helper"
|
2
2
|
|
3
|
-
|
3
|
+
describe "Validation" do
|
4
4
|
|
5
|
-
|
5
|
+
describe "validate_text_length method for non-unicode texts" do
|
6
6
|
|
7
|
-
should
|
7
|
+
it "should use real_length method to determine the real length of the message" do
|
8
8
|
text = random_string
|
9
9
|
TextMagic::API.expects(:real_length).with(text, false).returns(0)
|
10
10
|
TextMagic::API.validate_text_length(text, false, 1)
|
11
11
|
end
|
12
12
|
|
13
|
-
should
|
14
|
-
TextMagic::API.validate_text_length(random_string(160), false, 1)
|
13
|
+
it "should return true if parts limit is set to 1 and text length is less than or equal to 160" do
|
14
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(160), false, 1)
|
15
15
|
end
|
16
16
|
|
17
|
-
should
|
18
|
-
TextMagic::API.validate_text_length(random_string(161), false, 1)
|
17
|
+
it "should return false if parts limit is set to 1 and text length is greater than 160" do
|
18
|
+
assert_equal false, TextMagic::API.validate_text_length(random_string(161), false, 1)
|
19
19
|
end
|
20
20
|
|
21
|
-
should
|
22
|
-
TextMagic::API.validate_text_length(random_string(306), false, 2)
|
21
|
+
it "should return true if parts limit is set to 2 and text length is less than or equal to 306" do
|
22
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(306), false, 2)
|
23
23
|
end
|
24
24
|
|
25
|
-
should
|
26
|
-
TextMagic::API.validate_text_length(random_string(307), false, 2)
|
25
|
+
it "should return false if parts limit is set to 2 and text length is greater than 306" do
|
26
|
+
assert_equal false, TextMagic::API.validate_text_length(random_string(307), false, 2)
|
27
27
|
end
|
28
28
|
|
29
|
-
should
|
30
|
-
TextMagic::API.validate_text_length(random_string(459), false)
|
31
|
-
TextMagic::API.validate_text_length(random_string(459), false, 3)
|
29
|
+
it "should return true if parts limit is set to 3 or is not specified and text length is less than or equal to 459" do
|
30
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(459), false)
|
31
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(459), false, 3)
|
32
32
|
end
|
33
33
|
|
34
|
-
should
|
35
|
-
TextMagic::API.validate_text_length(random_string(460), false)
|
36
|
-
TextMagic::API.validate_text_length(random_string(460), false, 3)
|
34
|
+
it "should return false if parts limit is set to 3 or is not specified and text length is greater than 459" do
|
35
|
+
assert_equal false, TextMagic::API.validate_text_length(random_string(460), false)
|
36
|
+
assert_equal false, TextMagic::API.validate_text_length(random_string(460), false, 3)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
|
40
|
+
describe "validate_text_length method for unicode texts" do
|
41
41
|
|
42
|
-
should
|
42
|
+
it "should use real_length method to determine the real length of the message" do
|
43
43
|
text = random_string
|
44
44
|
TextMagic::API.expects(:real_length).with(text, true).returns(0)
|
45
45
|
TextMagic::API.validate_text_length(text, true, 1)
|
46
46
|
end
|
47
47
|
|
48
|
-
should
|
49
|
-
TextMagic::API.validate_text_length(random_string(70), true, 1)
|
48
|
+
it "should return true if parts limit is set to 1 and text length is less than or equal to 70" do
|
49
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(70), true, 1)
|
50
50
|
end
|
51
51
|
|
52
|
-
should
|
53
|
-
TextMagic::API.validate_text_length(random_string(71),
|
52
|
+
it "should return false if parts limit is set to 1 and text length is greater than 70" do
|
53
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(71), false, 1)
|
54
54
|
end
|
55
55
|
|
56
|
-
should
|
57
|
-
TextMagic::API.validate_text_length(random_string(134), true, 2)
|
56
|
+
it "should return true if parts limit is set to 2 and text length is less than or equal to 134" do
|
57
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(134), true, 2)
|
58
58
|
end
|
59
59
|
|
60
|
-
should
|
61
|
-
TextMagic::API.validate_text_length(random_string(135),
|
60
|
+
it "should return false if parts limit is set to 2 and text length is greater than 134" do
|
61
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(135), false, 2)
|
62
62
|
end
|
63
63
|
|
64
|
-
should
|
65
|
-
TextMagic::API.validate_text_length(random_string(201), true)
|
66
|
-
TextMagic::API.validate_text_length(random_string(201), true, 3)
|
64
|
+
it "should return true if parts limit is set to 3 or is not specified and text length is less than or equal to 201" do
|
65
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(201), true)
|
66
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(201), true, 3)
|
67
67
|
end
|
68
68
|
|
69
|
-
should
|
70
|
-
TextMagic::API.validate_text_length(random_string(202),
|
71
|
-
TextMagic::API.validate_text_length(random_string(202),
|
69
|
+
it "should return false if parts limit is set to 3 or is not specified and text length is greater than 201" do
|
70
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(202), false)
|
71
|
+
assert_equal true, TextMagic::API.validate_text_length(random_string(202), false, 3)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
-
|
75
|
+
describe "validate_phones method" do
|
76
76
|
|
77
|
-
should
|
78
|
-
TextMagic::API.validate_phones(rand(10 ** 15).to_s)
|
77
|
+
it "should return true if phone number consists of up to 15 digits" do
|
78
|
+
assert_equal true, TextMagic::API.validate_phones(rand(10 ** 15).to_s)
|
79
79
|
end
|
80
80
|
|
81
|
-
should
|
82
|
-
TextMagic::API.validate_phones((10 ** 16 + rand(10 ** 15)).to_s)
|
81
|
+
it "should return false if phone number is longer than 15 digits" do
|
82
|
+
assert_equal false, TextMagic::API.validate_phones((10 ** 16 + rand(10 ** 15)).to_s)
|
83
83
|
end
|
84
84
|
|
85
|
-
should
|
86
|
-
TextMagic::API.validate_phones(random_string)
|
85
|
+
it "should return false if phone number contains non-digits" do
|
86
|
+
assert_equal false, TextMagic::API.validate_phones(random_string)
|
87
87
|
end
|
88
88
|
|
89
|
-
should
|
90
|
-
TextMagic::API.validate_phones("")
|
89
|
+
it "should return false if phone number is empty" do
|
90
|
+
assert_equal false, TextMagic::API.validate_phones("")
|
91
91
|
end
|
92
92
|
|
93
|
-
should
|
93
|
+
it "should return true if all phone numbers in a list are valid" do
|
94
94
|
phone1, phone2 = rand(10 ** 15).to_s, rand(10 ** 15).to_s
|
95
|
-
TextMagic::API.validate_phones(phone1, phone2)
|
96
|
-
TextMagic::API.validate_phones([phone1, phone2])
|
95
|
+
assert_equal true, TextMagic::API.validate_phones(phone1, phone2)
|
96
|
+
assert_equal true, TextMagic::API.validate_phones([phone1, phone2])
|
97
97
|
end
|
98
98
|
|
99
|
-
should
|
100
|
-
TextMagic::API.validate_phones
|
99
|
+
it "should return false if phone numbers list is empty" do
|
100
|
+
assert_equal false, TextMagic::API.validate_phones
|
101
101
|
end
|
102
102
|
|
103
|
-
should
|
103
|
+
it "should return false if format of any of phone numbers in a list is invalid" do
|
104
104
|
phone1 = rand(10 ** 15).to_s, rand(10 ** 15).to_s
|
105
105
|
phone2 = random_string
|
106
|
-
TextMagic::API.validate_phones(phone1, phone2)
|
107
|
-
TextMagic::API.validate_phones([phone1, phone2])
|
106
|
+
assert_equal false, TextMagic::API.validate_phones(phone1, phone2)
|
107
|
+
assert_equal false, TextMagic::API.validate_phones([phone1, phone2])
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
data/textmagic.gemspec
CHANGED
@@ -20,9 +20,5 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.require_paths = ["lib"]
|
21
21
|
gem.version = Textmagic::VERSION
|
22
22
|
|
23
|
-
gem.add_runtime_dependency "httparty", "
|
24
|
-
gem.add_development_dependency "mocha", ">= 0.9.8"
|
25
|
-
gem.add_development_dependency "shoulda", ">= 2.10.3"
|
26
|
-
gem.add_development_dependency "fakeweb", ">= 1.2.8"
|
27
|
-
gem.add_development_dependency "mcmire-matchy", ">= 0.5.2"
|
23
|
+
gem.add_runtime_dependency "httparty", "~> 0.5"
|
28
24
|
end
|
metadata
CHANGED
@@ -1,72 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textmagic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Vladimir Bobes Tuzinsky
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-09-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: httparty
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.5
|
19
|
+
version: '0.5'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: mocha
|
27
|
-
requirement: &70140940265840 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.9.8
|
33
|
-
type: :development
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70140940265840
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: shoulda
|
38
|
-
requirement: &70140940263280 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ! '>='
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 2.10.3
|
44
|
-
type: :development
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: *70140940263280
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: fakeweb
|
49
|
-
requirement: &70140940261980 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
23
|
requirements:
|
52
|
-
- -
|
24
|
+
- - "~>"
|
53
25
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70140940261980
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: mcmire-matchy
|
60
|
-
requirement: &70140940261020 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: 0.5.2
|
66
|
-
type: :development
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *70140940261020
|
69
|
-
description: ! "\n textmagic is a Ruby interface to the TextMagic's Bulk SMS Gateway.\n
|
26
|
+
version: '0.5'
|
27
|
+
description: "\n textmagic is a Ruby interface to the TextMagic's Bulk SMS Gateway.\n
|
70
28
|
\ It can be used to easily integrate SMS features into your application.\n It
|
71
29
|
supports sending messages, receiving replies and more.\n You need to have a valid
|
72
30
|
TextMagic account to use this gem. You can get one at http://www.textmagic.com.\n
|
@@ -78,12 +36,12 @@ executables:
|
|
78
36
|
extensions: []
|
79
37
|
extra_rdoc_files: []
|
80
38
|
files:
|
81
|
-
- .document
|
82
|
-
- .gitignore
|
39
|
+
- ".document"
|
40
|
+
- ".gitignore"
|
83
41
|
- Gemfile
|
84
42
|
- History.txt
|
85
43
|
- LICENSE
|
86
|
-
- README.
|
44
|
+
- README.md
|
87
45
|
- Rakefile
|
88
46
|
- bin/tm
|
89
47
|
- lib/textmagic.rb
|
@@ -105,27 +63,26 @@ files:
|
|
105
63
|
- textmagic.gemspec
|
106
64
|
homepage: ''
|
107
65
|
licenses: []
|
66
|
+
metadata: {}
|
108
67
|
post_install_message:
|
109
68
|
rdoc_options: []
|
110
69
|
require_paths:
|
111
70
|
- lib
|
112
71
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
72
|
requirements:
|
115
|
-
- -
|
73
|
+
- - ">="
|
116
74
|
- !ruby/object:Gem::Version
|
117
75
|
version: '0'
|
118
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
77
|
requirements:
|
121
|
-
- -
|
78
|
+
- - ">="
|
122
79
|
- !ruby/object:Gem::Version
|
123
80
|
version: '0'
|
124
81
|
requirements: []
|
125
82
|
rubyforge_project:
|
126
|
-
rubygems_version:
|
83
|
+
rubygems_version: 2.2.2
|
127
84
|
signing_key:
|
128
|
-
specification_version:
|
85
|
+
specification_version: 4
|
129
86
|
summary: Ruby interface to the TextMagic's Bulk SMS Gateway
|
130
87
|
test_files:
|
131
88
|
- test/test_api.rb
|
data/README.rdoc
DELETED
@@ -1,153 +0,0 @@
|
|
1
|
-
= TextMagic
|
2
|
-
|
3
|
-
+textmagic+ gem is a Ruby interface to the TextMagic's Bulk SMS Gateway.
|
4
|
-
It can be used to easily integrate SMS features into your application.
|
5
|
-
It supports sending messages, receiving replies and more. You need to have
|
6
|
-
a valid TextMagic[http://www.textmagic.com] account to use this gem. You can
|
7
|
-
get one at http://www.textmagic.com.
|
8
|
-
|
9
|
-
To learn more about the TextMagic's Bulk
|
10
|
-
SMS Gateway, visit the official {API documentation}[http://api.textmagic.com]
|
11
|
-
or {Google group}[http://groups.google.com/group/textmagic-api].
|
12
|
-
|
13
|
-
Links:
|
14
|
-
Doc[http://tuzinsky.com/textmagic/rdoc]
|
15
|
-
|
|
16
|
-
Code[http://github.com/bobes/textmagic/tree/master]
|
17
|
-
|
|
18
|
-
Blame[http://tuzinsky.com]
|
19
|
-
|
20
|
-
|
21
|
-
== Installation
|
22
|
-
|
23
|
-
Run
|
24
|
-
|
25
|
-
gem install textmagic
|
26
|
-
|
27
|
-
Use +sudo+ if required by your system.
|
28
|
-
|
29
|
-
|
30
|
-
== Basic usage
|
31
|
-
|
32
|
-
Start with requiring +textmagic+ library:
|
33
|
-
|
34
|
-
require 'rubygems'
|
35
|
-
require 'textmagic'
|
36
|
-
|
37
|
-
Then create an API instance with your credentials:
|
38
|
-
|
39
|
-
api = TextMagic::API.new(username, password)
|
40
|
-
|
41
|
-
These credentials will be used in all requests to the SMS gateway.
|
42
|
-
|
43
|
-
=== Account balance
|
44
|
-
|
45
|
-
Check your account's balance:
|
46
|
-
|
47
|
-
api.account.balance
|
48
|
-
# => 314.15
|
49
|
-
|
50
|
-
See TextMagic::API.account for more information on +account+ method.
|
51
|
-
|
52
|
-
=== Sending messages
|
53
|
-
|
54
|
-
To send a message to a single phone number, run:
|
55
|
-
|
56
|
-
api.send 'Hi Wilma!', '999314159265'
|
57
|
-
|
58
|
-
You can even specify multiple phone numbers:
|
59
|
-
|
60
|
-
api.send 'Hello everybody', '999314159265', '999271828182'
|
61
|
-
|
62
|
-
Unicode messages are supported as well:
|
63
|
-
|
64
|
-
api.send 'Вильма Привет!', '999314159265'
|
65
|
-
|
66
|
-
Long messages will be split to up to 3 parts. To limit maximum number
|
67
|
-
of parts, specify an optional +max_length+ parameter:
|
68
|
-
|
69
|
-
api.send 'Very very long message...', '999314159265', :max_length => 2
|
70
|
-
|
71
|
-
If you want to postpone message delivery, specify a +send_time+ parameter:
|
72
|
-
|
73
|
-
api.send 'Two hours later', '999314159265', :send_time => Time.now.to_i + 7200
|
74
|
-
|
75
|
-
See TextMagic::API.send for more information on +send+ method.
|
76
|
-
|
77
|
-
=== Checking sent message status
|
78
|
-
|
79
|
-
If you want to check sent message status, you have to use +message_id+
|
80
|
-
returned in response to +send+ command.
|
81
|
-
|
82
|
-
api.send('Hi Wilma!', '999314159265')
|
83
|
-
# => '141421'
|
84
|
-
status = api.message_status('141421')
|
85
|
-
# => 'd'
|
86
|
-
status.completed_time
|
87
|
-
# => Fri May 22 10:10:18 +0200 2009
|
88
|
-
|
89
|
-
You can also check statuses of several messages at once, in which case
|
90
|
-
you'll get a hash with message ids as keys:
|
91
|
-
|
92
|
-
api.send('Hi Wilma!', '999314159265', '999271828182').message_id
|
93
|
-
# => { '999314159265' => '141421', '999271828182' => '173205' }
|
94
|
-
statuses = api.message_status('141421', '173205')
|
95
|
-
# => { '141421' => 'r', '173205' => 'd' }
|
96
|
-
statuses['173205'].created_time
|
97
|
-
# => Thu May 28 16:41:45 +0200 2009
|
98
|
-
|
99
|
-
See TextMagic::API.message_status for more information on +message_status+ method.
|
100
|
-
|
101
|
-
<b>It is strongly recommended to setup callbacks to receive updates on message status
|
102
|
-
instead of using this method. Learn more about callbacks at
|
103
|
-
{TextMagic API}[http://api.textmagic.com/https-api] site</b>
|
104
|
-
|
105
|
-
=== Receiving replies
|
106
|
-
|
107
|
-
To receive all available replies, run:
|
108
|
-
|
109
|
-
replies = api.receive
|
110
|
-
# => ['999271828182: Hello Fred!', '999314159265: Good day!']
|
111
|
-
replies.first.text
|
112
|
-
# => 'Hello Fred!'
|
113
|
-
replies.last.from
|
114
|
-
# => '999314159265'
|
115
|
-
replies.last.message_id
|
116
|
-
# => '178082'
|
117
|
-
|
118
|
-
To prevent receiving old replies again, supply +last_retrieved_id+ argument:
|
119
|
-
|
120
|
-
api.receive('178082')
|
121
|
-
# => []
|
122
|
-
|
123
|
-
See TextMagic::API.receive for more information on +message_status+ method.
|
124
|
-
|
125
|
-
<b>It is strongly recommended to setup callbacks to receive replies instead of
|
126
|
-
using this method. Learn more about callbacks at
|
127
|
-
{TextMagic API}[http://api.textmagic.com/https-api] site</b>
|
128
|
-
|
129
|
-
=== Deleting retrieved replies
|
130
|
-
|
131
|
-
After you retrieve replies, you can delete them from server by running:
|
132
|
-
|
133
|
-
api.delete_reply '141421', '178082'
|
134
|
-
# => true
|
135
|
-
|
136
|
-
See TextMagic::API.delete_reply for more information on +message_status+ method.
|
137
|
-
|
138
|
-
|
139
|
-
== Command-line utility
|
140
|
-
|
141
|
-
The +textmagic+ gem also features a handy command-line utility. It gives you access
|
142
|
-
to all of the gem's features. Run
|
143
|
-
|
144
|
-
tm
|
145
|
-
|
146
|
-
from your console to see help on its usage.
|
147
|
-
|
148
|
-
<i>Note: This has only been tested on a Mac with Ruby 1.8.7 and 1.9.1. If you have any troubles
|
149
|
-
using this gem, contact the author (or submit a patch).</i>
|
150
|
-
|
151
|
-
== Copyright
|
152
|
-
|
153
|
-
Copyright (c) 2009 Vladimír Bobeš Tužinský. See LICENSE for details.
|