messagebird 0.1.2 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 240689840887a7c3b612574550238b5533abc55d
4
- data.tar.gz: 7b2fa0ea5944c30fd8ee66ef14ecd94645c3c756
3
+ metadata.gz: f5884d21d68ea0f75197081e449a185b223de84c
4
+ data.tar.gz: 08c4d01e03dc0a66ecf52546faa44be8269995d9
5
5
  SHA512:
6
- metadata.gz: 567700f37be1dc95e5acb310a1cf625404c0719a1dfd5caea4a56e1dfed2240bbef53109f85213361020740db8fe22cf1b290d1801d2005a6913513607a9f3b6
7
- data.tar.gz: f4c0029181bdee661cc75726a00dec082d96e8933e4f10fade190137a8e26630fd1cfc05d76e20296683bcb7180e10936f26df89b109048bd309cff9e2a9e9a8
6
+ metadata.gz: 88c3936162b49a6c835abfa08a5f733e12ed4b95311a364ceec1979fd730851444a8c948921f6922e20400ee8ec96d9d7ffde9ed2a71b64d66800845e6a70ad0
7
+ data.tar.gz: a03a8b13286a27194aed77f4556d9657caa6cfccc9bf6fe418d79f54bca27619e69a0cc498831ea4c1a7e7d5cf7063ff6d89ac4a7a2df6f8f53f9598e3f0d0a4
data/.travis.yml CHANGED
@@ -8,22 +8,6 @@ rvm:
8
8
  - 2.0.0
9
9
  - 2.1.0
10
10
 
11
- gemfile:
12
- - Gemfile
13
- - Gemfile.1.8.7
14
-
15
11
  matrix:
16
- fast_finish: true
17
-
18
12
  allow_failures:
19
13
  - rvm: 2.1.0
20
-
21
- exclude:
22
- - rvm: 1.8.7
23
- gemfile: Gemfile
24
- - rvm: 1.9.3
25
- gemfile: Gemfile.1.8.7
26
- - rvm: 2.0.0
27
- gemfile: Gemfile.1.8.7
28
- - rvm: 2.1.0
29
- gemfile: Gemfile.1.8.7
data/CHANGES.md ADDED
@@ -0,0 +1,20 @@
1
+ 0.1.3
2
+ -----------
3
+ - Sender_ID is now validated. Valid formats are:
4
+ - 11 alphanumeric characters
5
+ - telephone number string consisting of "+" + 11 numbers, e.g. "+31612345678"
6
+
7
+
8
+ 0.1.2
9
+ -----------
10
+ - Ensure 1.8.7 compatibility
11
+
12
+
13
+ 0.1.1
14
+ -----------
15
+ - Various small fixes
16
+
17
+
18
+ 0.1.0
19
+ -----------
20
+ - First release
data/Gemfile CHANGED
@@ -1,13 +1,19 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :test do
4
- gem 'bundler', '~> 1.0'
4
+ gem 'bundler', '~> 1.0'
5
5
  gem 'rake'
6
- gem 'minitest', :require => false
7
- gem 'rr', :require => false
8
- gem 'coveralls', :require => false
6
+ gem 'minitest', :require => false
7
+ gem 'rr', :require => false
9
8
  end
10
9
 
11
- group :development do
12
- gem 'jeweler', '~> 2.0.0', :require => false
10
+ platform :ruby_19, :ruby_20, :ruby_21 do
11
+ group :test do
12
+ gem 'coveralls', :require => false
13
+ end
14
+
15
+ group :development do
16
+ gem 'jeweler', '~> 2.0.0', :require => false
17
+ end
13
18
  end
