mfms 0.5.1 → 0.6.0
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.
- checksums.yaml +4 -4
- data/lib/mfms/sms.rb +60 -55
- data/lib/mfms/version.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0acdb437e94f51421bee45daf2934fd5807ed705
|
4
|
+
data.tar.gz: e946b964e1ac23c05aeb1c116a2e15652443ed78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49b8f66c083ac2854601cb85458fc8d154e8aee5b91cc5c145e08dc26c525a6bcdf5cc00bffeae3d64f56d006bb226551d2e8a802c4ffde1189c866e41b74481
|
7
|
+
data.tar.gz: 41d5ab08dafb976b623cf73d3d5dce55698037d9826e8158abf59aaa411339c42993a89d9325affe75bb4d65cefb98907eebfc6dea2248e330799ff38d50eea3
|
data/lib/mfms/sms.rb
CHANGED
@@ -7,37 +7,42 @@ require 'russian'
|
|
7
7
|
module Mfms
|
8
8
|
class SMS
|
9
9
|
|
10
|
-
attr_accessor :phone, :subject, :message
|
10
|
+
attr_accessor :phone, :subject, :message, :account, :login, :password, :server, :cert, :port, :ssl_port, :ssl
|
11
11
|
attr_reader :id, :status
|
12
12
|
|
13
|
-
def initialize(phone, subject, message, translit = nil)
|
13
|
+
def initialize(phone, subject, message, translit = nil, account = nil)
|
14
14
|
@phone = phone
|
15
15
|
@subject = subject
|
16
16
|
@message = message
|
17
17
|
@status = 'not-sent'
|
18
|
-
|
19
|
-
|
18
|
+
account = "@@#{account}".to_sym
|
19
|
+
account_variable = if account.present? && self.class.class_variables.include?(account)
|
20
|
+
account
|
21
|
+
else
|
22
|
+
self.class.class_variables.select{|sym| sym.to_s.include?('revoup0')}.first
|
23
|
+
end
|
24
|
+
account_settings = Mfms::SMS.class_variable_get(account_variable)
|
25
|
+
@login = account_settings[:login]
|
26
|
+
@password = account_settings[:password]
|
27
|
+
@ssl = account_settings[:ssl]
|
28
|
+
@ssl_port = account_settings[:ssl_port]
|
29
|
+
@port = account_settings[:port]
|
30
|
+
@cert = account_settings[:cert]
|
31
|
+
@server = account_settings[:server]
|
32
|
+
@translit = translit.nil? ? account_settings[:translit] : translit
|
20
33
|
validate!
|
21
34
|
end
|
22
35
|
|
23
|
-
def self.settings=(settings=
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.ssl=(flag)
|
36
|
-
@@ssl = flag
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.ssl
|
40
|
-
@@ssl
|
36
|
+
def self.settings=(settings=[])
|
37
|
+
settings.each do |setting|
|
38
|
+
account = setting.keys.first
|
39
|
+
account_settings = setting[account]
|
40
|
+
account_settings[:cert] = init_cert_store(account_settings[:cert])
|
41
|
+
account_settings[:ssl] = account_settings[:ssl].presence || true
|
42
|
+
account_settings[:translit] = account_settings[:translit].presence || false
|
43
|
+
class_variable_set("@@#{account}", account_settings)
|
44
|
+
validate_settings!(account_settings)
|
45
|
+
end
|
41
46
|
end
|
42
47
|
|
43
48
|
# => SMS send status codes:
|
@@ -50,7 +55,7 @@ module Mfms
|
|
50
55
|
|
51
56
|
def send
|
52
57
|
#return stubbed_send if (defined?(Rails) && !Rails.env.production?)
|
53
|
-
|
58
|
+
establish_connection.start do |http|
|
54
59
|
request = Net::HTTP::Get.new(send_url)
|
55
60
|
response = http.request(request)
|
56
61
|
body = response.body.split(';')
|
@@ -99,42 +104,42 @@ module Mfms
|
|
99
104
|
|
100
105
|
private
|
101
106
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
107
|
+
def establish_connection
|
108
|
+
port = @ssl ? @ssl_port : @port
|
109
|
+
http = Net::HTTP.new(@server, port)
|
110
|
+
http.use_ssl = @ssl
|
111
|
+
http.cert_store = @cert
|
112
|
+
http
|
113
|
+
end
|
109
114
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
115
|
+
def self.init_cert_store(cert)
|
116
|
+
raise ArgumentError, "Path to certificate should be defined for #{self}." if cert.nil?
|
117
|
+
raise ArgumentError, "Certificate file '#{File.expand_path(cert)}' does not exist." unless File.exist?(cert)
|
118
|
+
cert_store = OpenSSL::X509::Store.new
|
119
|
+
cert_store.add_cert OpenSSL::X509::Certificate.new File.read(cert)
|
120
|
+
cert_store
|
121
|
+
end
|
117
122
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
123
|
+
def self.validate_settings!(settings)
|
124
|
+
raise ArgumentError, "Login should be defined for #{self}." if settings[:login].nil?
|
125
|
+
raise ArgumentError, "Password should be defined for #{self}." if settings[:password].nil?
|
126
|
+
raise ArgumentError, "Server should be defined for #{self}." if settings[:server].nil?
|
127
|
+
raise ArgumentError, "Port should be defined for #{self}." if settings[:port].nil?
|
128
|
+
raise ArgumentError, "Port for ssl should be defined for #{self}." if settings[:ssl_port].nil?
|
129
|
+
raise ArgumentError, "Port should contain only numbers. #{settings[:port].inspect} is given." unless settings[:port].instance_of?(Fixnum)
|
130
|
+
raise ArgumentError, "Port for ssl should contain only numbers. #{settings[:ssl_port].inspect} is given." unless settings[:ssl_port].instance_of?(Fixnum)
|
131
|
+
end
|
127
132
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
+
def send_url
|
134
|
+
message = @translit ? Russian.translit(@message) : @message
|
135
|
+
"/revoup/connector0/send?login=#{@login}&password=#{@password}&" +
|
136
|
+
"subject[0]=#{@subject}&address[0]=#{@phone}&text[0]=#{URI.encode(message)}"
|
137
|
+
end
|
133
138
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
139
|
+
def self.status_url(msg_id)
|
140
|
+
"/revoup/connector0/status?login=#{@login}&password=#{@password}&" +
|
141
|
+
"providerId[0]=#{msg_id}"
|
142
|
+
end
|
138
143
|
|
139
144
|
end
|
140
145
|
end
|
data/lib/mfms/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mfms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fokin Eugene
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: russian
|
@@ -62,7 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
62
|
version: '0'
|
63
63
|
requirements: []
|
64
64
|
rubyforge_project:
|
65
|
-
rubygems_version: 2.
|
65
|
+
rubygems_version: 2.4.3
|
66
66
|
signing_key:
|
67
67
|
specification_version: 4
|
68
68
|
summary: Send sms via mfms service
|