mfms 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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