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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mfms/sms.rb +60 -55
  3. data/lib/mfms/version.rb +2 -2
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68b6c8c740eba9f28d326f0c7d92a01724941a6c
4
- data.tar.gz: 736b36e41793fdb54ff6682ff3ff454a57bc3d7a
3
+ metadata.gz: 0acdb437e94f51421bee45daf2934fd5807ed705
4
+ data.tar.gz: e946b964e1ac23c05aeb1c116a2e15652443ed78
5
5
  SHA512:
6
- metadata.gz: c64acbf8a7746ed55f88dc4aec903025073096b82baf7336b0aa9138599be100ecd05b7acd7df70952e15742add66eb3bcb53ce57dd7b5177c82a349cc1828e7
7
- data.tar.gz: 16bbc5a7c37ceb3bc08b0132730df9c2f31fc26ccd3d31e5a92475e1c1ed0008482c8fe3b22961a69992a367de99ba0dadb424b04ea89bf23b8c4ba6b45519ba
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
- @translit = translit.nil? ? @@translit : translit
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
- @@login = settings[:login]
25
- @@password = settings[:password]
26
- @@server = settings[:server]
27
- @@port = settings[:port]
28
- @@ssl_port = settings[:ssl_port]
29
- @@cert_store = init_cert_store settings[:cert]
30
- @@ssl = !settings[:ssl].nil? ? settings[:ssl] : true # connect using ssl by default
31
- @@translit = !settings[:translit].nil? ? settings[:translit] : false # use translit or not
32
- validate_settings!
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
- self.class.establish_connection.start do |http|
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
- def self.establish_connection
103
- port = @@ssl ? @@ssl_port : @@port
104
- http = Net::HTTP.new(@@server, port)
105
- http.use_ssl = @@ssl
106
- http.cert_store = @@cert_store
107
- http
108
- end
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
- def self.init_cert_store cert
111
- raise ArgumentError, "Path to certificate should be defined for #{self}." if cert.nil?
112
- raise ArgumentError, "Certificate file '#{File.expand_path(cert)}' does not exist." unless File.exist?(cert)
113
- cert_store = OpenSSL::X509::Store.new
114
- cert_store.add_cert OpenSSL::X509::Certificate.new File.read(cert)
115
- cert_store
116
- end
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
- def self.validate_settings!
119
- raise ArgumentError, "Login should be defined for #{self}." if @@login.nil?
120
- raise ArgumentError, "Password should be defined for #{self}." if @@password.nil?
121
- raise ArgumentError, "Server should be defined for #{self}." if @@server.nil?
122
- raise ArgumentError, "Port should be defined for #{self}." if @@port.nil?
123
- raise ArgumentError, "Port for ssl should be defined for #{self}." if @@ssl_port.nil?
124
- raise ArgumentError, "Port should contain only numbers. #{@@port.inspect} is given." unless @@port.instance_of?(Fixnum)
125
- raise ArgumentError, "Port for ssl should contain only numbers. #{@@ssl_port.inspect} is given." unless @@ssl_port.instance_of?(Fixnum)
126
- end
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
- def send_url
129
- message = @translit ? Russian.translit(@message) : @message
130
- "/revoup/connector0/send?login=#{@@login}&password=#{@@password}&" +
131
- "subject[0]=#{@subject}&address[0]=#{@phone}&text[0]=#{URI.encode(message)}"
132
- end
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
- def self.status_url msg_id
135
- "/revoup/connector0/status?login=#{@@login}&password=#{@@password}&" +
136
- "providerId[0]=#{msg_id}"
137
- end
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
@@ -1,8 +1,8 @@
1
1
  module Mfms
2
2
  class Version
3
3
  MAJOR = 0
4
- MINOR = 5
5
- PATCH = 1
4
+ MINOR = 6
5
+ PATCH = 0
6
6
 
7
7
  def self.to_s
8
8
  "#{MAJOR}.#{MINOR}.#{PATCH}"
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.5.1
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: 2015-12-07 00:00:00.000000000 Z
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.2.0.rc.1
65
+ rubygems_version: 2.4.3
66
66
  signing_key:
67
67
  specification_version: 4
68
68
  summary: Send sms via mfms service