devino_sms 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 ADDED
@@ -0,0 +1,5 @@
1
+ *.swp
2
+ *.gem
3
+ .bundle
4
+ Gemfile.lock
5
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in devino_sms.gemspec
4
+ gemspec
data/README ADDED
@@ -0,0 +1,7 @@
1
+ Example:
2
+
3
+ client = DevinoSms::Client.new('test', 'test')
4
+ message_id = client.send('79051234567', 'TEST', 'Hello')
5
+ client.state(message_id)
6
+ client.income('01.01.2000', Time.now)
7
+ client.balance
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "devino_sms/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "devino_sms"
7
+ s.version = DevinoSms::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Ivan Khlipitkin"]
10
+ s.email = ["ivan@1dev.ru"]
11
+ s.homepage = ""
12
+ s.summary = %q{Send sms with devinotele.com}
13
+ s.description = %q{Send sms with devinotele.com}
14
+
15
+ s.rubyforge_project = "devino_sms"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency 'patron', '0.4.16'
23
+ end
data/lib/devino_sms.rb ADDED
@@ -0,0 +1,72 @@
1
+ require 'rubygems'
2
+ require 'patron'
3
+ require 'json'
4
+
5
+ module DevinoSms
6
+ class Client
7
+ attr_accessor :validity
8
+
9
+ SMS_SERVER = 'http://rest.devinotele.com/'
10
+
11
+ def initialize(login, password)
12
+ @session_id = session_id(login, password)
13
+ self.validity = 10
14
+ end
15
+
16
+ def send(destinationAddress, sourceAddress, message, sendDate = nil)
17
+ query = build_query({'sendDate' => sendDate,
18
+ 'destinationAddress' => destinationAddress,
19
+ 'data' => message,
20
+ 'sourceAddress' => sourceAddress,
21
+ 'validity' => validity}, true)
22
+
23
+ response = session.post("Sms/Send", query)
24
+ response.status == 200 ? JSON.parse(response.body) : raise(JSON.parse(response.body)['Desc'])
25
+ end
26
+
27
+ def state(message_id)
28
+ response = session.get("Sms/State?#{build_query({'messageId' => message_id})}")
29
+
30
+ response.status == 200 ? JSON.parse(response.body) : raise(JSON.parse(response.body)['Desc'])
31
+ end
32
+
33
+ def balance
34
+ response = session.get("User/Balance?#{build_query}")
35
+
36
+ response.status == 200 ? response.body.to_f : raise(JSON.parse(response.body)['Desc'])
37
+ end
38
+
39
+ def income(start_date, finish_date)
40
+ response = session.get("Sms/In?#{build_query({'minDateUTC' => start_date,
41
+ 'maxDateUTC' => finish_date})}")
42
+
43
+ response.status == 200 ? JSON.parse(response.body) : raise(JSON.parse(response.body)['Desc'])
44
+ end
45
+
46
+ private
47
+
48
+ def build_query(params = {}, escape = true)
49
+ query = Patron::Util.build_query_string_from_hash(params, escape)
50
+ query = "sessionId=#{session_id}&#{query}" if defined?(@session_id)
51
+ query
52
+ end
53
+
54
+ def session_id(login = nil, password = nil)
55
+ return @session_id if defined?(@session_id)
56
+
57
+ response = session.get("User/SessionId?#{build_query({'login' => login,
58
+ 'password' => password})}")
59
+
60
+ response.status == 200 ? response.body.gsub('"', '') : raise(JSON.parse(response.body)['Desc'])
61
+ end
62
+
63
+ def session
64
+ return @session if defined?(@session)
65
+
66
+ @session = Patron::Session.new
67
+ @session.timeout = 10
68
+ @session.base_url = Client::SMS_SERVER
69
+ @session
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,3 @@
1
+ module DevinoSms
2
+ VERSION = "0.0.2"
3
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: devino_sms
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
11
+ platform: ruby
12
+ authors:
13
+ - Ivan Khlipitkin
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-09-22 00:00:00 +04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: patron
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 47
30
+ segments:
31
+ - 0
32
+ - 4
33
+ - 16
34
+ version: 0.4.16
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description: Send sms with devinotele.com
38
+ email:
39
+ - ivan@1dev.ru
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - .gitignore
48
+ - Gemfile
49
+ - README
50
+ - Rakefile
51
+ - devino_sms.gemspec
52
+ - lib/devino_sms.rb
53
+ - lib/devino_sms/version.rb
54
+ has_rdoc: true
55
+ homepage: ""
56
+ licenses: []
57
+
58
+ post_install_message:
59
+ rdoc_options: []
60
+
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ hash: 3
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ requirements: []
82
+
83
+ rubyforge_project: devino_sms
84
+ rubygems_version: 1.3.7
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Send sms with devinotele.com
88
+ test_files: []
89
+