19
+
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/messagebird.png)](http://badge.fury.io/rb/messagebird)
2
- [![Code Climate](https://codeclimate.com/github/nedap/messagebird-sms-api-ruby.png)](https://codeclimate.com/github/nedap/messagebird-sms-api-ruby)
3
- [![Coverage Status](https://coveralls.io/repos/nedap/messagebird-sms-api-ruby/badge.png?branch=master)](https://coveralls.io/r/nedap/messagebird-sms-api-ruby?branch=master)
4
- [![Build Status](https://travis-ci.org/nedap/messagebird-sms-api-ruby.png?branch=master)](https://travis-ci.org/nedap/messagebird-sms-api-ruby)
2
+ [![Code Climate](https://codeclimate.com/github/blaet/messagebird-sms-api-ruby.png)](https://codeclimate.com/github/blaet/messagebird-sms-api-ruby)
3
+ [![Coverage Status](https://coveralls.io/repos/blaet/messagebird-sms-api-ruby/badge.png?branch=master)](https://coveralls.io/r/blaet/messagebird-sms-api-ruby?branch=master)
4
+ [![Build Status](https://travis-ci.org/blaet/messagebird-sms-api-ruby.png?branch=master)](https://travis-ci.org/blaet/messagebird-sms-api-ruby)
5
5
 
6
6
  # MessageBird SMS API for Ruby
7
7
  Implementation of the MessageBird SMS API for Ruby.
data/Rakefile CHANGED
@@ -17,13 +17,12 @@ require 'rake'
17
17
  begin
18
18
  require 'jeweler'
19
19
  Jeweler::Tasks.new do |gem|
20
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
21
20
  gem.name = "messagebird"
22
- gem.homepage = "http://github.com/nedap/messagebird-sms-api-ruby"
21
+ gem.homepage = "http://github.com/blaet/messagebird-sms-api-ruby"
23
22
  gem.license = "MIT"
24
23
  gem.summary = %Q{MessageBird API for Ruby}
25
- gem.description = %Q{Implementation of the MessageBird text (sms) service API}
26
- gem.email = "bram.devries@nedap.com"
24
+ gem.description = %Q{Implementation of the MessageBird SMS API for Ruby}
25
+ gem.email = "dev@blaet.net"
27
26
  gem.authors = ["Bram de Vries"]
28
27
  # dependencies defined in Gemfile
29
28
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -1,4 +1,4 @@
1
- # Based on https://github.com/jwkoelewijn/batsir/blob/master/lib/batsir/config.rb
1
+ # Config class based on https://github.com/jwkoelewijn/batsir/blob/master/lib/batsir/config.rb
2
2
 
3
3
  module MessageBird
4
4
  class Config
@@ -2,11 +2,11 @@ module MessageBird::HTTP
2
2
  class SMS < MessageBird::Deliverable
3
3
  include MessageBird::Helpers
4
4
 
5
- attr_reader :originator, :recipients, :message
5
+ attr_reader :sender, :recipients, :message
6
6
  attr_writer :username, :api_url
7
7
 
8
- def initialize(originator, recipients, message, options = {}, &block)
9
- @originator = originator
8
+ def initialize(sender_name, recipients, message, options = {}, &block)
9
+ self.sender = sender_name
10
10
  @recipients = format_recipients(recipients)
11
11
  @message = URI.escape(message)
12
12
  @callback = block
@@ -27,7 +27,7 @@ module MessageBird::HTTP
27
27
  end
28
28
 
29
29
  def url
30
- @url ||= "#{api_url}?username=#{username}&password=#{password}&sender=#{originator}&test=#{test_mode}&destination=#{recipients}&body=#{message}"
30
+ @url ||= "#{api_url}?username=#{username}&password=#{password}&sender=#{sender}&test=#{test_mode}&destination=#{recipients}&body=#{message}"
31
31
  end
32
32
 
33
33
  def username
@@ -73,5 +73,27 @@ module MessageBird::HTTP
73
73
  @test_mode = bool ? 1 : 0
74
74
  end
75
75
 
76
+ def sender=(str)
77
+ ensure_valid_sender!(str)
78
+ @sender = str
79
+ end
80
+
81
+ def ensure_valid_sender!(input)
82
+ raise SenderInvalid.new(input) unless sender_valid?(input)
83
+ end
84
+
85
+ def sender_valid?(input)
86
+ sender_telephone_number?(input) || sender_string?(input)
87
+ end
88
+
89
+ def sender_string?(input)
90
+ input =~ /^[a-zA-Z0-9]{1,11}$/
91
+ end
92
+
93
+ def sender_telephone_number?(input)
94
+ input =~ /^\+(\d{11})$/
95
+ end
96
+
97
+ class SenderInvalid < ArgumentError; end
76
98
  end
77
99
  end
data/messagebird.gemspec CHANGED
@@ -2,17 +2,18 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: messagebird 0.1.2 ruby lib
5
+ # stub: messagebird 0.1.3 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "messagebird"
9
- s.version = "0.1.2"
9
+ s.version = "0.1.3"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
12
13
  s.authors = ["Bram de Vries"]
13
- s.date = "2014-01-27"
14
- s.description = "Implementation of the MessageBird text (sms) service API"
15
- s.email = "bram.devries@nedap.com"
14
+ s.date = "2014-01-30"
15
+ s.description = "Implementation of the MessageBird SMS API for Ruby"
16
+ s.email = "dev@blaet.net"
16
17
  s.executables = ["messagebird_test_connection"]
17
18
  s.extra_rdoc_files = [
18
19
  "LICENSE",
@@ -20,8 +21,8 @@ Gem::Specification.new do |s|
20
21
  ]
21
22
  s.files = [
22
23
  ".travis.yml",
24
+ "CHANGES.md",
23
25
  "Gemfile",
24
- "Gemfile.1.8.7",
25
26
  "LICENSE",
26
27
  "README.md",
27
28
  "Rakefile",
@@ -48,10 +49,9 @@ Gem::Specification.new do |s|
48
49
  "test/messagebird/sms_test.rb",
49
50
  "test/messagebird_test.rb"
50
51
  ]
51
- s.homepage = "http://github.com/nedap/messagebird-sms-api-ruby"
52
+ s.homepage = "http://github.com/blaet/messagebird-sms-api-ruby"
52
53
  s.licenses = ["MIT"]
53
- s.require_paths = ["lib"]
54
- s.rubygems_version = "2.1.11"
54
+ s.rubygems_version = "2.2.0"
55
55
  s.summary = "MessageBird API for Ruby"
56
56
 
57
57
  if s.respond_to? :specification_version then
@@ -4,12 +4,31 @@ module MessageBirdHTTPSMSHelper
4
4
  def format_recipients(input)
5
5
  subject.send :format_recipients, input
6
6
  end
7
+
8
+ def sender_telephone_number?(input)
9
+ subject.send :sender_telephone_number?, input
10
+ end
11
+
12
+ def sender_string?(input)
13
+ subject.send :sender_string?, input
14
+ end
7
15
  end
8
16
 
9
17
  describe MessageBird::HTTP::SMS do
10
18
  include MessageBirdHTTPSMSHelper
11
19
 
12
- subject{ MessageBird::HTTP::SMS.new('sender',3154447100,'message',{}) }
20
+ let(:subject_class){ MessageBird::HTTP::SMS }
21
+
22
+ subject{ subject_class.new('sender',3154447100,'message') }
23
+
24
+ describe '#initialize' do
25
+ it 'delegates setting sender to a setter method' do
26
+ any_instance_of(MessageBird::HTTP::SMS) do |klass|
27
+ mock.proxy(klass).sender=('footest')
28
+ end
29
+ subject_class.new('footest',3154447100,'message')
30
+ end
31
+ end
13
32
 
14
33
  describe '#api_url' do
15
34
  it 'retrieves the api_url from the Config object' do
@@ -31,6 +50,18 @@ describe MessageBird::HTTP::SMS do
31
50
  end
32
51
  end
33
52
 
53
+ describe '#ensure_valid_sender!' do
54
+ it 'works as designed' do
55
+ stub(subject).sender_valid?{true}
56
+ subject.send :ensure_valid_sender!, 'test'
57
+
58
+ stub(subject).sender_valid?{false}
59
+ assert_raises(MessageBird::HTTP::SMS::SenderInvalid){
60
+ subject.send :ensure_valid_sender!, 'test'
61
+ }
62
+ end
63
+ end
64
+
34
65
  describe '#format_recipients' do
35
66
  it 'converts an integer to string' do
36
67
  format_recipients(31541471696).must_equal "31541471696"
@@ -42,6 +73,76 @@ describe MessageBird::HTTP::SMS do
42
73
  end
43
74
  end
44
75
 
76
+ describe '#sender=' do
77
+ it 'sets the sender when valid' do
78
+ subject.send :sender=, 'footest'
79
+ subject.sender.must_equal 'footest'
80
+ end
81
+
82
+ it 'throws an exception if sender not valid' do
83
+ assert_raises(MessageBird::HTTP::SMS::SenderInvalid){
84
+ subject.send :sender=, 'garbledeegook'
85
+ }
86
+ end
87
+ end
88
+
89
+ describe '#sender_telephone_number?' do
90
+ it 'detects valid numbers' do
91
+ assert sender_telephone_number?('+31571000000')
92
+ assert sender_telephone_number?('+31671000000')
93
+ assert sender_telephone_number?('+15551234567')
94
+ end
95
+
96
+ it 'detects invalid numbers by length' do
97
+ refute sender_telephone_number?('+315710000001') # too long
98
+ refute sender_telephone_number?('+3157100001') # too short
99
+ end
100
+
101
+ it 'detects invalid numbers by spaces' do
102
+ refute sender_telephone_number?('+31571000 00')
103
+ refute sender_telephone_number?(' +31571000 0')
104
+ refute sender_telephone_number?('+3157100000 ')
105
+ end
106
+ end
107
+
108
+ describe '#sender_string?' do
109
+ it 'detects valid strings' do
110
+ assert sender_string?('A')
111
+ assert sender_string?('MessageBird')
112
+ end
113
+
114
+ it 'detects invalid strings by length' do
115
+ refute sender_string?('thiswillbreak')
116
+ refute sender_string?('')
117
+ end
118
+
119
+ it 'detects invalid strings by characters' do
120
+ refute sender_string?('blaet test')
121
+ refute sender_string?(' blaet')
122
+ refute sender_string?('blaet ')
123
+ end
124
+ end
125
+
126
+ describe '#sender_valid?' do
127
+ it 'works as designed' do
128
+ stub(subject).sender_string?{true}
129
+ stub(subject).sender_telephone_number?{true}
130
+ assert subject.send(:sender_valid?, 'test')
131
+
132
+ stub(subject).sender_string?{false}
133
+ stub(subject).sender_telephone_number?{true}
134
+ assert subject.send(:sender_valid?, 'test')
135
+
136
+ stub(subject).sender_string?{true}
137
+ stub(subject).sender_telephone_number?{false}
138
+ assert subject.send(:sender_valid?, 'test')
139
+
140
+ stub(subject).sender_string?{false}
141
+ stub(subject).sender_telephone_number?{false}
142
+ refute subject.send(:sender_valid?, 'test')
143
+ end
144
+ end
145
+
45
146
  describe '#password' do
46
147
  it 'retrieves the password from the Config object' do
47
148
  mock(MessageBird::Config).password{'test'}
@@ -26,6 +26,9 @@ describe MessageBird::SMS do
26
26
  end
27
27
 
28
28
  it 'returns a new SMS object of the appropriate module' do
29
+ any_instance_of(MessageBird::HTTP::SMS) do |klass|
30
+ stub(klass).ensure_valid_sender!
31
+ end
29
32
  subject.new(1,2,'message',{:module => :http}).class.must_equal MessageBird::HTTP::SMS
30
33
  end
31
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: messagebird
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram de Vries
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-27 00:00:00.000000000 Z
11
+ date: 2014-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jeweler
@@ -24,8 +24,8 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.0.0
27
- description: Implementation of the MessageBird text (sms) service API
28
- email: bram.devries@nedap.com
27
+ description: Implementation of the MessageBird SMS API for Ruby
28
+ email: dev@blaet.net
29
29
  executables:
30
30
  - messagebird_test_connection
31
31
  extensions: []
@@ -34,8 +34,8 @@ extra_rdoc_files:
34
34
  - README.md
35
35
  files:
36
36
  - .travis.yml
37
+ - CHANGES.md
37
38
  - Gemfile
38
- - Gemfile.1.8.7
39
39
  - LICENSE
40
40
  - README.md
41
41
  - Rakefile
@@ -61,7 +61,7 @@ files:
61
61
  - test/messagebird/http/sms_test.rb
62
62
  - test/messagebird/sms_test.rb
63
63
  - test/messagebird_test.rb
64
- homepage: http://github.com/nedap/messagebird-sms-api-ruby
64
+ homepage: http://github.com/blaet/messagebird-sms-api-ruby
65
65
  licenses:
66
66
  - MIT
67
67
  metadata: {}
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  version: '0'
82
82
  requirements: []
83
83
  rubyforge_project:
84
- rubygems_version: 2.1.11
84
+ rubygems_version: 2.2.0
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: MessageBird API for Ruby
data/Gemfile.1.8.7 DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- group :test do
4
- gem 'bundler', '~> 1.0'
5
- gem 'rake'
6
- gem 'minitest', :require => false
7
- gem 'rr', :require => false
8
- end