mns_subscriber 0.7.0 → 0.7.1
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
- checksums.yaml.gz.sig +0 -0
- data/lib/mns_subscriber.rb +213 -149
- data.tar.gz.sig +0 -0
- metadata +8 -8
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2ddc06764160255bf154806e01be715caa37041f21966e01d79b75e6329639b
|
4
|
+
data.tar.gz: 18c8c1b25c56b449761ab622742219a5b10a7f485e907902027d3303c0c2e069
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12c18783de474d14ba80b5baefaea3aad9c1dae802ae48e1c0d80cf4787c07a07f394c12b1619390aac611cf804757c733d0f429cf0903eadc4d1b543b81c4d3
|
7
|
+
data.tar.gz: a0779ad109d9f9347ec6f298a5ca490a54507294c542d8c27908df8835debd5d3f846fcae13e8626d37d791d684ae178fe1dab03ebc1b2fda871f60a65ef2042
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/mns_subscriber.rb
CHANGED
@@ -10,22 +10,23 @@ require 'recordx_sqlite'
|
|
10
10
|
require 'easyimg_utils'
|
11
11
|
|
12
12
|
|
13
|
-
module MNSSubscriber
|
14
|
-
|
13
|
+
module MNSSubscriber
|
14
|
+
|
15
15
|
class NoticeMgr
|
16
|
+
include RXFHelperModule
|
16
17
|
using ColouredText
|
17
|
-
|
18
|
-
def initialize(sps=nil, dir: '.', options: {}, timeline: nil,
|
18
|
+
|
19
|
+
def initialize(sps=nil, dir: '.', options: {}, timeline: nil,
|
19
20
|
hashtag_url: nil, log: nil, debug: false)
|
20
|
-
|
21
|
+
|
21
22
|
@sps, @log, @debug = sps, log, debug
|
22
|
-
|
23
|
-
# note: a valid url_base must be provided
|
23
|
+
|
24
|
+
# note: a valid url_base must be provided
|
24
25
|
@options = {
|
25
|
-
url_base: 'http://yourwebsitehere.co.uk/',
|
26
|
-
dx_xslt: '/xsl/dynarex.xsl',
|
27
|
-
rss_xslt: '/xsl/feed.xsl',
|
28
|
-
target_page: :page,
|
26
|
+
url_base: 'http://yourwebsitehere.co.uk/',
|
27
|
+
dx_xslt: '/xsl/dynarex.xsl',
|
28
|
+
rss_xslt: '/xsl/feed.xsl',
|
29
|
+
target_page: :page,
|
29
30
|
target_xslt: '/xsl/page.xsl',
|
30
31
|
local_media_path: '/home/user/media',
|
31
32
|
url_media_path: 'http://media.yourwebsitehere.co.uk/'
|
@@ -33,190 +34,210 @@ module MNSSubscriber
|
|
33
34
|
|
34
35
|
|
35
36
|
@filepath, @timeline = dir, timeline
|
36
|
-
|
37
|
+
|
37
38
|
@index = nil
|
38
39
|
@hashtags = nil
|
39
|
-
|
40
|
-
|
40
|
+
|
41
|
+
|
41
42
|
if hashtag_url then
|
42
|
-
|
43
|
-
@hashtag_url = @options[:url_base] + hashtag_url.sub(/^\//,'')
|
44
|
-
|
43
|
+
|
44
|
+
@hashtag_url = @options[:url_base] + hashtag_url.sub(/^\//,'')
|
45
|
+
|
45
46
|
hashtag_path = File.join(dir, 'hashtag')
|
46
47
|
tagdb = File.join(hashtag_path, 'index.db')
|
47
|
-
|
48
|
-
|
48
|
+
FileX.mkdir_p File.dirname(tagdb)
|
49
|
+
|
49
50
|
h = {hashtags: {id: '', tag: '', topic: '', noticeid: ''}}
|
50
|
-
@hashtags = RecordxSqlite.new(tagdb, table: h )
|
51
|
+
@hashtags = RecordxSqlite.new(tagdb, table: h )
|
51
52
|
|
52
|
-
end
|
53
|
+
end
|
53
54
|
end
|
54
|
-
|
55
|
+
|
55
56
|
def incoming(topic, msg)
|
56
|
-
|
57
|
+
|
57
58
|
a = topic.split('/')
|
58
59
|
context = a.last.to_sym
|
59
|
-
|
60
|
+
|
60
61
|
case context
|
61
62
|
when :profile
|
62
|
-
|
63
|
-
update_attributes(:description, subtopic=a[-2], profile=msg)
|
63
|
+
|
64
|
+
#update_attributes(:description, subtopic=a[-2], profile=msg)
|
65
|
+
h = JSON.parse msg, symbolize_names: true
|
66
|
+
update_profile(subtopic=a[-2], h)
|
64
67
|
|
65
68
|
when :link
|
66
69
|
puts 'we have a link' if @debug
|
67
70
|
update_attributes(:link, subtopic=a[-2], link=msg)
|
68
|
-
|
71
|
+
|
69
72
|
when :title
|
70
|
-
|
73
|
+
|
71
74
|
update_attributes(:title, subtopic=a[-2], title=msg)
|
72
|
-
|
75
|
+
|
73
76
|
when :image
|
74
77
|
#puts 'we have an image'
|
75
|
-
update_attributes(:image, subtopic=a[-2], title=msg)
|
76
|
-
|
78
|
+
update_attributes(:image, subtopic=a[-2], title=msg)
|
79
|
+
|
77
80
|
when :delete
|
78
|
-
|
81
|
+
|
79
82
|
delete_notice(subtopic=a[-2], msg)
|
80
|
-
|
81
|
-
when :json
|
82
|
-
|
83
|
-
# JSON contains a message and 1 or more media files
|
83
|
+
|
84
|
+
when :json
|
85
|
+
|
86
|
+
# JSON contains a message and 1 or more media files
|
84
87
|
h = JSON.parse msg, symbolize_names: true
|
85
88
|
puts 'h: ' + h.inspect if @debug
|
86
|
-
|
89
|
+
|
87
90
|
subtopic = a[-2]
|
88
|
-
|
91
|
+
|
89
92
|
t = Time.now
|
90
93
|
id = t.to_i.to_s + t.strftime("%2N")
|
91
|
-
|
94
|
+
|
92
95
|
filepath = File.join(@options[:local_media_path], 'images')
|
93
|
-
|
96
|
+
|
94
97
|
a = h[:files].map.with_index do |f,i|
|
95
|
-
|
98
|
+
|
96
99
|
# is f an Array object containing various sized images of the 1 file?
|
97
100
|
a2 = f.is_a?(Array) ? f : [f]
|
98
|
-
|
101
|
+
|
99
102
|
scale = a2.map do |imgfile|
|
100
|
-
|
103
|
+
|
101
104
|
scale = imgfile[/(_\w+)\.\w+$/,1].to_s
|
102
105
|
file = "%s%s%s" % [(id.to_i + i+1).to_s(36).reverse, scale, File.extname(imgfile)]
|
103
106
|
dest = File.join(filepath, file)
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
107
|
+
|
108
|
+
FileX.cp imgfile, dest
|
109
|
+
FileX.chmod 0755, dest
|
110
|
+
|
108
111
|
file
|
109
|
-
|
112
|
+
|
110
113
|
end
|
111
|
-
|
112
|
-
index = scale[1] ? 1 : 0
|
114
|
+
puts 'scale: ' + scale.inspect
|
115
|
+
index = scale[2] ? 2 : (scale[1] ? 1 : 0)
|
113
116
|
file1 = scale[index]
|
114
|
-
|
117
|
+
|
115
118
|
dir = File.extname(file1) =~ /\.(?:jpg|png)/ ? 'images' : ''
|
116
119
|
url = [@options[:url_media_path], dir, file1].join('/')
|
117
|
-
|
118
|
-
href = [@options[:url_base].sub(/\/$/,''), subtopic, 'status', id,
|
120
|
+
|
121
|
+
href = [@options[:url_base].sub(/\/$/,''), subtopic, 'status', id,
|
119
122
|
'photo', (i+1).to_s ].join('/')
|
120
123
|
# find the best y position for the image letterbox view
|
121
124
|
pct = EasyImgUtils.new(a2[index]).best_viewport
|
122
125
|
pct2 = (pct / 10.0).to_i * 10
|
123
126
|
|
124
127
|
align = if pct < 35 then
|
125
|
-
|
128
|
+
|
126
129
|
if pct < 10 then
|
127
130
|
:top
|
128
131
|
else
|
129
132
|
'y' + pct2.to_s
|
130
133
|
end
|
131
|
-
|
134
|
+
|
132
135
|
elsif pct >= 70
|
133
136
|
:bottom
|
134
137
|
else
|
135
138
|
#'y' + pct.to_s
|
136
139
|
:center
|
137
|
-
end
|
138
|
-
|
140
|
+
end
|
141
|
+
|
139
142
|
{url: url, align: align}
|
140
|
-
|
143
|
+
|
141
144
|
end
|
142
|
-
|
143
|
-
|
144
|
-
card = if h[:card]
|
145
|
-
|
146
|
-
h[:card]
|
147
|
-
|
148
|
-
|
145
|
+
|
146
|
+
|
147
|
+
card = if h[:card] then
|
148
|
+
|
149
|
+
puts 'h[:card]: ' + h[:card].inspect
|
150
|
+
puts 'a: ' + a.inspect
|
151
|
+
|
152
|
+
if h[:card][:summary_large_image] then
|
153
|
+
|
154
|
+
h[:card][:summary_large_image][:img] = a[2][:url] if a.any?
|
155
|
+
h[:card]
|
156
|
+
|
157
|
+
elsif h[:card][:summary]
|
158
|
+
|
159
|
+
h[:card][:summary][:img] = a[0][:url] if a.any?
|
160
|
+
h[:card]
|
161
|
+
|
162
|
+
end
|
163
|
+
|
149
164
|
elsif a.any?
|
150
165
|
{images: a}
|
151
166
|
end
|
152
|
-
|
153
|
-
|
167
|
+
puts 'before build'
|
168
|
+
#puts ('card: ' + card.inspect).debug
|
169
|
+
|
154
170
|
h[:msg] += build(card) if card
|
155
171
|
add_notice(subtopic, h[:msg].gsub('<','<')\
|
156
|
-
.gsub('>','>').gsub("\r",''), id,
|
172
|
+
.gsub('>','>').gsub("\r",''), id,
|
157
173
|
(card ? card.to_json : nil))
|
158
|
-
|
159
|
-
else
|
160
|
-
|
174
|
+
|
175
|
+
else
|
176
|
+
|
161
177
|
subtopic, id = a[1..-1]
|
162
|
-
add_notice(subtopic, msg, id)
|
163
|
-
|
178
|
+
add_notice(subtopic, msg, id)
|
179
|
+
|
164
180
|
end
|
165
181
|
end
|
166
|
-
|
182
|
+
|
167
183
|
private
|
168
|
-
|
184
|
+
|
169
185
|
def add_notice(topic, raw_msg, raw_id=nil, card=nil)
|
170
186
|
|
171
187
|
@log.info 'mns_subscriber/add_notice: active' if @log
|
172
188
|
topic_dir = File.join(@filepath, 'u', topic)
|
173
|
-
|
189
|
+
|
174
190
|
options = @options.clone
|
175
191
|
options.delete :local_media_path
|
176
192
|
options.delete :url_media_path
|
177
|
-
|
178
|
-
notices = DailyNotices.new topic_dir, options.merge(identifier: topic,
|
193
|
+
|
194
|
+
notices = DailyNotices.new topic_dir, options.merge(identifier: topic,
|
179
195
|
title: topic.capitalize + ' daily notices', log: @log)
|
180
196
|
|
181
197
|
t = Time.now
|
182
198
|
id = (raw_id || t.to_i.to_s + t.strftime("%2N")).to_i
|
183
|
-
|
199
|
+
|
184
200
|
# strip out any JSON from the end of the message
|
185
|
-
msg, raw_json = raw_msg.split(/(?=\{.*)/)
|
186
|
-
|
201
|
+
msg, raw_json = raw_msg.split(/(?=\{.*)/)
|
202
|
+
|
187
203
|
msg = ' ' if msg.nil?
|
188
204
|
mtlite = MTLite.new(msg)
|
189
|
-
|
205
|
+
|
190
206
|
desc = if mtlite.to_html(para: false) =~ /<\w+/ then
|
191
207
|
mtlite.to_html(para: true, ignore_domainlabel:true)
|
192
208
|
else
|
193
209
|
mtlite.to_s
|
194
210
|
end
|
195
|
-
|
211
|
+
|
196
212
|
if @hashtag_url then
|
197
213
|
|
198
214
|
tags = desc.scan(/(?<= #)\w+/)
|
199
|
-
|
200
|
-
desc.gsub!(/
|
201
|
-
|
215
|
+
|
216
|
+
desc.gsub!(/ [#\$][a-zA-Z]\w+/) do |rawx|
|
217
|
+
|
218
|
+
x = rawx.lstrip
|
219
|
+
baseurl = x[0] == '#' ? @hashtag_url : 'search?q='
|
220
|
+
url = baseurl + CGI.escape(x.sub(/^#/,''))
|
221
|
+
" <a href='%s'>%s</a>" % [url, x]
|
222
|
+
|
202
223
|
end
|
203
|
-
|
204
|
-
# add the record to the database
|
224
|
+
|
225
|
+
# add the record to the database
|
205
226
|
tags.each do |tag|
|
206
|
-
|
227
|
+
|
207
228
|
t = Time.now
|
208
|
-
id2 = (t.to_i.to_s + t.strftime("%2N")).to_i
|
229
|
+
id2 = (t.to_i.to_s + t.strftime("%2N")).to_i
|
209
230
|
h = {id: id2, tag: tag, topic: topic, noticeid: id}
|
210
231
|
|
211
232
|
@hashtags.create h if @hashtags
|
212
|
-
|
233
|
+
|
213
234
|
end
|
214
|
-
|
235
|
+
|
215
236
|
end
|
216
|
-
|
237
|
+
|
217
238
|
title = mtlite.to_s.lines.first.chomp
|
218
239
|
title = title[0..136] + ' ...' if title.length > 140
|
219
|
-
|
240
|
+
|
220
241
|
h = {
|
221
242
|
title: title,
|
222
243
|
description: desc,
|
@@ -226,77 +247,78 @@ module MNSSubscriber
|
|
226
247
|
#puts 'inside add_notice h: ' + h.inspect
|
227
248
|
return_status = notices.add(item: h, id: id.to_s)
|
228
249
|
#puts 'return_status: ' + return_status.inspect
|
229
|
-
|
250
|
+
|
230
251
|
return if return_status == :duplicate
|
231
|
-
|
252
|
+
|
232
253
|
rxnotices = RecordxSqlite.new(File.join(topic_dir, 'notices.db'),
|
233
254
|
table: {notices: {id: 0, description: '', message: ''}})
|
234
|
-
|
255
|
+
|
235
256
|
begin
|
236
257
|
rxnotices.create id: id.to_s, description: desc, message: msg
|
237
258
|
rescue
|
238
259
|
puts 'warning: rxnotices.create -> ' + ($!).inspect
|
239
260
|
end
|
240
|
-
|
261
|
+
|
241
262
|
if raw_json then
|
242
|
-
|
263
|
+
|
243
264
|
record = JSON.parse(raw_json)
|
244
265
|
index = RecordxSqlite.new(File.join(topic_dir, 'index.db'),
|
245
266
|
table: {items: record})
|
246
267
|
index.create record
|
247
|
-
|
268
|
+
|
248
269
|
update_index_xml(index, topic_dir)
|
249
|
-
|
270
|
+
|
250
271
|
end
|
251
|
-
|
272
|
+
|
252
273
|
@sps.notice "%s/add: %s/status/%s" % [@timeline, topic, id] if @timeline
|
253
|
-
|
274
|
+
|
254
275
|
sleep 0.3
|
255
|
-
|
276
|
+
|
256
277
|
end
|
257
|
-
|
278
|
+
|
258
279
|
def delete_notice(topic, msg)
|
259
|
-
|
280
|
+
|
260
281
|
topic_dir = File.join(@filepath, topic)
|
261
|
-
|
282
|
+
|
262
283
|
id = msg.to_i
|
263
|
-
|
264
|
-
feed = DailyNotices.new topic_dir, log: @log
|
284
|
+
|
285
|
+
feed = DailyNotices.new topic_dir, log: @log
|
265
286
|
feed.delete id
|
266
|
-
|
267
|
-
notices = RecordxSqlite.new(File.join(topic_dir, 'notices.db'),
|
287
|
+
|
288
|
+
notices = RecordxSqlite.new(File.join(topic_dir, 'notices.db'),
|
268
289
|
table: 'notices')
|
269
290
|
notices.delete id
|
270
|
-
|
291
|
+
|
271
292
|
indexdb = File.join(topic_dir, 'index.db')
|
272
|
-
|
293
|
+
|
273
294
|
if File.exists? indexdb then
|
274
|
-
|
295
|
+
|
275
296
|
index = RecordxSqlite.new(indexdb, table: 'items')
|
276
297
|
index.delete id
|
277
298
|
update_index_xml(index, topic_dir)
|
278
299
|
end
|
279
|
-
|
300
|
+
|
280
301
|
end
|
281
|
-
|
302
|
+
|
282
303
|
# builds the HTML for a given card
|
283
304
|
#
|
284
305
|
def build(card)
|
306
|
+
puts 'inside build'
|
285
307
|
|
286
308
|
#return card.inspect
|
287
|
-
#next unless card.is_a? Hash
|
309
|
+
#next unless card.is_a? Hash
|
288
310
|
|
289
311
|
if card.is_a? Hash then
|
290
|
-
|
291
|
-
card2 = case card.keys.first
|
312
|
+
|
313
|
+
card2 = case card.keys.first
|
292
314
|
when :images
|
293
|
-
|
315
|
+
|
294
316
|
card[:images].map.with_index do |img, i|
|
295
|
-
|
317
|
+
|
296
318
|
"<img class='img1' src='%s'/>" % img[:url]
|
297
|
-
|
319
|
+
|
298
320
|
end.join
|
299
|
-
|
321
|
+
|
300
322
|
when :summary_large_image
|
301
323
|
|
302
324
|
h2 = card[:summary_large_image]
|
@@ -304,64 +326,106 @@ module MNSSubscriber
|
|
304
326
|
rawdesc = h2[:desc]
|
305
327
|
|
306
328
|
desc = rawdesc.length > 147 ? rawdesc[0..147] + '...' : rawdesc
|
307
|
-
site = h2[:url][/https?:\/\/([^\/]+)
|
329
|
+
site = h2[:url][/https?:\/\/([^\/]+)/,1].sub(/^www\./,'')
|
308
330
|
title = h2[:title]
|
309
331
|
img = h2[:img]
|
310
332
|
url = h2[:url]
|
311
333
|
|
312
|
-
# The following Card HTML template is for use with the RSS feed.
|
313
|
-
# The actual HTML template for the card is rendered dynamically
|
314
|
-
# from the web server.
|
334
|
+
# The following Card HTML template is for use with the RSS feed.
|
335
|
+
# The actual HTML template for the card is rendered dynamically
|
336
|
+
# from the web server.
|
315
337
|
"
|
316
|
-
<div class='card'><a href='#{url}' target='_blank'>" +
|
317
|
-
"<div class='top-crop center'><img src='#{img}'/></div>" +
|
318
|
-
"<span class='title'>#{title}</span></a><p>#{desc}</p>" +
|
338
|
+
<div class='card'><a href='#{url}' target='_blank'>" +
|
339
|
+
"<div class='top-crop center'><img src='#{img}'/></div>" +
|
340
|
+
"<span class='title'>#{title}</span></a><p>#{desc}</p>" +
|
319
341
|
"<span class='link'><span class='linkurl'>#{site}</span></span></div>"
|
320
342
|
|
343
|
+
when :summary
|
344
|
+
|
345
|
+
h2 = card[:summary]
|
346
|
+
puts 'h2: ' + h2.inspect
|
347
|
+
rawdesc = h2[:desc]
|
348
|
+
|
349
|
+
desc = rawdesc.length > 120 ? rawdesc[0..120] + '...' : rawdesc
|
350
|
+
site = h2[:url][/https?:\/\/([^\/]+)(?=\/)/,1].sub(/^www\./,'')
|
351
|
+
title = h2[:title]
|
352
|
+
img = h2[:img]
|
353
|
+
url = h2[:url]
|
354
|
+
|
355
|
+
# The following Card HTML template is for use with the RSS feed.
|
356
|
+
# The actual HTML template for the card is rendered dynamically
|
357
|
+
# from the web server.
|
358
|
+
|
359
|
+
"<div class='card2'><a href='#{url}' target='_blank'><div><div id='col1'>" +
|
360
|
+
"<img src='#{img}'></div><div id='col2'><div id='content'>" +
|
361
|
+
"<span class='title'>#{title}</span><span class='desc'>#{desc}</span>" +
|
362
|
+
"<span class='link'><span class='linkurl'>#{site}</span></span></div>" +
|
363
|
+
"</div></div></a></div>"
|
364
|
+
|
321
365
|
end
|
322
366
|
end
|
323
367
|
|
324
|
-
end
|
325
|
-
|
368
|
+
end
|
369
|
+
|
326
370
|
def update_index_xml(index, topic_dir)
|
327
|
-
|
371
|
+
|
328
372
|
# create the index.xml file
|
329
|
-
|
373
|
+
|
330
374
|
a = index.order(:desc).first(15)
|
331
375
|
a2 = a.map {|x| h = x.to_h; id = h.delete(:id); {item_id: id}.merge(h)}
|
332
376
|
|
333
|
-
dx = Dynarex.new
|
377
|
+
dx = Dynarex.new
|
334
378
|
dx.import a2
|
335
379
|
dx.order ='descending'
|
336
|
-
|
337
|
-
dx.save File.join(topic_dir, 'index.xml')
|
338
|
-
|
380
|
+
|
381
|
+
dx.save File.join(topic_dir, 'index.xml')
|
382
|
+
|
339
383
|
end
|
340
384
|
|
341
385
|
def update_attributes(attribute, topic, value)
|
342
|
-
|
386
|
+
|
343
387
|
topic_dir = File.join(@filepath, topic)
|
344
388
|
notices = DailyNotices.new topic_dir, @options.merge(identifier: topic)
|
345
389
|
notices.method((attribute.to_s + '=').to_sym).call(value)
|
346
390
|
notices.save
|
347
|
-
|
391
|
+
|
392
|
+
end
|
393
|
+
|
394
|
+
def update_profile(topic, h)
|
395
|
+
|
396
|
+
topic_dir = File.join(@filepath, topic)
|
397
|
+
notices = DailyNotices.new topic_dir, @options.merge(identifier: topic)
|
398
|
+
|
399
|
+
valid_keys = %i(title identifier image bio location website banner_image)
|
400
|
+
|
401
|
+
h.each_pair do |key, value|
|
402
|
+
|
403
|
+
next unless valid_keys.include? key
|
404
|
+
|
405
|
+
attribute = key.to_s
|
406
|
+
notices.method((attribute + '=').to_sym).call(value)
|
407
|
+
|
408
|
+
end
|
409
|
+
|
410
|
+
notices.save
|
411
|
+
|
348
412
|
end
|
349
413
|
|
350
|
-
|
414
|
+
|
351
415
|
end
|
352
416
|
|
353
417
|
class Client < SPSSub
|
354
418
|
|
355
|
-
def initialize(host: 'sps', port: 59000, dir: '.', options: {},
|
419
|
+
def initialize(host: 'sps', port: 59000, dir: '.', options: {},
|
356
420
|
timeline: nil, log: nil, hashtag_url: nil)
|
357
|
-
|
421
|
+
|
358
422
|
@log = log
|
359
423
|
log.info 'mns_subscriber/initialize: active' if log
|
360
|
-
@nm = NoticeMgr.new(self, dir: dir, options: options, timeline: timeline,
|
424
|
+
@nm = NoticeMgr.new(self, dir: dir, options: options, timeline: timeline,
|
361
425
|
hashtag_url: hashtag_url, debug: true)
|
362
|
-
|
426
|
+
|
363
427
|
super(host: host, port: port, log: log)
|
364
|
-
|
428
|
+
|
365
429
|
end
|
366
430
|
|
367
431
|
def subscribe(topic='notice/*')
|
@@ -371,13 +435,13 @@ module MNSSubscriber
|
|
371
435
|
private
|
372
436
|
|
373
437
|
def ontopic(topic, msg)
|
374
|
-
|
438
|
+
|
375
439
|
@log.info 'mns_subscriber/ontopic: topic: ' + topic.inspect if @topic
|
376
440
|
|
377
441
|
a = topic.split('/')
|
378
442
|
#puts "%s: %s %s" % [topic, Time.now.to_s, msg.inspect]
|
379
|
-
|
380
|
-
@nm.incoming topic, msg
|
443
|
+
|
444
|
+
@nm.incoming topic, msg
|
381
445
|
|
382
446
|
end
|
383
447
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mns_subscriber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
yOAycOYzp7fxmPl3/HV5D0YOJwuy1XslA50GQJwq12A5vMyUGUCHuxH/zKZcM/zr
|
36
36
|
0QZaKiVqq5ZeGvni0eQSavhQ
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-01-17 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: mtlite
|
@@ -86,7 +86,7 @@ dependencies:
|
|
86
86
|
version: '0.7'
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.7.
|
89
|
+
version: 0.7.2
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -96,7 +96,7 @@ dependencies:
|
|
96
96
|
version: '0.7'
|
97
97
|
- - ">="
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 0.7.
|
99
|
+
version: 0.7.2
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: recordx_sqlite
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
version: '0.3'
|
107
107
|
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.3.
|
109
|
+
version: 0.3.3
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -116,7 +116,7 @@ dependencies:
|
|
116
116
|
version: '0.3'
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 0.3.
|
119
|
+
version: 0.3.3
|
120
120
|
- !ruby/object:Gem::Dependency
|
121
121
|
name: easyimg_utils
|
122
122
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,7 +126,7 @@ dependencies:
|
|
126
126
|
version: '0.7'
|
127
127
|
- - ">="
|
128
128
|
- !ruby/object:Gem::Version
|
129
|
-
version: 0.7.
|
129
|
+
version: 0.7.4
|
130
130
|
type: :runtime
|
131
131
|
prerelease: false
|
132
132
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
version: '0.7'
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 0.7.
|
139
|
+
version: 0.7.4
|
140
140
|
description:
|
141
141
|
email: digital.robertson@gmail.com
|
142
142
|
executables: []
|
metadata.gz.sig
CHANGED
Binary file
|