mymedia 0.2.13 → 0.5.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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data/lib/mymedia.rb +166 -138
- data.tar.gz.sig +0 -0
- metadata +52 -48
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 879bb9d7cf2f55bd38bb6d2e005d824fc0b63760931424c0ef16599c8e405581
|
4
|
+
data.tar.gz: 77ccdb6252d36a6bf313e491169a2df56b5325284a809060894bb6e30eadfaec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf2b2df683d4055893ce649e8c3ebc30eee11fbe432b8c9fd7292ee3ca4be66843304e63a79e68a67e3dc2b2cb6e43653de7da371da695274aae2030bd5701c6
|
7
|
+
data.tar.gz: 56cb9c6a53dbd585d1ade2ae2a1afff3934823b3bc7bcd9fad89cbb0cb205316281dad53220a3652559d1f36e84ef218312bc4bc40a6a95e8f497979f43fa580
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/mymedia.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
# file: mymedia.rb
|
4
4
|
|
5
5
|
require 'time'
|
6
|
-
require 'fileutils'
|
7
6
|
require 'logger'
|
8
7
|
require 'dynarex'
|
9
8
|
require 'sps-pub'
|
@@ -17,23 +16,24 @@ module MyMedia
|
|
17
16
|
|
18
17
|
class MyMediaPublisherException < Exception
|
19
18
|
end
|
20
|
-
|
21
|
-
|
19
|
+
|
20
|
+
|
22
21
|
class Publisher
|
23
|
-
|
22
|
+
include RXFHelperModule
|
23
|
+
|
24
24
|
def initialize(opts={})
|
25
25
|
@index_page = true
|
26
26
|
@opts = opts
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
protected
|
30
|
-
|
30
|
+
|
31
31
|
def publish_dynarex(dynarex_filepath='', \
|
32
32
|
record={title: '',url: '', raw_url: ''}, options={})
|
33
|
-
|
33
|
+
|
34
34
|
opt = {id: nil, rss: false}.merge(options)
|
35
35
|
|
36
|
-
dynarex = if
|
36
|
+
dynarex = if FileX.exists? dynarex_filepath then
|
37
37
|
Dynarex.new(dynarex_filepath)
|
38
38
|
else
|
39
39
|
Dynarex.new(@schema)
|
@@ -43,180 +43,230 @@ module MyMedia
|
|
43
43
|
dynarex.save dynarex_filepath
|
44
44
|
publish_html(dynarex_filepath) if @index_page == true
|
45
45
|
|
46
|
-
|
46
|
+
|
47
47
|
if opt[:rss] == true then
|
48
48
|
|
49
49
|
dynarex.xslt_schema = dynarex.summary[:xslt_schema]
|
50
50
|
rss_filepath = dynarex_filepath.sub(/\.xml$/,'_rss.xml')
|
51
|
-
|
51
|
+
FileX.write rss_filepath, dynarex.to_rss
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def publish_html(filepath)
|
57
57
|
|
58
|
-
path2 = File.dirname(filepath)
|
58
|
+
path2 = File.dirname(filepath)
|
59
59
|
template_path = File.join path2, 'index-template.html'
|
60
60
|
|
61
|
-
return unless @index_page == true
|
61
|
+
return unless @index_page == true
|
62
62
|
raise MyMediaPublisherException, \
|
63
63
|
"template path: #{template_path} not found" unless \
|
64
|
-
|
65
|
-
=begin jr 040916
|
64
|
+
FileX.exists?(template_path)
|
65
|
+
=begin jr 040916
|
66
66
|
dataisland = DataIsland.new(template_path, @opts)
|
67
67
|
|
68
68
|
File.open(path2 + '/index.html','w'){|f| f.write dataisland.html_doc.xml pretty: true}
|
69
|
-
=end
|
70
|
-
end
|
69
|
+
=end
|
70
|
+
end
|
71
|
+
|
72
|
+
def publish_dxlite(dynarex_filepath='', record={title: '',url: ''})
|
73
|
+
|
74
|
+
dynarex = if FileX.exists? dynarex_filepath then
|
75
|
+
DxLite.new(dynarex_filepath)
|
76
|
+
else
|
77
|
+
DxLite.new(@schema)
|
78
|
+
end
|
79
|
+
|
80
|
+
dynarex.create record
|
81
|
+
dynarex.save dynarex_filepath
|
82
|
+
end
|
71
83
|
|
72
84
|
def send_message(topic: @sps[:default_subscriber], msg: '')
|
73
85
|
|
74
|
-
fqm = "%s: %s" % [topic, msg]
|
86
|
+
fqm = "%s: %s" % [topic, msg]
|
75
87
|
|
76
88
|
SPSPub.notice fqm, address: @sps[:address]
|
77
|
-
sleep 0.
|
78
|
-
end
|
79
|
-
|
89
|
+
sleep 0.3
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
module IndexReader
|
95
|
+
include RXFHelperModule
|
96
|
+
|
97
|
+
def browse()
|
98
|
+
|
99
|
+
json_filepath = "%s/%s/dynarex.json" % [@home, @public_type]
|
100
|
+
|
101
|
+
if FileX.exists? json_filepath then
|
102
|
+
|
103
|
+
dx = DxLite.new(json_filepath)
|
104
|
+
return dx.all
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
def search(keyword)
|
111
|
+
|
112
|
+
json_filepath = "%s/%s/dynarex.json" % [@home, @public_type]
|
113
|
+
|
114
|
+
if FileX.exists? json_filepath then
|
115
|
+
|
116
|
+
dx = DxLite.new(json_filepath)
|
117
|
+
return dx.all.select {|x| x.title =~ /#{keyword}/i}
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
80
122
|
end
|
81
|
-
|
123
|
+
|
82
124
|
class BaseException < Exception
|
83
125
|
end
|
84
|
-
|
126
|
+
|
85
127
|
class Base < Publisher
|
128
|
+
include RXFHelperModule
|
86
129
|
|
87
130
|
attr_reader :to_s
|
88
131
|
|
89
|
-
def initialize(media_type: 'blog', public_type:
|
132
|
+
def initialize(media_type: 'blog', public_type: media_type,
|
133
|
+
ext: 'txt', config: nil, log: nil, debug: false)
|
90
134
|
|
91
|
-
super()
|
135
|
+
super()
|
92
136
|
|
93
|
-
@schema = 'posts/post(title, url, raw_url)'
|
137
|
+
@schema = 'posts/post(title, url, raw_url)'
|
94
138
|
|
95
139
|
raise BaseException, "no config found" if config.nil?
|
96
140
|
|
97
141
|
c = SimpleConfig.new(config).to_h
|
98
|
-
|
142
|
+
|
99
143
|
@home = c[:home]
|
100
|
-
@
|
144
|
+
@media_src = "%s/media/%s" % [@home, media_type]
|
145
|
+
@website = c[:website]
|
101
146
|
|
102
147
|
@dynamic_website = c[:dynamic_website]
|
103
148
|
@www = c[:www]
|
104
149
|
@domain = @website[/[^\.]+\.[^\.]+$/]
|
105
150
|
|
106
151
|
@sps = c[:sps]
|
107
|
-
logfile = c[:log]
|
108
|
-
|
109
|
-
@logger = nil
|
110
152
|
|
111
|
-
|
112
|
-
|
113
|
-
|
153
|
+
@log = log
|
154
|
+
|
155
|
+
|
114
156
|
@media_type = media_type
|
115
157
|
@public_type = public_type ||= @media_type
|
116
|
-
|
158
|
+
|
117
159
|
@xslt_schema = 'channel[title:title,description:desc]/' + \
|
118
160
|
'item(title:title,link:url)'
|
119
161
|
@ext = ext
|
120
162
|
@rss = false
|
121
|
-
|
122
|
-
|
163
|
+
@debug = debug
|
164
|
+
|
165
|
+
DirX.chdir @home
|
123
166
|
|
124
167
|
end
|
125
|
-
|
168
|
+
|
126
169
|
def add_feed_item(raw_msg, record, options={})
|
127
|
-
|
128
|
-
dynarex_filepath = File.join([@home, @public_type, 'dynarex.xml'])
|
129
|
-
id = Increment.update(File.join([@home, @public_type, 'counter.txt']))
|
170
|
+
|
171
|
+
dynarex_filepath = File.join([@home, @public_type, 'dynarex.xml'])
|
172
|
+
id = Increment.update(File.join([@home, @public_type, 'counter.txt']))
|
130
173
|
static_url = @static_baseurl + id
|
131
174
|
record[:uri] = static_url
|
132
|
-
|
133
|
-
publish_dynarex(dynarex_filepath, record, {id: id}.merge(options))
|
134
|
-
publish_timeline(raw_msg, static_url)
|
135
|
-
publish_html(@home + '/index.html')
|
175
|
+
|
176
|
+
publish_dynarex(dynarex_filepath, record, {id: id}.merge(options))
|
177
|
+
publish_timeline(raw_msg, static_url)
|
178
|
+
publish_html(@home + '/index.html')
|
136
179
|
end
|
137
180
|
|
138
|
-
def auto_copy_publish(raw_msg='')
|
181
|
+
def auto_copy_publish(raw_msg='', &blk)
|
182
|
+
|
183
|
+
@log.info 'Base inside auto_copy_publish' if @log
|
184
|
+
puts '@media_src: ' + @media_src.inspect if @debug
|
185
|
+
|
186
|
+
# fetch the most recent file
|
187
|
+
r = FileX.ru_r @media_src
|
139
188
|
|
140
|
-
|
189
|
+
if r then
|
141
190
|
|
142
|
-
|
191
|
+
puts 'r: ' + r.inspect if @debug
|
143
192
|
|
144
|
-
|
193
|
+
filename = r.sub(/^#{@media_src}/,'')
|
194
|
+
copy_publish( filename ,raw_msg, &blk)
|
145
195
|
|
146
|
-
|
196
|
+
end
|
147
197
|
|
148
198
|
end
|
149
|
-
|
199
|
+
|
150
200
|
def basename(s1, s2)
|
151
201
|
|
152
202
|
(s2.split('/') - s1.split('/')).join('/')
|
153
203
|
|
154
|
-
end
|
155
|
-
|
156
|
-
def copy_publish(filename, raw_msg='')
|
204
|
+
end
|
205
|
+
|
206
|
+
def copy_publish(filename, raw_msg='', &blk)
|
157
207
|
file_publish(File.join(@media_src,filename), raw_msg)
|
158
208
|
end
|
159
|
-
|
209
|
+
|
160
210
|
|
161
211
|
private
|
162
|
-
|
212
|
+
|
163
213
|
def file_publish(src_path, raw_msg='')
|
164
214
|
|
165
215
|
#raise @logger.debug("source file '%s' not found" % src_path) unless File.exists? src_path
|
166
216
|
ext = File.extname(src_path)
|
167
217
|
@target_ext ||= ext
|
168
|
-
|
218
|
+
|
169
219
|
public_path = "%s/%s/%shrs%s" % [@public_type, \
|
170
|
-
Time.now.strftime('%Y/%b/%d').downcase, Time.now.strftime('%H%M'),
|
220
|
+
Time.now.strftime('%Y/%b/%d').downcase, Time.now.strftime('%H%M'),
|
171
221
|
@target_ext]
|
172
222
|
|
173
223
|
public_path2 = "%s/%s/%shrs%s%s" % [@public_type, \
|
174
|
-
Time.now.strftime('%Y/%b/%d').downcase, Time.now.strftime('%H%M'),
|
224
|
+
Time.now.strftime('%Y/%b/%d').downcase, Time.now.strftime('%H%M'),
|
175
225
|
Time.now.strftime('%S%2N'), @target_ext]
|
176
|
-
|
226
|
+
|
177
227
|
raw_destination = "%s/%s/%s" % [@home, 'r', public_path]
|
178
|
-
|
179
|
-
if
|
228
|
+
|
229
|
+
if FileX.exists? raw_destination then
|
180
230
|
raw_destination = "%s/%s/%s" % [@home, 'r', public_path2]
|
181
231
|
public_path = public_path2
|
182
232
|
end
|
183
233
|
|
184
|
-
destination =
|
185
|
-
|
186
|
-
|
234
|
+
destination = File.join(@home, public_path)
|
235
|
+
FileX.mkdir_p File.dirname(raw_destination)
|
236
|
+
FileX.mkdir_p File.dirname(destination)
|
187
237
|
|
188
238
|
raw_msg = raw_msg.join ' ' if raw_msg.is_a? Array
|
189
239
|
|
190
240
|
raw_msg = src_path[/([^\/]+)\.\w+$/,1] + ' ' + raw_msg if raw_msg[/^#/]
|
191
241
|
|
192
|
-
|
242
|
+
|
193
243
|
if block_given? then
|
194
|
-
raw_msg, target_url = yield(destination, raw_destination)
|
244
|
+
raw_msg, target_url = yield(destination, raw_destination)
|
195
245
|
static_url = target_url
|
196
246
|
else
|
197
|
-
|
198
|
-
|
247
|
+
FileX.cp src_path, destination
|
248
|
+
FileX.cp src_path, raw_destination
|
199
249
|
end
|
200
250
|
|
201
|
-
raw_msg = raw_msg.join if raw_msg.is_a? Array
|
251
|
+
raw_msg = raw_msg.join if raw_msg.is_a? Array
|
202
252
|
|
203
253
|
static_filename = if raw_msg.to_s.length > 0 then
|
204
254
|
normalize(raw_msg) + File.extname(destination)
|
205
255
|
else
|
206
|
-
|
256
|
+
|
207
257
|
basename(@media_src, src_path)
|
208
|
-
|
209
|
-
end
|
210
|
-
|
258
|
+
|
259
|
+
end
|
260
|
+
|
211
261
|
static_path = "%s/%s/%s" % [@public_type, \
|
212
262
|
Time.now.strftime('%Y/%b/%d').downcase, static_filename]
|
213
|
-
|
263
|
+
|
214
264
|
raw_static_destination = "%s/%s/%s" % [@home, 'r',static_path]
|
215
265
|
|
216
|
-
static_destination = "%s/%s" % [@home, static_path]
|
266
|
+
static_destination = "%s/%s" % [@home, static_path]
|
217
267
|
|
218
268
|
#FileUtils.mkdir_p File.dirname(static_destination)
|
219
|
-
|
269
|
+
FileX.cp destination, static_destination
|
220
270
|
|
221
271
|
#jr010817 FileUtils.cp raw_destination, raw_static_destination
|
222
272
|
|
@@ -224,70 +274,46 @@ module MyMedia
|
|
224
274
|
if File.extname(static_destination) == '.html' then
|
225
275
|
|
226
276
|
xmlfilepath = destination.sub('.html','.xml')
|
227
|
-
|
228
|
-
if
|
229
|
-
|
277
|
+
|
278
|
+
if FileX.exists?(xmlfilepath) then
|
279
|
+
FileX.cp xmlfilepath, static_destination.sub('.html','.xml')
|
230
280
|
end
|
231
281
|
|
232
282
|
end
|
233
|
-
|
283
|
+
|
234
284
|
target_url ||= "%s/%s" % [@website, public_path]
|
235
285
|
static_url ||= "%s/%s" % [@website, static_path]
|
236
286
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
msg = "the %s %s %s" % [notice, @public_type.sub(/s$/,''), target_url]
|
241
|
-
end
|
242
|
-
|
243
|
-
sps_message = ['publish', @public_type,
|
287
|
+
msg = "%s %s" % [target_url, raw_msg ]
|
288
|
+
|
289
|
+
sps_message = ['publish', @public_type,
|
244
290
|
target_url, static_url, raw_msg]
|
245
291
|
|
246
292
|
send_message(msg: sps_message.join(' '))
|
247
293
|
|
248
294
|
static_url
|
249
|
-
|
295
|
+
|
250
296
|
end
|
251
|
-
|
297
|
+
|
252
298
|
def normalize(s)
|
253
299
|
|
254
300
|
r = s.downcase.gsub(/\s#\w+/,'').strip.gsub(/\W/,'-').gsub(/-{2,}/,'-').gsub(/^-|-$/,'')
|
255
301
|
return s.scan(/#(\w+)/)[0..1].join('_').downcase if r.empty?
|
256
|
-
return r
|
257
|
-
end
|
258
|
-
|
259
|
-
def notice()
|
260
|
-
|
261
|
-
case
|
262
|
-
when Time.now.hour < 10
|
263
|
-
"morning"
|
264
|
-
when Time.now.hour < 12
|
265
|
-
"late morning"
|
266
|
-
when Time.now.hour >= 12 && Time.now.hour <= 13
|
267
|
-
"lunch time"
|
268
|
-
when Time.now.hour > 13 && Time.now.hour < 16
|
269
|
-
"afternoon"
|
270
|
-
when Time.now.hour < 18
|
271
|
-
"late afternoon"
|
272
|
-
when Time.now.hour >= 18
|
273
|
-
"evening"
|
274
|
-
end
|
302
|
+
return r
|
275
303
|
end
|
276
|
-
|
277
|
-
|
278
304
|
|
279
305
|
end
|
280
|
-
|
281
|
-
|
306
|
+
|
307
|
+
|
282
308
|
class FrontpageException < Exception
|
283
309
|
end
|
284
|
-
|
310
|
+
|
285
311
|
class Frontpage < Publisher
|
286
|
-
|
312
|
+
|
287
313
|
def initialize(config: nil, public_type: '', rss: nil)
|
288
|
-
|
314
|
+
|
289
315
|
raise FrontpageException, "no config found" if config.nil?
|
290
|
-
|
316
|
+
|
291
317
|
c = SimpleConfig.new(config).to_h
|
292
318
|
|
293
319
|
@home = c[:home]
|
@@ -296,18 +322,20 @@ module MyMedia
|
|
296
322
|
@rss = rss
|
297
323
|
@sps = c[:sps]
|
298
324
|
@opts = {username: c[:username], password: c[:password]}
|
299
|
-
|
325
|
+
|
300
326
|
end
|
301
|
-
|
302
|
-
def publish_frontpage(s='index.html')
|
303
327
|
|
304
|
-
|
328
|
+
def publish_frontpage(s='index.html')
|
329
|
+
|
330
|
+
publish_html(@home + '/' + s)
|
305
331
|
'frontpage published'
|
306
|
-
end
|
332
|
+
end
|
333
|
+
|
307
334
|
|
308
|
-
|
309
335
|
def publish_to_lists(record={}, public_type=nil)
|
310
|
-
|
336
|
+
|
337
|
+
@log.info 'inside publish_to_lists' if @log
|
338
|
+
|
311
339
|
@public_type = public_type if public_type
|
312
340
|
|
313
341
|
raw_msg, static_url, target_url = \
|
@@ -317,33 +345,33 @@ module MyMedia
|
|
317
345
|
raw_dynarex_filepath = "%s/r/%s/dynarex.xml" % [@home, @public_type]
|
318
346
|
|
319
347
|
|
320
|
-
publish_dynarex(dynarex_filepath, record, {rss: @rss || false})
|
321
|
-
publish_dynarex(raw_dynarex_filepath, record, {rss: @rss || false})
|
348
|
+
publish_dynarex(dynarex_filepath, record, {rss: @rss || false})
|
349
|
+
publish_dynarex(raw_dynarex_filepath, record, {rss: @rss || false})
|
322
350
|
|
323
|
-
publish_timeline(raw_msg, static_url, target_url)
|
351
|
+
publish_timeline(raw_msg, static_url, target_url)
|
324
352
|
send_message(msg: 'publish_to_lists completed')
|
325
|
-
|
353
|
+
|
326
354
|
end
|
327
355
|
|
328
|
-
|
356
|
+
|
329
357
|
def publish_timeline(raw_msg, static_url, target_url='')
|
330
358
|
|
331
|
-
timeline_filepath = "%s/timeline/dynarex.xml" % @home
|
332
|
-
record = Dynarex.new(@home + '/dynarex/main-directory.xml').find_by_title(@public_type)
|
359
|
+
timeline_filepath = "%s/timeline/dynarex.xml" % @home
|
360
|
+
record = Dynarex.new(@home + '/dynarex/main-directory.xml').find_by_title(@public_type)
|
333
361
|
|
334
362
|
thumbnail, subject_url = record.thumbnail, record.url
|
335
|
-
|
363
|
+
|
336
364
|
content = {
|
337
|
-
title: raw_msg,
|
365
|
+
title: raw_msg,
|
338
366
|
url: static_url,
|
339
|
-
thumbnail: thumbnail,
|
340
|
-
subject_url: subject_url,
|
341
|
-
raw_url: target_url
|
367
|
+
thumbnail: thumbnail,
|
368
|
+
subject_url: subject_url,
|
369
|
+
raw_url: target_url
|
342
370
|
}
|
343
|
-
|
344
|
-
publish_dynarex(timeline_filepath, content, rss: true)
|
345
371
|
|
346
|
-
|
372
|
+
publish_dynarex(timeline_filepath, content, rss: true)
|
373
|
+
|
374
|
+
end
|
347
375
|
|
348
376
|
end
|
349
377
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mymedia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,28 +10,32 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjAzMjE0MDM4WhcN
|
15
|
+
MjMwMjAzMjE0MDM4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDLhnus
|
17
|
+
EmCSf8Mh4kdpLThgpsLS0N/kupJ35qxUqlluM0Treka8rn+Xv+su5eGY7bwT1lis
|
18
|
+
4rNk+H/YxNqm+7JoleqcdygCSMJju75WILEAuPtaZJbIlHiwlboe2P1Q/Q0qjYV4
|
19
|
+
5Hod6xYAFzjx4NRTCfRwvFjyXrvUJK/CgUWgDLraQEM4iQTWpxp+oIDsQIV5DLn7
|
20
|
+
wv4u+RKVrcHZkeu1r+vt/KBm9qNh2cK/kGw96tylW4/6sSTaPNNY9dvYx2Ee04jf
|
21
|
+
GTuxXBqtyvDKOfQAI/sWQ5J94+uIppx2dDL3eSEYfl2V8CwWVZxx3dETJ8M1fG6M
|
22
|
+
CMA+15zld92rCvGYsLh4jkZnyCt2l1O6IYMW/gAScwgzvlC01U2vV2P+8bwm17Un
|
23
|
+
pWP2FbNiihwZD7mdyKbi8noCeWrompgX5+hJZumFlsqld5XhoaPwQB6VNgVCxtOG
|
24
|
+
ZHXdP6MiTPhH0t6XVmRSMX+zEedaoL2Z2OxaBAM9abkOJ8kNtI3pqqVkQmkCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUTUv11jAO
|
26
|
+
mX0Ta1tkNdz9cHZLKZowJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEARdXjjSCHczpSquJFR7p/1Xovom9aQAmp8aCgZJg4
|
29
|
+
9oln3FIyBnk3W/LTUJVGS5a3u8JcVMxLTEJqkUMrBVGa8AcJzsPEU8XAG9R2360z
|
30
|
+
iZxVyGiFdi+DUOo++vjbiBRvgl2o3gKEwp8RPFj+OUemVDeFexBHKukDDdk7MJNp
|
31
|
+
WmLLvRyAmB+grz7eMPFjTxfRcV4/6WHNS5MFdXZ0ZioAKUatCNYIpDS7NqnT/nhD
|
32
|
+
CSEqt9HQknjKDK8LFS8Ostfbn0wZxYdh7Gxy6TKEh9dt0mMkIdzKxOJW70N+6bPP
|
33
|
+
CDRYB4NTKybJ2XnbEbJsUBezXDF8p+dmOEhygIAcNrjY9OyorRiZD3m60O+UuqXx
|
34
|
+
jumKCvffqUahjzaQRcW0r0OkF8v087BT7xUdq+K9Iza2Vuc3Qj2YxrFskE7gUhgB
|
35
|
+
bL55NDdi8BFHkNVohRBak7aqxsw41LJKy3UTP+4TzU5vyluDJMiscK6JJFaM4JiS
|
36
|
+
xtlAM0O5ZFe9QflatP+P8JnB
|
33
37
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
38
|
+
date: 2022-02-11 00:00:00.000000000 Z
|
35
39
|
dependencies:
|
36
40
|
- !ruby/object:Gem::Dependency
|
37
41
|
name: dynarex
|
@@ -39,80 +43,80 @@ dependencies:
|
|
39
43
|
requirements:
|
40
44
|
- - "~>"
|
41
45
|
- !ruby/object:Gem::Version
|
42
|
-
version: '1.
|
46
|
+
version: '1.9'
|
43
47
|
- - ">="
|
44
48
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
49
|
+
version: 1.9.2
|
46
50
|
type: :runtime
|
47
51
|
prerelease: false
|
48
52
|
version_requirements: !ruby/object:Gem::Requirement
|
49
53
|
requirements:
|
50
54
|
- - "~>"
|
51
55
|
- !ruby/object:Gem::Version
|
52
|
-
version: '1.
|
56
|
+
version: '1.9'
|
53
57
|
- - ">="
|
54
58
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.
|
59
|
+
version: 1.9.2
|
56
60
|
- !ruby/object:Gem::Dependency
|
57
61
|
name: sps-pub
|
58
62
|
requirement: !ruby/object:Gem::Requirement
|
59
63
|
requirements:
|
60
64
|
- - "~>"
|
61
65
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0.
|
66
|
+
version: '0.5'
|
63
67
|
- - ">="
|
64
68
|
- !ruby/object:Gem::Version
|
65
|
-
version: 0.
|
69
|
+
version: 0.5.5
|
66
70
|
type: :runtime
|
67
71
|
prerelease: false
|
68
72
|
version_requirements: !ruby/object:Gem::Requirement
|
69
73
|
requirements:
|
70
74
|
- - "~>"
|
71
75
|
- !ruby/object:Gem::Version
|
72
|
-
version: '0.
|
76
|
+
version: '0.5'
|
73
77
|
- - ">="
|
74
78
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
79
|
+
version: 0.5.5
|
76
80
|
- !ruby/object:Gem::Dependency
|
77
81
|
name: dir-to-xml
|
78
82
|
requirement: !ruby/object:Gem::Requirement
|
79
83
|
requirements:
|
80
84
|
- - "~>"
|
81
85
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
86
|
+
version: '1.0'
|
83
87
|
- - ">="
|
84
88
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.
|
89
|
+
version: 1.0.8
|
86
90
|
type: :runtime
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
93
|
requirements:
|
90
94
|
- - "~>"
|
91
95
|
- !ruby/object:Gem::Version
|
92
|
-
version: '0
|
96
|
+
version: '1.0'
|
93
97
|
- - ">="
|
94
98
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
99
|
+
version: 1.0.8
|
96
100
|
- !ruby/object:Gem::Dependency
|
97
101
|
name: dataisland
|
98
102
|
requirement: !ruby/object:Gem::Requirement
|
99
103
|
requirements:
|
100
|
-
- - "~>"
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '0.1'
|
103
104
|
- - ">="
|
104
105
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.
|
106
|
+
version: 0.3.0
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.3'
|
106
110
|
type: :runtime
|
107
111
|
prerelease: false
|
108
112
|
version_requirements: !ruby/object:Gem::Requirement
|
109
113
|
requirements:
|
110
|
-
- - "~>"
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '0.1'
|
113
114
|
- - ">="
|
114
115
|
- !ruby/object:Gem::Version
|
115
|
-
version: 0.
|
116
|
+
version: 0.3.0
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.3'
|
116
120
|
- !ruby/object:Gem::Dependency
|
117
121
|
name: increment
|
118
122
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,22 +143,22 @@ dependencies:
|
|
139
143
|
requirements:
|
140
144
|
- - "~>"
|
141
145
|
- !ruby/object:Gem::Version
|
142
|
-
version: '0.
|
146
|
+
version: '0.7'
|
143
147
|
- - ">="
|
144
148
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.2
|
149
|
+
version: 0.7.2
|
146
150
|
type: :runtime
|
147
151
|
prerelease: false
|
148
152
|
version_requirements: !ruby/object:Gem::Requirement
|
149
153
|
requirements:
|
150
154
|
- - "~>"
|
151
155
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0.
|
156
|
+
version: '0.7'
|
153
157
|
- - ">="
|
154
158
|
- !ruby/object:Gem::Version
|
155
|
-
version: 0.2
|
159
|
+
version: 0.7.2
|
156
160
|
description:
|
157
|
-
email:
|
161
|
+
email: digital.robertson@gmail.com
|
158
162
|
executables: []
|
159
163
|
extensions: []
|
160
164
|
extra_rdoc_files: []
|
@@ -180,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
184
|
version: '0'
|
181
185
|
requirements: []
|
182
186
|
rubyforge_project:
|
183
|
-
rubygems_version: 2.
|
187
|
+
rubygems_version: 2.7.10
|
184
188
|
signing_key:
|
185
189
|
specification_version: 4
|
186
190
|
summary: Makes publishing to the web easier
|
metadata.gz.sig
CHANGED
Binary file
|