vianettsms 0.0.2
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 +4 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/README.md +37 -0
- data/Rakefile +1 -0
- data/lib/vianettsms.rb +15 -0
- data/lib/vianettsms/sms.rb +55 -0
- data/lib/vianettsms/version.rb +3 -0
- data/spec/integration/vianettsms_spec.rb +115 -0
- data/spec/spec_helper.rb +13 -0
- data/spec/vianettsms_spec.rb +62 -0
- data/vianettsms.gemspec +26 -0
- metadata +119 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
vianettsms
|
2
|
+
==========
|
3
|
+
|
4
|
+
Gem for send sms messages using Vianett service from ruby.
|
5
|
+
(Web site: http://www.vianett.com/)
|
6
|
+
|
7
|
+
Installation
|
8
|
+
============
|
9
|
+
|
10
|
+
From rubygems
|
11
|
+
gem install vianettsms
|
12
|
+
|
13
|
+
or from github: You install the gem in your rails app by adding it your Gemfile:
|
14
|
+
|
15
|
+
gem 'vianettsms', :git => 'git://github.com/taulamet/vianettsms.git'
|
16
|
+
|
17
|
+
bundle install
|
18
|
+
|
19
|
+
|
20
|
+
Ruby sample script
|
21
|
+
==================
|
22
|
+
|
23
|
+
require 'rubygems'
|
24
|
+
require 'vianettsms'
|
25
|
+
|
26
|
+
# Account Configuration
|
27
|
+
Vianettsms.config = { :username => "testaccount@demo.com", :password => "secret" }
|
28
|
+
|
29
|
+
# sms creation
|
30
|
+
sms = Vianettsms::Sms.new(:to => "543424555555", :message => "Aloha!", :msgid => "1234")
|
31
|
+
|
32
|
+
sms.deliver
|
33
|
+
|
34
|
+
Testing
|
35
|
+
=======
|
36
|
+
rspec spec # Mocking Vianett API
|
37
|
+
VIANETSMS_ENABLED=true rspec spec # Using Vianett API (require valid credentials to work)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/vianettsms.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "vianettsms/version"
|
2
|
+
require "vianettsms/sms"
|
3
|
+
require "net/http"
|
4
|
+
require "rubygems"
|
5
|
+
require "xmlsimple"
|
6
|
+
|
7
|
+
module Vianettsms
|
8
|
+
|
9
|
+
class << self; attr_accessor :config, :url end
|
10
|
+
|
11
|
+
@url = 'http://smsc.vianett.no/V3/CPA/MT/MT.ashx'
|
12
|
+
|
13
|
+
@config = {:username => "", :password => ""}
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Vianettsms
|
2
|
+
|
3
|
+
class Sms
|
4
|
+
attr_accessor :to, :message, :msgid
|
5
|
+
|
6
|
+
attr_reader :status, :response_hash
|
7
|
+
|
8
|
+
def initialize(params={})
|
9
|
+
@to = params[:to]
|
10
|
+
@message = params[:message]
|
11
|
+
@msgid = params[:msgid]
|
12
|
+
@response = nil
|
13
|
+
@response_hash= {}
|
14
|
+
@status = nil
|
15
|
+
@delivered = false
|
16
|
+
end
|
17
|
+
|
18
|
+
def deliver
|
19
|
+
params = {
|
20
|
+
:username => Vianettsms.config[:username],
|
21
|
+
:password => Vianettsms.config[:password],
|
22
|
+
:tel => @to || "",
|
23
|
+
:msg => @message || "",
|
24
|
+
:msgid => @msgid || ""
|
25
|
+
}
|
26
|
+
if valid?(params)
|
27
|
+
handle_response(params)
|
28
|
+
end
|
29
|
+
delivered?
|
30
|
+
end
|
31
|
+
|
32
|
+
def delivered?
|
33
|
+
@delivered
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
attr_accessor :response
|
39
|
+
|
40
|
+
def valid?(params)
|
41
|
+
not (params[:tel].empty? or params[:msg].empty? or params[:msgid].empty?)
|
42
|
+
end
|
43
|
+
|
44
|
+
def handle_response(params)
|
45
|
+
uri = URI.parse(Vianettsms.url)
|
46
|
+
@response = Net::HTTP.post_form(uri, params)
|
47
|
+
unless @response.nil?
|
48
|
+
@response_hash = XmlSimple.xml_in(@response.body)
|
49
|
+
@status = @response_hash['errorcode']
|
50
|
+
@delivered = @status == '200'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'spec_helper.rb'
|
2
|
+
|
3
|
+
describe Vianettsms::Sms, "#deliver", :vianettsms => true do
|
4
|
+
|
5
|
+
puts "============ VIANETTSMS IS ENABLED ================"
|
6
|
+
|
7
|
+
let(:valid_config) { { :username => 'diego@maradona.com.ar',
|
8
|
+
:password => 'eldie10' } }
|
9
|
+
|
10
|
+
context "with valid configuration" do
|
11
|
+
|
12
|
+
before { Vianettsms.config = valid_config }
|
13
|
+
|
14
|
+
context "with valid params" do
|
15
|
+
let(:valid_params) do {
|
16
|
+
:msgid => '1234',
|
17
|
+
:to => '+471111111111',
|
18
|
+
|
19
|
+
:message => 'Aloha!' }
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:sms) {
|
23
|
+
sms = Vianettsms::Sms.new(valid_params)
|
24
|
+
sms.deliver
|
25
|
+
sms
|
26
|
+
}
|
27
|
+
it "should have status 200" do
|
28
|
+
sms.status.should == "200"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return correct refno" do
|
32
|
+
sms.response_hash['refno'].should == "1234"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "without params" do
|
37
|
+
|
38
|
+
let(:sms) {
|
39
|
+
sms = Vianettsms::Sms.new({})
|
40
|
+
sms.deliver
|
41
|
+
sms
|
42
|
+
}
|
43
|
+
|
44
|
+
it "should return errorcode 1000 (Message ID required)" do
|
45
|
+
sms.status.should == "1000"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when msgid not sent" do
|
50
|
+
|
51
|
+
let(:params) do {
|
52
|
+
:msgid => '',
|
53
|
+
:to => '4711111111',
|
54
|
+
:message => 'Hello World' }
|
55
|
+
end
|
56
|
+
|
57
|
+
let(:sms) {
|
58
|
+
sms = Vianettsms::Sms.new(params)
|
59
|
+
sms.deliver
|
60
|
+
sms
|
61
|
+
}
|
62
|
+
|
63
|
+
it "should return errorcode 1000 (Message ID required)" do
|
64
|
+
sms.status.should == "1000"
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when phone number is empty" do
|
70
|
+
|
71
|
+
let(:params) do {
|
72
|
+
:msgid => '1234',
|
73
|
+
:to => '',
|
74
|
+
:message => 'Hello World' }
|
75
|
+
end
|
76
|
+
|
77
|
+
let(:sms) {
|
78
|
+
sms = Vianettsms::Sms.new(params)
|
79
|
+
sms.deliver
|
80
|
+
sms
|
81
|
+
}
|
82
|
+
|
83
|
+
|
84
|
+
it "should return errorcode 105 (No recipients specified or invalid recipient value)" do
|
85
|
+
sms.status.should == "105"
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context "with invalid configuration" do
|
92
|
+
let(:invalid_config) { { :username => 'diego@maradona.com.ar',
|
93
|
+
:password => '1234' } }
|
94
|
+
|
95
|
+
before { Vianettsms.config = invalid_config }
|
96
|
+
|
97
|
+
let(:valid_params) do {
|
98
|
+
:msgid => '1234',
|
99
|
+
:to => '4711111111',
|
100
|
+
:message => 'Hello World' }
|
101
|
+
end
|
102
|
+
|
103
|
+
let(:sms) {
|
104
|
+
sms = Vianettsms::Sms.new(valid_params)
|
105
|
+
sms.deliver
|
106
|
+
sms
|
107
|
+
}
|
108
|
+
|
109
|
+
it "should return errorcode 100 (Login failed)" do
|
110
|
+
sms.status.should == "100"
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require "vianettsms"
|
2
|
+
require 'webmock/rspec'
|
3
|
+
|
4
|
+
WebMock.allow_net_connect!
|
5
|
+
|
6
|
+
::VIANETTSMS_ENABLED = ENV["VIANETSMS_ENABLED"] == "true" #DISABLED BY DEFAULT
|
7
|
+
puts "============ VIANETTSMS IS DISABLED ================" unless ::VIANETTSMS_ENABLED
|
8
|
+
|
9
|
+
RSpec.configure do |c|
|
10
|
+
c.filter_run_excluding :vianettsms => true unless ::VIANETTSMS_ENABLED
|
11
|
+
end
|
12
|
+
|
13
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper.rb'
|
2
|
+
|
3
|
+
describe Vianettsms, "Config" do
|
4
|
+
|
5
|
+
let(:valid_config) { { :username => 'diego@maradona.com.ar',
|
6
|
+
:password => '1234' } }
|
7
|
+
|
8
|
+
before { Vianettsms.config = valid_config }
|
9
|
+
|
10
|
+
it "should have valid username" do
|
11
|
+
Vianettsms.config[:username].should == "diego@maradona.com.ar"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have valid password" do
|
15
|
+
Vianettsms.config[:password].should == "1234"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Vianettsms::Sms, "#deliver" do
|
20
|
+
|
21
|
+
let(:valid_config) { { :username => 'diego@maradona.com.ar',
|
22
|
+
:password => '1234' } }
|
23
|
+
|
24
|
+
context "With valid params" do
|
25
|
+
|
26
|
+
before { Vianettsms.config = valid_config }
|
27
|
+
|
28
|
+
let(:valid_params) do {
|
29
|
+
:msgid => '1234',
|
30
|
+
:to => '4711111111',
|
31
|
+
:message => 'Hello World' }
|
32
|
+
end
|
33
|
+
|
34
|
+
before do
|
35
|
+
stub_request(:post, Vianettsms.url).
|
36
|
+
with(:body => {"username"=>"diego@maradona.com.ar", "msg"=>"Hello World", "tel"=>"4711111111", "msgid"=>"1234", "password"=>"1234"},
|
37
|
+
:headers => {'Accept'=>'*/*', 'Content-Type'=>'application/x-www-form-urlencoded'}).
|
38
|
+
to_return(:status => 200, :body => "<?xml version=\"1.0\"?><ack refno=\"1234\" errorcode=\"200\">OK</ack>", :headers => {})
|
39
|
+
end
|
40
|
+
|
41
|
+
let(:sms) {
|
42
|
+
sms = Vianettsms::Sms.new(valid_params)
|
43
|
+
sms.deliver
|
44
|
+
sms
|
45
|
+
}
|
46
|
+
|
47
|
+
it "should have status 200" do
|
48
|
+
sms.status.should == "200"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should have correct refno" do
|
52
|
+
sms.response_hash['refno'].should == "1234"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return true for devivered? method" do
|
56
|
+
sms.delivered?.should == true
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
data/vianettsms.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "vianettsms/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "vianettsms"
|
7
|
+
s.version = Vianettsms::VERSION
|
8
|
+
s.authors = ["Juan Pablo Taulamet"]
|
9
|
+
s.email = ["taulamet@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/taulamet/vianettsms"
|
11
|
+
s.summary = %q{Send sms messages using Vianett service from ruby}
|
12
|
+
s.description = %q{Send sms messages using Vianett service from ruby}
|
13
|
+
|
14
|
+
s.rubyforge_project = "vianettsms"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_development_dependency "rspec", "~> 2.11"
|
23
|
+
s.add_development_dependency "webmock"
|
24
|
+
s.add_dependency "xml-simple"
|
25
|
+
# s.add_runtime_dependency "rest-client"
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vianettsms
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Juan Pablo Taulamet
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-12-26 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 21
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 11
|
32
|
+
version: "2.11"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: webmock
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: xml-simple
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
63
|
+
description: Send sms messages using Vianett service from ruby
|
64
|
+
email:
|
65
|
+
- taulamet@gmail.com
|
66
|
+
executables: []
|
67
|
+
|
68
|
+
extensions: []
|
69
|
+
|
70
|
+
extra_rdoc_files: []
|
71
|
+
|
72
|
+
files:
|
73
|
+
- .gitignore
|
74
|
+
- .rspec
|
75
|
+
- Gemfile
|
76
|
+
- README.md
|
77
|
+
- Rakefile
|
78
|
+
- lib/vianettsms.rb
|
79
|
+
- lib/vianettsms/sms.rb
|
80
|
+
- lib/vianettsms/version.rb
|
81
|
+
- spec/integration/vianettsms_spec.rb
|
82
|
+
- spec/spec_helper.rb
|
83
|
+
- spec/vianettsms_spec.rb
|
84
|
+
- vianettsms.gemspec
|
85
|
+
homepage: https://github.com/taulamet/vianettsms
|
86
|
+
licenses: []
|
87
|
+
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
|
91
|
+
require_paths:
|
92
|
+
- lib
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
hash: 3
|
108
|
+
segments:
|
109
|
+
- 0
|
110
|
+
version: "0"
|
111
|
+
requirements: []
|
112
|
+
|
113
|
+
rubyforge_project: vianettsms
|
114
|
+
rubygems_version: 1.8.24
|
115
|
+
signing_key:
|
116
|
+
specification_version: 3
|
117
|
+
summary: Send sms messages using Vianett service from ruby
|
118
|
+
test_files: []
|
119
|
+
|