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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format nested
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in vianettsms.gemspec
4
+ gemspec
@@ -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)
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -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,3 @@
1
+ module Vianettsms
2
+ VERSION = "0.0.2"
3
+ 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
@@ -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
+
@@ -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
+