mblox 0.0.1
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.
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +60 -0
- data/Rakefile +1 -0
- data/STDOUT +1 -0
- data/config.yml.example +8 -0
- data/lib/mblox.rb +12 -0
- data/lib/mblox/configuration.rb +33 -0
- data/lib/mblox/sms.rb +65 -0
- data/lib/mblox/sms_error.rb +4 -0
- data/lib/mblox/version.rb +3 -0
- data/mblox.gemspec +28 -0
- data/spec/log_spec.rb +43 -0
- data/spec/sms_spec.rb +48 -0
- data/spec/spec_helper.rb +32 -0
- metadata +179 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Isaac Betesh
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# Mblox
|
2
|
+
|
3
|
+
This gem is for subscribers to Mblox to send SMS messages.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'mblox'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install mblox
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
Configuration
|
22
|
+
|
23
|
+
Mblox.configure do |config|
|
24
|
+
# Set all of these values, provided to you in your Mblox subscription
|
25
|
+
config.outbound_url = ...
|
26
|
+
config.profile_id = ...
|
27
|
+
config.sender_id = ...
|
28
|
+
config.password = ...
|
29
|
+
config.partner_name = ...
|
30
|
+
config.tariff = ...
|
31
|
+
config.service_id = ...
|
32
|
+
|
33
|
+
# You can also configure some logging options
|
34
|
+
# In a Rails environment, config.logger will default to Rails.logger and config.log_at will default to :debug
|
35
|
+
# config.log_at means the level at which Mblox will log.
|
36
|
+
# If config.log_at == :debug and your logger's log level is :info, logging will be suppressed because it is below the log level of the logger.
|
37
|
+
config.logger = Logger.new(STDOUT)
|
38
|
+
config.log_at :info
|
39
|
+
end
|
40
|
+
|
41
|
+
Once your application is configured, send messages:
|
42
|
+
|
43
|
+
phone_number = 2225555555 # The number you're sending to. Must be a 10-digit number, including the area code. Can be a String or Fixnum.
|
44
|
+
Mblox::Sms.new(phone_number, "your message").send
|
45
|
+
|
46
|
+
## Testing
|
47
|
+
|
48
|
+
Copy config.yml.example to config.yml and set all the values in that file. Run:
|
49
|
+
|
50
|
+
rspec
|
51
|
+
|
52
|
+
You should recieve 2 SMS messages to your phone within several seconds.
|
53
|
+
|
54
|
+
## Contributing
|
55
|
+
|
56
|
+
1. Fork it
|
57
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
58
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
59
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
60
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/STDOUT
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Logfile created on 2013-05-01 15:05:03 -0400 by logger.rb/31641
|
data/config.yml.example
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
outbound_url: http://xml2.us.mblox.com:8180/send
|
2
|
+
profile_id: "A five digit number"
|
3
|
+
sender_id: "A five digit number that SMS messages are sent from"
|
4
|
+
password: "Your password"
|
5
|
+
partner_name: "Abbreviation of your company name, assigned by Mblox"
|
6
|
+
tariff: 0
|
7
|
+
service_id: "A five digit number"
|
8
|
+
test_number: "A phone number that you want to send SMS messages to when testing"
|
data/lib/mblox.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "mblox/configuration"
|
2
|
+
require "mblox/sms"
|
3
|
+
require "mblox/sms_error"
|
4
|
+
require "mblox/version"
|
5
|
+
|
6
|
+
module Mblox
|
7
|
+
class << self
|
8
|
+
def log *args
|
9
|
+
self.config.logger.__send__(self.config.log_level, *args) if self.config.logger
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Mblox
|
2
|
+
class << self
|
3
|
+
def config
|
4
|
+
@config ||= Configuration.new
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.configure
|
9
|
+
yield self.config
|
10
|
+
end
|
11
|
+
|
12
|
+
class Configuration
|
13
|
+
attr_accessor :outbound_url, :profile_id, :sender_id, :password, :partner_name, :tariff, :service_id
|
14
|
+
attr_reader :logger, :log_level
|
15
|
+
def initialize
|
16
|
+
@logger = Rails.logger if defined?(::Rails)
|
17
|
+
@log_level = :debug
|
18
|
+
end
|
19
|
+
|
20
|
+
def log_at level
|
21
|
+
validate @logger, level
|
22
|
+
@log_level = level
|
23
|
+
end
|
24
|
+
def logger= logger
|
25
|
+
validate logger, @log_level
|
26
|
+
@logger = logger
|
27
|
+
end
|
28
|
+
private
|
29
|
+
def validate logger, level
|
30
|
+
raise ArgumentError, "Mblox log level must be set to :fatal, :error, :warn, :info or :debug" if (logger && !logger.respond_to?(level))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/mblox/sms.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'active_support/core_ext/hash'
|
2
|
+
require 'addressable/uri'
|
3
|
+
require 'builder'
|
4
|
+
require "net/https"
|
5
|
+
|
6
|
+
module Mblox
|
7
|
+
class Sms
|
8
|
+
attr_reader :phone, :message
|
9
|
+
def initialize(phone,message)
|
10
|
+
phone = phone.to_s
|
11
|
+
raise SmsError, "Phone number must be ten digits" unless /\A[0-9]{10}\z/.match(phone)
|
12
|
+
raise SmsError, "Phone number cannot begin with 0 or 1" if ['0','1'].include?(phone[0].to_s)
|
13
|
+
raise SmsError, "Message cannot be blank" if message.empty?
|
14
|
+
@phone = "1#{phone}"
|
15
|
+
@message = message.dup
|
16
|
+
end
|
17
|
+
|
18
|
+
def send
|
19
|
+
commit build
|
20
|
+
end
|
21
|
+
private
|
22
|
+
def commit(request_body)
|
23
|
+
Mblox.log "Sending SMS to Mblox:\n#{request_body}"
|
24
|
+
uri = URI.parse(Mblox.config.outbound_url)
|
25
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
26
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
27
|
+
request.body = request_body
|
28
|
+
request.content_type = 'text/xml'
|
29
|
+
response = http.start {|http| http.request(request) }
|
30
|
+
response = response.body
|
31
|
+
Mblox.log "Mblox responds with:\n#{response}"
|
32
|
+
build_response(Hash.from_xml(response))
|
33
|
+
end
|
34
|
+
|
35
|
+
def build_response(result)
|
36
|
+
result = result['NotificationRequestResult']
|
37
|
+
result_header = result['NotificationResultHeader']
|
38
|
+
subscriber_result = result['NotificationResultList']['NotificationResult']['SubscriberResult']
|
39
|
+
"RequestResult: \"#{result_header['RequestResultCode']}:#{result_header['RequestResultText']}\" / SubscriberResult: \"#{subscriber_result['SubscriberResultCode']}:#{subscriber_result['SubscriberResultText']}\""
|
40
|
+
end
|
41
|
+
|
42
|
+
def build
|
43
|
+
builder = Builder::XmlMarkup.new
|
44
|
+
builder.instruct!(:xml, :encoding => "ISO-8859-1")
|
45
|
+
builder.NotificationRequest(:Version => "3.5") do |nr|
|
46
|
+
nr.NotificationHeader do |nh|
|
47
|
+
nh.PartnerName(Mblox.config.partner_name)
|
48
|
+
nh.PartnerPassword(Mblox.config.password)
|
49
|
+
end
|
50
|
+
nr.NotificationList(:BatchID => "1") do |nl|
|
51
|
+
nl.Notification(:SequenceNumber => "1", :MessageType => "SMS") do |n|
|
52
|
+
n.Message(@message)
|
53
|
+
n.Profile(Mblox.config.profile_id)
|
54
|
+
n.SenderID(Mblox.config.sender_id, :Type => 'Shortcode')
|
55
|
+
n.Tariff(Mblox.config.tariff)
|
56
|
+
n.Subscriber do |s|
|
57
|
+
s.SubscriberNumber(@phone)
|
58
|
+
end
|
59
|
+
n.ServiceId(Mblox.config.service_id)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/mblox.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'mblox/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "mblox"
|
8
|
+
spec.version = Mblox::VERSION
|
9
|
+
spec.authors = ["Isaac Betesh"]
|
10
|
+
spec.email = ["iybetesh@gmail.com"]
|
11
|
+
spec.description = "Send SMS messages"
|
12
|
+
spec.summary = `cat README.md`
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
|
25
|
+
spec.add_runtime_dependency 'activesupport'
|
26
|
+
spec.add_runtime_dependency 'addressable'
|
27
|
+
spec.add_runtime_dependency 'builder'
|
28
|
+
end
|
data/spec/log_spec.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "logger"
|
3
|
+
|
4
|
+
module Mblox
|
5
|
+
class << self
|
6
|
+
def reset_configuration
|
7
|
+
@config = Configuration.new
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "logger" do
|
13
|
+
before(:each) do
|
14
|
+
Mblox.reset_configuration
|
15
|
+
end
|
16
|
+
|
17
|
+
after(:all) do
|
18
|
+
set_configuration
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should allow log level info" do
|
22
|
+
Mblox.config.log_at :info
|
23
|
+
Mblox.config.logger = ::Logger.new('/dev/null')
|
24
|
+
expect { Mblox.log "Some info" }.to_not raise_error
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should default to log level debug" do
|
28
|
+
expect(Mblox.config.log_level).to eq(:debug)
|
29
|
+
expect { Mblox.log "Some debug info" }.to_not raise_error
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not allow log level news when the logger is created after log level is set" do
|
33
|
+
Mblox.config.log_at :news
|
34
|
+
expect { Mblox.config.logger = ::Logger.new("STDOUT")}.to raise_error(ArgumentError, "Mblox log level must be set to :fatal, :error, :warn, :info or :debug")
|
35
|
+
expect { Mblox.log "Some news" }.to_not raise_error
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should not allow log level news when the logger is created before log level is set and should remain in a valid state" do
|
39
|
+
Mblox.config.logger = ::Logger.new("/dev/null")
|
40
|
+
expect { Mblox.config.log_at :news }.to raise_error(ArgumentError, "Mblox log level must be set to :fatal, :error, :warn, :info or :debug")
|
41
|
+
expect { Mblox.log "Some news" }.to_not raise_error
|
42
|
+
end
|
43
|
+
end
|
data/spec/sms_spec.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "phone number" do
|
4
|
+
it "should be 10 digits" do
|
5
|
+
expect { Mblox::Sms.new("2"*9, the_message) }.to raise_error(Mblox::SmsError, "Phone number must be ten digits")
|
6
|
+
expect { Mblox::Sms.new("2"*10, the_message) }.to_not raise_error
|
7
|
+
expect { Mblox::Sms.new("2"*11, the_message) }.to raise_error(Mblox::SmsError, "Phone number must be ten digits")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should not start with 0 or 1" do
|
11
|
+
expect { Mblox::Sms.new("1"+"2"*9, the_message) }.to raise_error(Mblox::SmsError, "Phone number cannot begin with 0 or 1")
|
12
|
+
expect { Mblox::Sms.new("0"+"2"*9, the_message) }.to raise_error(Mblox::SmsError, "Phone number cannot begin with 0 or 1")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be safe from changing" do
|
16
|
+
number = TEST_NUMBER.to_s
|
17
|
+
mblox = Mblox::Sms.new(number,the_message)
|
18
|
+
number[1..3] = ''
|
19
|
+
expect(mblox.phone).to eq("1#{TEST_NUMBER}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "message" do
|
24
|
+
it "cannot be blank" do
|
25
|
+
expect { Mblox::Sms.new("2"*10, "") }.to raise_error(Mblox::SmsError, "Message cannot be blank")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should be safe from changing" do
|
29
|
+
msg = the_message
|
30
|
+
mblox = Mblox::Sms.new(TEST_NUMBER,msg)
|
31
|
+
msg[1..3] = ''
|
32
|
+
expect(mblox.message).to eq(the_message)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "SMS messages" do
|
37
|
+
it "should be sent when the phone number is a Fixnum" do
|
38
|
+
expect(Mblox::Sms.new(TEST_NUMBER.to_i,the_message).send).to eq(result_ok)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should be sent when the phone number is a String" do
|
42
|
+
expect(Mblox::Sms.new(TEST_NUMBER.to_s,the_message).send).to eq(result_ok)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should fail when sent to a landline" do
|
46
|
+
expect(Mblox::Sms.new("6176354500",the_message).send).to eq(result_unroutable)
|
47
|
+
end
|
48
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require "mblox"
|
2
|
+
require "yaml"
|
3
|
+
|
4
|
+
CONFIG = YAML::load(File.open('config.yml'))
|
5
|
+
|
6
|
+
def set_configuration
|
7
|
+
Mblox.configure do |config|
|
8
|
+
config.outbound_url = CONFIG['outbound_url']
|
9
|
+
config.profile_id = CONFIG['profile_id']
|
10
|
+
config.sender_id = CONFIG['sender_id']
|
11
|
+
config.password = CONFIG['password']
|
12
|
+
config.partner_name = CONFIG['partner_name']
|
13
|
+
config.tariff = CONFIG['tariff']
|
14
|
+
config.service_id = CONFIG['service_id']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
set_configuration
|
19
|
+
|
20
|
+
TEST_NUMBER = CONFIG['test_number']
|
21
|
+
|
22
|
+
def the_message
|
23
|
+
"Mblox gem test sent at #{Time.now}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def result_ok
|
27
|
+
"RequestResult: \"0:OK\" / SubscriberResult: \"0:OK\""
|
28
|
+
end
|
29
|
+
|
30
|
+
def result_unroutable
|
31
|
+
"RequestResult: \"0:OK\" / SubscriberResult: \"10:MsipRejectCode=29 Number unroutable:2e Do not retry:2e\""
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mblox
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Isaac Betesh
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-05-01 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: activesupport
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: addressable
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: builder
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: Send SMS messages
|
111
|
+
email:
|
112
|
+
- iybetesh@gmail.com
|
113
|
+
executables: []
|
114
|
+
extensions: []
|
115
|
+
extra_rdoc_files: []
|
116
|
+
files:
|
117
|
+
- .gitignore
|
118
|
+
- Gemfile
|
119
|
+
- LICENSE.txt
|
120
|
+
- README.md
|
121
|
+
- Rakefile
|
122
|
+
- STDOUT
|
123
|
+
- config.yml.example
|
124
|
+
- lib/mblox.rb
|
125
|
+
- lib/mblox/configuration.rb
|
126
|
+
- lib/mblox/sms.rb
|
127
|
+
- lib/mblox/sms_error.rb
|
128
|
+
- lib/mblox/version.rb
|
129
|
+
- mblox.gemspec
|
130
|
+
- spec/log_spec.rb
|
131
|
+
- spec/sms_spec.rb
|
132
|
+
- spec/spec_helper.rb
|
133
|
+
homepage: ''
|
134
|
+
licenses:
|
135
|
+
- MIT
|
136
|
+
post_install_message:
|
137
|
+
rdoc_options: []
|
138
|
+
require_paths:
|
139
|
+
- lib
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ! '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ! '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
requirements: []
|
153
|
+
rubyforge_project:
|
154
|
+
rubygems_version: 1.8.24
|
155
|
+
signing_key:
|
156
|
+
specification_version: 3
|
157
|
+
summary: ! '# Mblox This gem is for subscribers to Mblox to send SMS messages. ##
|
158
|
+
Installation Add this line to your application''s Gemfile: gem ''mblox'' And
|
159
|
+
then execute: $ bundle Or install it yourself as: $ gem install mblox ## Usage Configuration Mblox.configure
|
160
|
+
do |config| # Set all of these values, provided to you in your Mblox subscription
|
161
|
+
config.outbound_url = ... config.profile_id = ... config.sender_id = ... config.password
|
162
|
+
= ... config.partner_name = ... config.tariff = ... config.service_id = ... # You
|
163
|
+
can also configure some logging options # In a Rails environment, config.logger
|
164
|
+
will default to Rails.logger and config.log_at will default to :debug # config.log_at
|
165
|
+
means the level at which Mblox will log. # If config.log_at == :debug and your logger''s
|
166
|
+
log level is :info, logging will be suppressed because it is below the log level
|
167
|
+
of the logger. config.logger = Logger.new(STDOUT) config.log_at :info end Once
|
168
|
+
your application is configured, send messages: phone_number = 2225555555 # The
|
169
|
+
number you''re sending to. Must be a 10-digit number, including the area code. Can
|
170
|
+
be a String or Fixnum. Mblox::Sms.new(phone_number, "your message").send ## Testing Copy
|
171
|
+
config.yml.example to config.yml and set all the values in that file. Run: rspec You
|
172
|
+
should recieve 2 SMS messages to your phone within several seconds. ## Contributing 1.
|
173
|
+
Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit
|
174
|
+
your changes (`git commit -am ''Add some feature''`) 4. Push to the branch (`git
|
175
|
+
push origin my-new-feature`) 5. Create new Pull Request'
|
176
|
+
test_files:
|
177
|
+
- spec/log_spec.rb
|
178
|
+
- spec/sms_spec.rb
|
179
|
+
- spec/spec_helper.rb
|