4info 1.3.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,56 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class TxterModuleTest < ActiveSupport::TestCase
4
+
5
+ context "standardizing numbers" do
6
+ context "to digits" do
7
+ should "remove all but integers" do
8
+ assert_equal '12345', Txter.numerize('1-2-3-4-5')
9
+ assert_equal '12345', Txter.numerize('1 2 3 4 5')
10
+ assert_equal '12345', Txter.numerize('1,2(3)4.5')
11
+ assert_equal '12345', Txter.numerize('1,2(3)4.5')
12
+ end
13
+ end
14
+ context "to international format" do
15
+ should "add a '+' to all 11 digit numbers" do
16
+ assert_equal '+12345678901', Txter.internationalize('12345678901')
17
+ assert_equal '+72345678901', Txter.internationalize('72345678901')
18
+ end
19
+ should "add a '+1' to any 10 digit number" do
20
+ assert_equal '+12345678901', Txter.internationalize('2345678901')
21
+ assert_equal '+17345678901', Txter.internationalize('7345678901')
22
+ end
23
+ should "leave 12 digit numbers unchanged" do
24
+ [ '+' + ('3'*11),
25
+ '+' + ('8'*11),
26
+ '+' + ('4'*11) ].each do |number|
27
+ assert_equal number, Txter.internationalize(number)
28
+ end
29
+ end
30
+ should "return nil for all bad numbers" do
31
+ assert_equal nil, Txter.internationalize(nil)
32
+ assert_equal nil, Txter.internationalize('nil')
33
+ assert_equal nil, Txter.internationalize('1234')
34
+ assert_equal nil, Txter.internationalize('11111111111111111111111')
35
+ assert_equal nil, Txter.internationalize('what?')
36
+ end
37
+ end
38
+ end
39
+
40
+ context "generating codes" do
41
+ setup { @code = Txter.generate_confirmation_code }
42
+ should "be 6 digits" do
43
+ assert_equal 6, @code.length
44
+ end
45
+ end
46
+
47
+ context "confirmation message" do
48
+ setup {
49
+ @code = 'ABC123'
50
+ @message = Txter.confirmation_message(@code)
51
+ }
52
+ should "include code" do
53
+ assert @message.include?(@code)
54
+ end
55
+ end
56
+ end
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  "lib/configuration.rb",
27
27
  "lib/contactable.rb",
28
28
  "lib/controller.rb",
29
- "lib/four_info.rb",
29
+ "lib/txter.rb",
30
30
  "lib/request.rb",
31
31
  "lib/response.rb",
32
32
  "lib/templates/confirm.haml",
@@ -34,9 +34,9 @@ Gem::Specification.new do |s|
34
34
  "lib/templates/unblock.haml",
35
35
  "test/.gitignore",
36
36
  "test/database.yml",
37
- "test/four_info_contactable_test.rb",
38
- "test/four_info_controller_test.rb",
39
- "test/four_info_module_test.rb",
37
+ "test/txter_contactable_test.rb",
38
+ "test/txter_controller_test.rb",
39
+ "test/txter_module_test.rb",
40
40
  "test/test_helper.rb"
41
41
  ]
