mymedia 0.2.13 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/mymedia.rb +166 -138
  4. data.tar.gz.sig +0 -0
  5. metadata +52 -48
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f2b6caefba096cabac5be086c6a97bde789b8375
4
- data.tar.gz: 4ca9a5d2bc3cc8a927d47067524a3deb2c18f8d8
2
+ SHA256:
3
+ metadata.gz: 879bb9d7cf2f55bd38bb6d2e005d824fc0b63760931424c0ef16599c8e405581
4
+ data.tar.gz: 77ccdb6252d36a6bf313e491169a2df56b5325284a809060894bb6e30eadfaec
5
5
  SHA512:
6
- metadata.gz: d6db9f9f3d95bbc5029ca3e300ab41afe04a1de77c56e1fb423c15c46c63f286207aabdf39463da490a25f166d3d5d24edce09f692d3deff37c71f4a644fbd23
7
- data.tar.gz: 21ec5e6174f987e02c40f2e51d795616816a49c41434e4246f38ffd249a030b0cc9bb376319fcfd0ea2ea881c4a661efb0f3e98d370e042d49f15e700195b801
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 File.exists? dynarex_filepath then
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
- File.open(rss_filepath, 'w'){|f| f.write dynarex.to_rss }
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
- File.exists?(template_path)
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.02
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: 'blog', ext: 'txt', config: nil)
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
- @website = c[:website]
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
- #@logger = Logger.new(logfile,'daily') if logfile
112
- #@logger.info('inside MyMedia::Base') if @logger
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
- Dir.chdir @home
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
- dir = DirToXML.new(@media_src, recursive: true)
189
+ if r then
141
190
 
142
- r = dir.last_modified
191
+ puts 'r: ' + r.inspect if @debug
143
192
 
144
- filename = r.is_a?(Hash) ? r[:name] : File.join(r.map {|x| x[:name]})
193
+ filename = r.sub(/^#{@media_src}/,'')
194
+ copy_publish( filename ,raw_msg, &blk)
145
195
 
146
- copy_publish( filename ,raw_msg)
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 File.exists? raw_destination then
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 = "%s/%s" % [@home, public_path]
185
- FileUtils.mkdir_p File.dirname(raw_destination)
186
- FileUtils.mkdir_p File.dirname(destination)
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
- FileUtils.cp src_path, destination
198
- FileUtils.cp src_path, raw_destination
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
- FileUtils.cp destination, static_destination
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 File.exists?(xmlfilepath) then
229
- FileUtils.cp xmlfilepath, static_destination.sub('.html','.xml')
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
- if raw_msg.to_s.length > 0 then
238
- msg = "%s %s" % [target_url, raw_msg ]
239
- else
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
- publish_html(@home + '/' + s)
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
- end
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.2.13
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
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE2MDkwNDEzNDI1NVoXDTE3MDkwNDEzNDI1NVowSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBAOOxNQ5XSIKHIdn5RZsQiLio8HY2a8rwzkXuDTzr04TSOZd1uH0zhDy7nDaV
19
- alcDv0+Gfqb3x0LlOtqHXznJlziTN70Ey3LrCGR9DG9Kk77r2xNqw2SIrIFbPQZa
20
- lu5hXpHiG0LoeglWiFb6r+sqyVcbOuols1AYqJNp9StVtwevTvC48EZ5S7pV2yA8
21
- FtqsXohnmIsoH1U4PKHSsdSZXMLJiLAMB61UYTCS7VQhqxMSQiNjEQA9gnbUj5mV
22
- g0Yx32L/35WzG0kD7axyY0Axqka4+f7Eetyn5VzXXliUyP8u/2+VkaUtkI2PwJ5S
23
- S3Ig+kQiBGF+DG5k0yhxO0uLZbsCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQUeBJrMmC7EIa/0PJQyAgXwSnKLn0wJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAyKU0XjlV
27
- 6BVWrOVvcSHPM3j9kZeV6a6C/hlvQuDxUrVFi8WlwIuhFTg2Y352DSndiqPnsZyd
28
- rSEXnm7DfZ0lRgxp4C0EqgK9MVxYPz/SkCzX3aBzOyDQYcsAp1s+ZWOltqZMqGdm
29
- UNXcN40Ga4v0Rn42OH+yS0pvCAnCH95UnAh/ZdkzkzdhypLuWf3A+UU9k0Bm8Nre
30
- u3I4mOWY/EI+/mOCTXD2nsk7Fp1Y+lSeKb3GA/pw97WwOwMg5GgQo6YzNDJ6SNvP
31
- QGupEiSvhduKe7yJhCMhsjS3Y0bQLzHoYkgODDXj3b5FZM187Odi2YacSwL64ush
32
- uwWZRkjawruhkg==
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: 2017-08-01 00:00:00.000000000 Z
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.2'
46
+ version: '1.9'
43
47
  - - ">="
44
48
  - !ruby/object:Gem::Version
45
- version: 1.3.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.2'
56
+ version: '1.9'
53
57
  - - ">="
54
58
  - !ruby/object:Gem::Version
55
- version: 1.3.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.4'
66
+ version: '0.5'
63
67
  - - ">="
64
68
  - !ruby/object:Gem::Version
65
- version: 0.4.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.4'
76
+ version: '0.5'
73
77
  - - ">="
74
78
  - !ruby/object:Gem::Version
75
- version: 0.4.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.3'
86
+ version: '1.0'
83
87
  - - ">="
84
88
  - !ruby/object:Gem::Version
85
- version: 0.3.3
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.3'
96
+ version: '1.0'
93
97
  - - ">="
94
98
  - !ruby/object:Gem::Version
95
- version: 0.3.3
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.1.14
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.1.14
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.2'
146
+ version: '0.7'
143
147
  - - ">="
144
148
  - !ruby/object:Gem::Version
145
- version: 0.2.1
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.2'
156
+ version: '0.7'
153
157
  - - ">="
154
158
  - !ruby/object:Gem::Version
155
- version: 0.2.1
159
+ version: 0.7.2
156
160
  description:
157
- email: james@jamesrobertson.eu
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.6.8
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