mfms 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -6
- data/lib/mfms/sms.rb +69 -80
- data/lib/mfms/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6275368229d65373594802e1ea72a218dfde252b
|
4
|
+
data.tar.gz: 6f8c06258ad905b2904ca677a3b6b0d3628e0524
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a90c7ac25217b7810c0646db83bd8eb9aaed73f5c3518c9634c99313ac145e29ae5cdc8c878b7d19fa72fed1496aec83e365d07ca5a226f546bac61a707cca07
|
7
|
+
data.tar.gz: 9c90c71176091a054a52db407a36b6c1f040c5b1064e84cbbcd03142a972a97897589306ddabdf2330e4226de89cc12049d68cc1a9f6122770bfd76b493499f9
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
Define
|
21
|
+
Define settings:
|
22
22
|
|
23
23
|
Mfms::SMS.settings = {
|
24
24
|
:login => 'login',
|
@@ -27,24 +27,32 @@ Define settinfs:
|
|
27
27
|
:port => port,
|
28
28
|
:ssl_port => ssl_port,
|
29
29
|
:cert => 'path/to/cert',
|
30
|
+
:ssl => true # default is true
|
30
31
|
}
|
31
32
|
|
32
33
|
Initialize sms:
|
33
34
|
|
34
35
|
sms = Mfms::SMS.new('phone','title','text') # initialize sms
|
35
36
|
|
36
|
-
Send it and get sent sms id and dispatch code
|
37
|
+
Send it and get sent sms id and dispatch code:
|
37
38
|
|
38
|
-
sms.send # send sms
|
39
|
+
sms.send # send sms. returns sms id or dispatch code if something went wrong
|
39
40
|
sms.id # get sms id
|
40
|
-
|
41
|
+
|
42
|
+
Get current sms status and update it:
|
43
|
+
|
44
|
+
sms.status # get sms delivery status
|
45
|
+
sms.update_status # updates sms delivery status. returns status or status check response code on error
|
46
|
+
|
47
|
+
Get any sms status:
|
48
|
+
|
49
|
+
code, status = Mfms::SMS.status(sms_id) # code - response code can contain error description, status - sms delivery status if code is 'ok'
|
41
50
|
|
42
51
|
Ex.:
|
43
52
|
|
44
53
|
sms = Mfms::SMS.new('79031111111','MyFavouriteCompany','Testing mfms gem')
|
45
|
-
sms.send
|
54
|
+
sms.send # => 1032
|
46
55
|
sms.id # => 1032
|
47
|
-
sms.code # => ok
|
48
56
|
|
49
57
|
## Contributing
|
50
58
|
|
data/lib/mfms/sms.rb
CHANGED
@@ -7,14 +7,13 @@ module Mfms
|
|
7
7
|
class SMS
|
8
8
|
|
9
9
|
attr_accessor :phone, :subject, :message
|
10
|
-
attr_reader :
|
10
|
+
attr_reader :id, :status
|
11
11
|
|
12
|
-
def initialize(phone, subject, message
|
13
|
-
@port = ssl ? @@ssl_port : @@port
|
14
|
-
@ssl = ssl
|
12
|
+
def initialize(phone, subject, message)
|
15
13
|
@phone = phone
|
16
14
|
@subject = subject
|
17
15
|
@message = message
|
16
|
+
@status = 'not-sent'
|
18
17
|
|
19
18
|
validate!
|
20
19
|
end
|
@@ -27,72 +26,68 @@ module Mfms
|
|
27
26
|
@@ssl_port = settings[:ssl_port]
|
28
27
|
@@cert_store = OpenSSL::X509::Store.new
|
29
28
|
@@cert_store.add_cert OpenSSL::X509::Certificate.new File.read(settings[:cert])
|
29
|
+
@@ssl = settings[:ssl] & true # connect using ssl by default
|
30
30
|
|
31
31
|
validate_settings!
|
32
32
|
end
|
33
33
|
|
34
|
-
def ssl=(flag)
|
35
|
-
|
36
|
-
@ssl = flag
|
34
|
+
def self.ssl=(flag)
|
35
|
+
@@ssl = flag
|
37
36
|
end
|
38
37
|
|
38
|
+
def self.ssl
|
39
|
+
@@ssl
|
40
|
+
end
|
41
|
+
|
42
|
+
# => SMS send status codes:
|
43
|
+
# "ok" "Сообщения приняты на отправку"
|
44
|
+
# "error-system" "При обработке данного сообщения произошла системная ошибка"
|
45
|
+
# "error-address-format" "Ошибка формата адреса"
|
46
|
+
# "error-address-unknown" "Отправка по данному направлению не разрешена"
|
47
|
+
# "error-subject-format" "Ошибка формата отправителя"
|
48
|
+
# "error-subject-unknown" "Данный отправителть не разрешен на нашей платформе"
|
49
|
+
|
39
50
|
def send
|
40
51
|
#return stubbed_send if (defined?(Rails) && !Rails.env.production?)
|
41
|
-
|
42
|
-
establish_connection(@ssl).start do |http|
|
52
|
+
self.class.establish_connection.start do |http|
|
43
53
|
request = Net::HTTP::Get.new(send_url)
|
44
54
|
response = http.request(request)
|
45
|
-
|
46
|
-
|
47
|
-
@
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
55
|
+
body = response.body.split(';')
|
56
|
+
return body[0] unless body[0] == 'ok'
|
57
|
+
@status = 'sent'
|
58
|
+
@id = body[2]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# => SMS delivery status codes:
|
63
|
+
# "enqueued" "Сообщение находится в очереди на отправку"
|
64
|
+
# "sent" "Сообщение отправлено"
|
65
|
+
# "delivered" "Сообщение доставлено до абонента"
|
66
|
+
# "undelivered" "Сообщение недоставлено до абонента"
|
67
|
+
# "failed" "Сообщение недоставлено из-за ошибки на платформе"
|
68
|
+
# "delayed" "Было указано отложенное время отправки и сообщение ожидает его"
|
69
|
+
# "cancelled" "Сообщение было отменено вручную на нашей платформе"
|
70
|
+
|
71
|
+
# => SMS status check response codes:
|
72
|
+
# "ok" "Запрос успешно обработан"
|
73
|
+
# "error-system" "Произошла системная ошибка"
|
74
|
+
# "error-provider-id-unknown" "Сообщение с таким идентификатором не найдено"
|
75
|
+
|
76
|
+
def self.status(id)
|
77
|
+
establish_connection.start do |http|
|
78
|
+
request = Net::HTTP::Get.new(status_url id)
|
79
|
+
response = http.request(request)
|
80
|
+
body = response.body.split(';')
|
81
|
+
return body[0], body[2] # code, status
|
56
82
|
end
|
57
83
|
end
|
58
84
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
# connection = establish_connection(@ssl)
|
66
|
-
# connection.start do |http|
|
67
|
-
# request = Net::HTTP::Get.new(status_url msg_id)
|
68
|
-
# response = http.request(request)
|
69
|
-
# splitted_body = response.body.split(';')
|
70
|
-
# res_code = splitted_body[0]
|
71
|
-
# result = case res_code
|
72
|
-
# when "ok" then "Запрос успешно обработан"
|
73
|
-
# when "error-system" then "Произошла системная ошибка"
|
74
|
-
# when "error-provider-id-unknown" then "Сообщение с таким идентификатором не найдено"
|
75
|
-
# end
|
76
|
-
# stat_code = splitted_body[2]
|
77
|
-
# unless stat_code.nil?
|
78
|
-
# @status = case stat_code
|
79
|
-
# when "enqueued" then "сообщение находится в очереди на отправку"
|
80
|
-
# when "sent" then "сообщение отправлено"
|
81
|
-
# when "delivered" then "сообщение доставлено до абонента"
|
82
|
-
# when "undelivered" then "сообщение недоставлено до абонента"
|
83
|
-
# when "failed" then "сообщение недоставлено из-за ошибки на платформе"
|
84
|
-
# when "delayed" then "было указано отложенное время отправки и сообщение ожидает его"
|
85
|
-
# when "cancelled" then "сообщение было отменено вручную на нашей платформе"
|
86
|
-
# end
|
87
|
-
# end
|
88
|
-
# end
|
89
|
-
|
90
|
-
# if @status
|
91
|
-
# @status
|
92
|
-
# else
|
93
|
-
# "ошибка"
|
94
|
-
# end
|
95
|
-
# end
|
85
|
+
def update_status
|
86
|
+
return @status if @id.nil?
|
87
|
+
code, status = self.class.status(@id)
|
88
|
+
return code unless code == 'ok'
|
89
|
+
@status = status
|
90
|
+
end
|
96
91
|
|
97
92
|
# What for?
|
98
93
|
# def to_json
|
@@ -101,35 +96,29 @@ module Mfms
|
|
101
96
|
|
102
97
|
private
|
103
98
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
http = Net::HTTP.new(@@server, @port)
|
109
|
-
if ssl
|
99
|
+
def self.establish_connection
|
100
|
+
port = @@ssl ? @@ssl_port : @@port
|
101
|
+
http = Net::HTTP.new(@@server, port)
|
102
|
+
http.use_ssl = @@ssl
|
110
103
|
http.cert_store = @@cert_store
|
111
|
-
http
|
104
|
+
http
|
112
105
|
end
|
113
|
-
http
|
114
|
-
end
|
115
106
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
def self.validate_settings!
|
120
|
-
end
|
107
|
+
def validate!
|
108
|
+
end
|
121
109
|
|
122
|
-
|
123
|
-
|
124
|
-
"subject[0]=#{@subject}&address[0]=#{@phone}&text[0]=#{URI.encode(@message)}"
|
125
|
-
end
|
110
|
+
def self.validate_settings!
|
111
|
+
end
|
126
112
|
|
127
|
-
|
113
|
+
def send_url
|
114
|
+
"/revoup/connector0/send?login=#{@@login}&password=#{@@password}&" +
|
115
|
+
"subject[0]=#{@subject}&address[0]=#{@phone}&text[0]=#{URI.encode(@message)}"
|
116
|
+
end
|
128
117
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
118
|
+
def self.status_url msg_id
|
119
|
+
"/revoup/connector0/status?login=#{@@login}&password=#{@@password}&" +
|
120
|
+
"providerId[0]=#{msg_id}"
|
121
|
+
end
|
133
122
|
|
134
123
|
end
|
135
124
|
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.2.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: 2013-03-
|
12
|
+
date: 2013-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: This library helps to send sms via mfms service
|
15
15
|
email:
|