42
42
  s.homepage = %q{http://github.com/JackDanger/4info}
@@ -45,9 +45,9 @@ Gem::Specification.new do |s|
45
45
  s.rubygems_version = %q{1.3.5}
46
46
  s.summary = %q{Send and receive SMS messages via 4info.com}
47
47
  s.test_files = [
48
- "test/four_info_contactable_test.rb",
49
- "test/four_info_controller_test.rb",
50
- "test/four_info_module_test.rb",
48
+ "test/txter_contactable_test.rb",
49
+ "test/txter_controller_test.rb",
50
+ "test/txter_module_test.rb",
51
51
  "test/test_helper.rb"
52
52
  ]
53
53
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 4info
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Danger Canty
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-09 00:00:00 -08:00
12
+ date: 2010-03-17 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -61,28 +61,30 @@ extensions: []
61
61
  extra_rdoc_files:
62
62
  - README.markdown
63
63
  files:
64
- - 4info.gemspec
65
64
  - MIT-LICENSE
66
65
  - README.markdown
67
66
  - Rakefile
68
67
  - VERSION
69
68
  - init.rb
70
- - lib/4info.rb
69
+ - lib/4info_templates/confirm.haml
70
+ - lib/4info_templates/deliver.haml
71
+ - lib/4info_templates/unblock.haml
71
72
  - lib/configuration.rb
72
73
  - lib/contactable.rb
73
74
  - lib/controller.rb
74
- - lib/four_info.rb
75
- - lib/request.rb
76
- - lib/response.rb
77
- - lib/templates/confirm.haml
78
- - lib/templates/deliver.haml
79
- - lib/templates/unblock.haml
75
+ - lib/gateway.rb
76
+ - lib/gateway_4info.rb
77
+ - lib/gateway_twilio.rb
78
+ - lib/txter.rb
80
79
  - test/.gitignore
81
80
  - test/database.yml
82
- - test/four_info_contactable_test.rb
83
- - test/four_info_controller_test.rb
84
- - test/four_info_module_test.rb
81
+ - test/gateway_4info_test.rb
82
+ - test/gateway_twilio_test.rb
85
83
  - test/test_helper.rb
84
+ - test/txter_contactable_test.rb
85
+ - test/txter_controller_test.rb
86
+ - test/txter_module_test.rb
87
+ - txter.gemspec
86
88
  has_rdoc: true
87
89
  homepage: http://github.com/JackDanger/4info
88
90
  licenses: []
@@ -112,7 +114,9 @@ signing_key:
112
114
  specification_version: 3
113
115
  summary: Send and receive SMS messages via 4info.com
114
116
  test_files:
115
- - test/four_info_contactable_test.rb
116
- - test/four_info_controller_test.rb
117
- - test/four_info_module_test.rb
117
+ - test/gateway_4info_test.rb
118
+ - test/gateway_twilio_test.rb
118
119
  - test/test_helper.rb
120
+ - test/txter_contactable_test.rb
121
+ - test/txter_controller_test.rb
122
+ - test/txter_module_test.rb
@@ -1,3 +0,0 @@
1
- # An unfortunate workaround of the fact that
2
- # Ruby can't name a constant 4Info
3
- require 'four_info'
@@ -1,75 +0,0 @@
1
- module FourInfo
2
- class Request
3
-
4
- attr_accessor :config
5
- attr_accessor :number
6
- attr_accessor :message
7
-
8
- def initialize
9
- unless FourInfo.configured?
10
- raise "You need to configure FourInfo before using it!"
11
- end
12
- self.config = FourInfo.configuration
13
- end
14
-
15
- def deliver_message(message, number)
16
- self.number = FourInfo.internationalize(number)
17
- self.message = message
18
-
19
- xml = template(:deliver).render(self)
20
- Response.new(perform(xml))
21
- end
22
-
23
- def confirm(number)
24
- self.number = FourInfo.internationalize(number)
25
-
26
- xml = template(:confirm).render(self)
27
- Response.new(perform(xml))
28
- end
29
-
30
- def unblock(number)
31
- self.number = FourInfo.internationalize(number)
32
-
33
- xml = template(:unblock).render(self)
34
- Response.new(perform(xml))
35
- end
36
-
37
- protected
38
-
39
- def template(name)
40
- # Haml templates for XML
41
- require 'cgi'
42
- templates = Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), 'templates', '*.haml')))
43
- file = templates.detect {|t| File.basename(t).chomp('.haml').to_sym == name.to_sym }
44
- raise ArgumentError, "Missing 4Info template: #{name}" unless file
45
- Haml::Engine.new(File.read(file))
46
- end
47
-
48
- def perform(body)
49
- if :live == FourInfo.mode
50
- start do |http|
51
- http.post(
52
- FourInfo.gateway.path,
53
- body,
54
- {'Content-Type' => 'text/xml'}
55
- ).read_body
56
- end
57
- else
58
- FourInfo.log "Would have sent to 4info.net: #{body}"
59
- end
60
- end
61
-
62
- def start
63
- net = config.proxy_address ?
64
- Net::HTTP::Proxy(
65
- config.proxy_address,
66
- config.proxy_port,
67
- config.proxy_username,
68
- config.proxy_password) :
69
- Net::HTTP
70
- net.start(FourInfo.gateway.host, FourInfo.gateway.port) do |http|
71
- yield http
72
- end
73
- end
74
- end
75
- end
@@ -1,27 +0,0 @@
1
- module FourInfo
2
- class Response
3
- def initialize(xml)
4
- gem 'hpricot'
5
- require 'hpricot'
6
- @xml = xml
7
- @body = Hpricot.parse(xml)
8
- end
9
-
10
- def inspect
11
- @xml.to_s
12
- end
13
-
14
- def [](name)
15
- nodes = (@body/name)
16
- 1 == nodes.size ? nodes.first : nodes
17
- end
18
-
19
- def success?
20
- 'Success' == self['message'].inner_text
21
- end
22
-
23
- def confirmation_code
24
- self[:confcode].inner_text
25
- end
26
- end
27
- end
@@ -1,56 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
2
-
3
- class FourInfoModuleTest < ActiveSupport::TestCase
4
-
5
- context "standardizing numbers" do
6
- context "to digits" do
7
- should "remove all but integers" do
8
- assert_equal '12345', FourInfo.numerize('1-2-3-4-5')
9
- assert_equal '12345', FourInfo.numerize('1 2 3 4 5')
10
- assert_equal '12345', FourInfo.numerize('1,2(3)4.5')
11
- assert_equal '12345', FourInfo.numerize('1,2(3)4.5')
12
- end
13
- end
14
- context "to international format" do
15
- should "add a '+' to all 11 digit numbers" do
16
- assert_equal '+12345678901', FourInfo.internationalize('12345678901')
17
- assert_equal '+72345678901', FourInfo.internationalize('72345678901')
18
- end
19
- should "add a '+1' to any 10 digit number" do
20
- assert_equal '+12345678901', FourInfo.internationalize('2345678901')
21
- assert_equal '+17345678901', FourInfo.internationalize('7345678901')
22
- end
23
- should "leave 12 digit numbers unchanged" do
24
- [ '+' + ('3'*11),
25
- '+' + ('8'*11),
26
- '+' + ('4'*11) ].each do |number|
27
- assert_equal number, FourInfo.internationalize(number)
28
- end
29
- end
30
- should "return nil for all bad numbers" do
31
- assert_equal nil, FourInfo.internationalize(nil)
32
- assert_equal nil, FourInfo.internationalize('nil')
33
- assert_equal nil, FourInfo.internationalize('1234')
34
- assert_equal nil, FourInfo.internationalize('11111111111111111111111')
35
- assert_equal nil, FourInfo.internationalize('what?')
36
- end
37
- end
38
- end
39
-
40
- context "generating codes" do
41
- setup { @code = FourInfo.generate_confirmation_code }
42
- should "be 6 digits" do
43
- assert_equal 6, @code.length
44
- end
45
- end
46
-
47
- context "confirmation message" do
48
- setup {
49
- @code = 'ABC123'
50
- @message = FourInfo.confirmation_message(@code)
51
- }
52
- should "include code" do
53
- assert @message.include?(@code)
54
- end
55
- end
56
- end