telenorsms 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ README
2
+ Rakefile
3
+ lib/telenorsms.rb
4
+ sendsms.rb
5
+ telenorsms.gemspec
6
+ test/telenorsms_spec.rb
7
+ Manifest
data/README ADDED
@@ -0,0 +1,14 @@
1
+ A library for sending SMS using Telenor's website.
2
+ Note: You have to be a customer of Telenor in order to login.
3
+
4
+ This library was inspired by http://github.com/fossmo/kjappsms
5
+
6
+ How to install?
7
+ Not a gem yet. Code must be forked
8
+
9
+ How to use?
10
+ sms_sender = TelenorSMS.new "91919191" "password"
11
+ sms_sender.send "hello world", "99999999"
12
+
13
+
14
+
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new("telenorsms", "0.0.1") do |p|
6
+ p.description = "Send sms from Telenor's webpage www.telenor.no with Ruby. This lib is screen scraping the web page."
7
+ p.url = "http://github.com/goeran/telenorsms"
8
+ p.author = "Gøran Hansen"
9
+ p.email = "mail@goeran.no"
10
+ end
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'open-uri'
3
+ require 'mechanize'
4
+
5
+ module Guard
6
+ def Guard.require expression, message
7
+ if expression == false then raise message end
8
+ end
9
+ end
10
+
11
+ class TelenorSMS
12
+ def initialize username, password
13
+ Guard::require username != nil && username != "", "username must be specified"
14
+ Guard::require password != nil && password != "", "password must be specified"
15
+
16
+ @agent = Mechanize.new
17
+ @agent.user_agent_alias = "Windows IE 6"
18
+ @login_url = "https://telenormobil.no/minesider/login.do"
19
+ login username, password
20
+ end
21
+
22
+ def login username, password
23
+ forms = @agent.get(@login_url).forms
24
+ login_form = nil
25
+ forms.each {|form| login_form = form if form.action == "https://telenormobil.no/minesider/login.do" }
26
+ login_form.j_username = username
27
+ login_form.j_password = password
28
+ @agent.submit(login_form)
29
+
30
+ if @agent.page.uri.to_s == @login_url then
31
+ error = @agent.page / "div[id='main_content']" / "div[class='section error']" / "span"
32
+ if error != nil then raise error.inner_html end
33
+ end
34
+ end
35
+
36
+ def send message, recipients
37
+ Guard::require message != nil && message != "", "Must contain message"
38
+ Guard::require recipients != nil && recipients != "", "Must contain recipients"
39
+
40
+ @agent.get "https://telenormobil.no/norm/telenor/sms/send.do"
41
+ sms_form = nil
42
+ @agent.page.forms.each{|form| sms_form = form if form.action == "/norm/telenor/sms/send/process.do" }
43
+ sms_form.toAddress = recipients
44
+ sms_form.message = message
45
+ sms_form.click_button
46
+ end
47
+
48
+ end
@@ -0,0 +1,14 @@
1
+ require 'lib/telenorsms'
2
+
3
+ username = ARGV[0]
4
+ password = ARGV[1]
5
+ message = ARGV[2]
6
+ recipients = ARGV[3]
7
+
8
+ Guard::require username != nil, "Username must be specified (first arg)"
9
+ Guard::require password != nil, "Password must be specified (second arg)"
10
+ Guard::require message != nil, "Message must be specified (third arg)"
11
+ Guard::require recipients != nil, "Recipients must be specified (forth arg)"
12
+
13
+ sms_sender = TelenorSMS.new username, password
14
+ sms_sender.send message, recipients
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{telenorsms}
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["G\303\270ran Hansen"]
9
+ s.date = %q{2010-09-30}
10
+ s.description = %q{Send sms from Telenor's webpage www.telenor.no with Ruby. This lib is screen scraping the web page.}
11
+ s.email = %q{mail@goeran.no}
12
+ s.extra_rdoc_files = ["README", "lib/telenorsms.rb"]
13
+ s.files = ["README", "Rakefile", "lib/telenorsms.rb", "sendsms.rb", "telenorsms.gemspec", "test/telenorsms_spec.rb", "Manifest"]
14
+ s.homepage = %q{http://github.com/goeran/telenorsms}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Telenorsms", "--main", "README"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{telenorsms}
18
+ s.rubygems_version = %q{1.3.7}
19
+ s.summary = %q{Send sms from Telenor's webpage www.telenor.no with Ruby. This lib is screen scraping the web page.}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ else
27
+ end
28
+ else
29
+ end
30
+ end
@@ -0,0 +1,43 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require 'lib/telenorsms'
4
+
5
+ describe TelenorSMS, "when creating object" do
6
+ it "should validate username argument" do
7
+ lambda { TelenorSMS.new nil, "a password" }.should raise_exception
8
+ lambda { TelenorSMS.new "", "a password" }.should raise_exception
9
+ end
10
+
11
+ it "should validate password argument" do
12
+ lambda { TelenorSMS.new "username", nil }.should raise_exception
13
+ lambda { TelenorSMS.new "username", "" }.should raise_exception
14
+ end
15
+ end
16
+
17
+ describe TelenorSMS, "when providing wrong credentials" do
18
+ it "should raise exception" do
19
+ lambda { TelenorSMS.new "99999999", "wrongpass" }.should raise_exception
20
+ end
21
+ end
22
+
23
+ describe TelenorSMS, "when sending message" do
24
+ class TelenorSMSFake < TelenorSMS
25
+ def login username, password
26
+
27
+ end
28
+ end
29
+
30
+ before :all do
31
+ @sms_sender = TelenorSMSFake.new "99999999", "password"
32
+ end
33
+
34
+ it "should validate message argument" do
35
+ lambda { @sms_sender.send nil, "91919191" }.should raise_exception "Must contain message"
36
+ lambda { @sms_sender.send "", "91919191" }.should raise_exception "Must contain message"
37
+ end
38
+
39
+ it "should validate recipients argument" do
40
+ lambda { @sms_sender.send "hello", nil }.should raise_exception "Must contain recipients"
41
+ lambda { @sms_sender.send "hello", "" }.should raise_exception "Must contain recipients"
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: telenorsms
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - "G\xC3\xB8ran Hansen"
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-30 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Send sms from Telenor's webpage www.telenor.no with Ruby. This lib is screen scraping the web page.
23
+ email: mail@goeran.no
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - README
30
+ - lib/telenorsms.rb
31
+ files:
32
+ - README
33
+ - Rakefile
34
+ - lib/telenorsms.rb
35
+ - sendsms.rb
36
+ - telenorsms.gemspec
37
+ - test/telenorsms_spec.rb
38
+ - Manifest
39
+ has_rdoc: true
40
+ homepage: http://github.com/goeran/telenorsms
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options:
45
+ - --line-numbers
46
+ - --inline-source
47
+ - --title
48
+ - Telenorsms
49
+ - --main
50
+ - README
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ hash: 11
68
+ segments:
69
+ - 1
70
+ - 2
71
+ version: "1.2"
72
+ requirements: []
73
+
74
+ rubyforge_project: telenorsms
75
+ rubygems_version: 1.3.7
76
+ signing_key:
77
+ specification_version: 3
78
+ summary: Send sms from Telenor's webpage www.telenor.no with Ruby. This lib is screen scraping the web page.
79
+ test_files: []
80
+