rack-rscript 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35ab3661aa2c2f191b140e28dbda3805f32a97e6a3eaf6c1f410e30f411d6b6c
4
- data.tar.gz: b6d2ba9fd30c7ae71571f69918583c8206cd0d5dbebd89dd796e4f35d44662d0
3
+ metadata.gz: c7d34cb833bf0422cdcde6fbd6ca2af9f4c6dbb5588d83cb72a4ff53cb3ad938
4
+ data.tar.gz: 4e20d1dd5709d4fbbf3bf05c6696947a0474b4c5047512cd41ca8a67181d66e4
5
5
  SHA512:
6
- metadata.gz: 216dc0e7c0e24231bf0e0fbb7d6cd5550cf9bf027a37b860102f909a378c608c78c806f51ab1b170a4b5880d0fc021311cd23d2d42782b56dc200ffa15eacde4
7
- data.tar.gz: da45f89a5e37161bf83a9c63cdc8830e69ed949241f004990db59e67e7d21d33d9533932df96de08f5136339d1d61b81589d73fa9814149a0fe20997a93f0845
6
+ metadata.gz: f1ac22e48c0333b4a1892dee3d7885e14bf7aa5f8b5f8816f31a3f94718ebcc9e92f0f9faaa089f6baa781a86cf34ebeebd967d54531e444d26dd45eec9a4bdb
7
+ data.tar.gz: 3b0620c345d7933bfb9bd9b0bd5f2e176e63925a6e33c1146de5939aa99bee0859d3b5a6912100857378d74d20b78f9afb1f4b9e27b2cac1315a29b9df1c34d9
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rack-rscript.rb CHANGED
@@ -13,11 +13,12 @@ require 'rscript'
13
13
  require 'app-routes'
14
14
  require 'uri'
15
15
  require 'polyrex-links'
16
+ require 'nthrut'
16
17
 
17
18
 
18
19
  class Redirect
19
20
  attr_reader :to_url
20
-
21
+
21
22
  def initialize(url)
22
23
  @to_url = url
23
24
  end
@@ -33,56 +34,59 @@ class RackRscript
33
34
  include AppRoutes
34
35
  include RXFHelperModule
35
36
  using ColouredText
36
-
37
+
37
38
  attr_reader :req, :rsc
38
-
39
-
40
- def initialize(log: nil, pkg_src: '', cache: 5, rsc_host: nil,
39
+
40
+
41
+ def initialize(log: nil, pkg_src: '', cache: 5, rsc_host: nil,
42
+ rsc: {host: rsc_host, port: '61000'},
41
43
  pxlinks: nil, debug: false, root: '', static: {})
42
44
 
43
45
  @log, @debug, @static = log, debug, static
44
- #=begin
46
+ #=begin
45
47
  puts '@app_root: ' + @app_root.inspect if @debug
46
48
  puts 'root: ' + root.inspect if @debug
47
-
49
+
48
50
  @params = {}
49
-
51
+
50
52
  @templates = {}
51
-
53
+
52
54
  @rscript = RScriptRW.new log: log, pkg_src: pkg_src, cache: cache, debug: true
53
55
  @render = NThrut.new(self)
54
-
56
+
55
57
  @url_base = pkg_src # web server serving the RSF files
56
- @url_base += '/' unless @url_base[-1] == '/'
57
-
58
+ @url_base += '/' unless @url_base[-1] == '/'
59
+
58
60
  if pxlinks then
59
-
61
+
60
62
  src, _ = RXFHelper.read(pxlinks)
61
-
63
+
62
64
  if src =~ /^<\?/ then
63
-
65
+
64
66
  @pxlinks = PolyrexLinks.new src
65
-
67
+
66
68
  else
67
-
69
+
68
70
  @pxlinks = PolyrexLinks.new
69
71
  @pxlinks.parse pxlinks
70
-
71
- end
72
-
72
+
73
+ end
74
+
73
75
  end
74
76
 
75
77
  super() # required for app-routes initialize method to exectue
76
- default_routes(@env, @params || {})
77
-
78
+ default_routes(@env, @params || {})
79
+
78
80
  @rsc = nil
79
81
 
80
- @rsc = RSC.new rsc_host if rsc_host and rsc_host.length > 0
81
-
82
+ if rsc[:host] and rsc[:host].length > 0 then
83
+ @rsc = RSC.new(rsc[:host], port: rsc[:port])
84
+ end
85
+
82
86
  @filetype = {xml: 'application/xml', html: 'text/html', png: 'image/png',
83
87
  jpg: 'image/jpeg', txt: 'text/plain', css: 'text/css',
84
- xsl: 'application/xml', svg: 'image/svg+xml'}
85
-
88
+ xsl: 'application/xml', svg: 'image/svg+xml'}
89
+
86
90
  @root, @static = root, static
87
91
  @initialized = {}
88
92
  #=end
@@ -96,28 +100,28 @@ class RackRscript
96
100
  #raw_request = env['REQUEST_PATH']
97
101
 
98
102
  @log.info 'RackRscript/call: ' + env.inspect if @log
99
-
103
+
100
104
  if testmode == false then
101
-
105
+
102
106
  @req = Rack::Request.new(env)
103
107
  @req_params = @req.params
104
-
108
+
105
109
  end
106
-
110
+
107
111
  default_routes(env,@params)
108
-
112
+
109
113
  request = if @pxlinks then
110
114
  found = @pxlinks.locate(raw_request)
111
115
  found ? found.join : raw_request
112
116
  else
113
117
  raw_request
114
118
  end
115
-
119
+
116
120
  @log.info 'RackRscript/call/request: ' + request.inspect if @log
117
- #=begin
121
+ #=begin
118
122
  puts 'request: ' + request.inspect if @debug
119
123
  run_request(request)
120
- #=end
124
+ #=end
121
125
  # [200, {"Content-Type" => "text/plain"}, [env.inspect]]
122
126
  end
123
127
 
@@ -130,46 +134,46 @@ class RackRscript
130
134
  puts 'inside run_job' if @debug
131
135
  @log.debug 'RackRscript/run_job/params: ' + params.inspect if @log
132
136
  @log.debug 'RackRscript/run_job/qargs: ' + qargs.inspect if @log
133
-
137
+
134
138
  if @params[:splat] then
135
139
  @params.each do |k,v|
136
140
  @params.delete k unless k == :splat or k == :package \
137
141
  or k == :job or k == :captures
138
142
  end
139
- end
140
-
143
+ end
144
+
141
145
  if @params[:splat] and @params[:splat].length > 0 then
142
- h = @params[:splat].first[1..-1].split('&').inject({}) do |r,x|
146
+ h = @params[:splat].first[1..-1].split('&').inject({}) do |r,x|
143
147
  k, v = x.split('=')
144
148
  v ? r.merge(k[/\w+$/].to_sym => Rack::Utils.unescape(v)) : r
145
149
  end
146
150
  @params.merge! h
147
151
  end
148
-
152
+
149
153
  @params.merge! @req.params if @req
150
154
  @rscript.type = type
151
-
155
+
152
156
  if not @rscript.jobs(url).include?(job.to_sym) then
153
-
157
+
154
158
  if @rscript.jobs(url).include?(:job_missing) then
155
- job = 'job_missing'
159
+ job = 'job_missing'
156
160
  else
157
161
  [404, 'job not found']
158
162
  end
159
163
 
160
164
  end
161
-
165
+
162
166
  result, args = @rscript.read([url, '//job:' + job, \
163
167
  qargs].flatten)
164
168
 
165
169
  rws = self
166
- rsc = @rsc if @rsc
170
+ rsc = @rsc if @rsc
167
171
  req = @req if @req
168
-
172
+
169
173
  begin
170
174
 
171
175
  if @debug then
172
- puts @rscript.jobs(url).inspect
176
+ puts @rscript.jobs(url).inspect
173
177
  puts 'job: ' + job.inspect
174
178
  puts 'url: ' + url.inspect
175
179
  puts '@initialized: ' + @initialized.inspect
@@ -177,74 +181,79 @@ class RackRscript
177
181
  !@initialized[url] and job != 'initialize'
178
182
  puts 'bflag: ' + bflag.inspect
179
183
  end
180
-
181
- if @rscript.jobs(url).include?(:initialize) and
184
+
185
+ if @rscript.jobs(url).include?(:initialize) and
182
186
  !@initialized[url] and job != 'initialize' then
183
187
  puts 'before run initialize' if @debug
184
- r2 = @rscript.read([url, '//job:initialize'])
188
+ r2 = @rscript.read([url, '//job:initialize'])
185
189
  puts 'r2: ' + r2.inspect if @debug
186
190
  eval r2.join
187
191
  @initialized[url] = true
188
192
  end
189
-
193
+
190
194
 
191
195
  r = eval result
192
196
 
193
197
  return r
194
198
 
195
- rescue Exception => e
196
-
199
+ rescue Exception => e
200
+
197
201
  @params = {}
198
- err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n")
202
+ err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n")
199
203
  raise RackRscriptError, err_label
200
204
 
201
205
  @log.debug 'RackRscript/run_job/error: ' + err_label if @log
202
206
  end
203
-
207
+
204
208
  end
205
209
 
206
-
210
+
207
211
  def redirect(url)
208
212
  Redirect.new url
209
213
  end
210
-
214
+
211
215
  # jr 140616 not yet used and still needs to be tested
212
216
  def transform(xsl, xml)
213
217
  Rexslt.new(xsl, xml).to_s
214
218
  end
215
219
 
216
- def haml(name,options={})
220
+ def haml(name,options={})
217
221
  @render.haml name, options
218
- end
219
-
222
+ end
223
+
220
224
  def slim(name,options={})
221
225
  @render.slim name, options
222
- end
223
-
226
+ end
227
+
224
228
  protected
225
229
 
226
230
  def default_routes(env, params)
227
231
 
228
232
  @log.info 'RackRscript/default_routes: ' + params.inspect if @log
229
-
233
+
230
234
  get '/do/:package/:job' do |package,job|
231
235
  @log.info 'RackRscript/route/do/package/job: ' + [package, job].inspect if @log
232
- run_job("%s%s.rsf" % [@url_base, package], job, params)
233
- end
234
-
235
- get /\/(.*)\/do\/(\w+)\/(\w+)$/ do |d, package,job|
236
- run_job(("%s%s/%s.rsf" % [@url_base, d, package]), job, params)
237
- end
238
-
239
- get /\/(.*)\/do\/(\w+)\/(\w+)\/(.*)/ do |d, package, job, raw_args|
240
- args = raw_args.split('/')
241
- run_job(("%s%s/%s.rsf" % [@url_base, d, package]), job, params, :get, args)
242
- end
236
+ run_job("%s%s.rsf" % [@url_base, package], job, params)
237
+ end
238
+
239
+ get '/:dir/do/:package/:job' do |dir, package, job|
240
+ run_job(("%s%s/%s.rsf" % [@url_base, dir, package]), job, params)
241
+ end
242
+
243
+ get '/:dir/do/:package/:job/*' do |dir, package, job|
244
+ raw_args = params[:splat]
245
+ args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
246
+ run_job(("%s%s/%s.rsf" % [@url_base, dir, package]), job, params, :get, args)
247
+ end
243
248
 
244
249
  post '/do/:package/:job' do |package,job|
245
- run_job("%s%s.rsf" % [@url_base, package], job, params, :post)
250
+ run_job("%s%s.rsf" % [@url_base, package], job, params, :post)
251
+ end
252
+
253
+ post '/:dir/do/:package/:job' do |dir, package,job|
254
+ run_job(("%s%s/%s.rsf" % [@url_base, dir, package]), job, params, :post)
246
255
  end
247
-
256
+
248
257
  get '/do/:package/:job/*' do |package, job|
249
258
  raw_args = params[:splat]
250
259
  args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
@@ -257,68 +266,74 @@ class RackRscript
257
266
  run_job("%s%s.rsf" % [@url_base, package], job, params, :post, args)
258
267
  end
259
268
 
269
+ post '/:dir/do/:package/:job/*' do |package, job|
270
+ raw_args = params[:splat]
271
+ args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
272
+ run_job("%s%s/%s.rsf" % [@url_base, dir, package], job, params, :post, args)
273
+ end
274
+
260
275
  get '/source/:package/:job' do |package,job|
261
276
  url = "%s%s.rsf" % [@url_base, package]
262
277
  [@rscript.read([url, job]).first, 'text/plain']
263
- end
278
+ end
264
279
 
265
280
  get '/source/:package' do |package,job|
266
-
281
+
267
282
  url = "%s%s.rsf" % [@url_base, package]
268
283
 
269
284
  begin
270
-
285
+
271
286
  [RXFHelper.read(url).first,'text/plain']
272
287
 
273
288
  rescue
274
-
289
+
275
290
  ['url: ' + url + '; ' + ($!).inspect + \
276
291
  'couldn\'t find that package', 'text/plain']
277
292
  end
278
293
 
279
- end
294
+ end
280
295
 
281
296
  get '/ls' do
282
-
297
+
283
298
  FileX.exists? @url_base
284
299
  filepath = @url_base
285
-
300
+
286
301
  [Dir.glob(filepath + '/*.rsf').map{|x| x[/([^\/]+)\.rsf$/,1]}.to_json,\
287
302
  'application/json']
288
303
 
289
- end
290
-
304
+ end
305
+
291
306
  if @static.any? then
292
-
307
+
293
308
  get /^(\/(?:#{@static.keys.join('|')}).*)/ do |raw_path|
294
309
 
295
310
  _, file, tailpath = raw_path.split('/',3)
296
-
311
+
297
312
  filepath = if @static[file].empty? then
298
-
313
+
299
314
  path = raw_path
300
315
  puts 'path: ' + path.inspect if @debug
301
- filepath = File.join(@app_root, @root, path )
302
-
316
+ filepath = File.join(@app_root, @root, path )
317
+
303
318
  else
304
-
305
- File.join(@static[file], tailpath)
306
-
319
+
320
+ File.join(@static[file], tailpath)
321
+
307
322
  end
308
323
 
309
- @log.debug 'RackRscript/default_routes/filepath: ' + filepath.inspect if @log
324
+ @log.debug 'RackRscript/default_routes/filepath: ' + filepath.inspect if @log
310
325
 
311
326
 
312
327
  if @log then
313
- @log.info 'DandelionS1/default_routes: ' +
328
+ @log.info 'DandelionS1/default_routes: ' +
314
329
  "root: %s path: %s" % [@root, path]
315
330
  end
316
331
 
317
332
  if filepath.length < 1 or filepath[-1] == '/' then
318
- filepath += 'index.html'
333
+ filepath += 'index.html'
319
334
  FileX.read filepath
320
335
  elsif FileX.directory? filepath then
321
- Redirect.new (filepath + '/')
336
+ Redirect.new (filepath + '/')
322
337
  elsif FileX.exists? filepath then
323
338
 
324
339
  content_type = @filetype[filepath[/\w+$/].to_sym]
@@ -338,28 +353,39 @@ class RackRscript
338
353
  else
339
354
  Time.now.inspect
340
355
  end
341
-
356
+
357
+ end
358
+
359
+ # file exists?
360
+ a = Dir.glob( File.join(@root.to_s, '*')).select do |x|
361
+ File::ftype(x) == 'directory'
362
+ end
363
+
364
+ get /^\/#{a.join('|')}/ do
365
+
366
+ 'found' + a.inspect
367
+
342
368
  end
343
369
 
344
370
  end
345
-
371
+
346
372
  def run_request(request)
347
-
373
+
348
374
  #@log.debug 'inside run_request: ' + request.inspect if @log
349
375
  #@log.debug 'inside run_request @env: ' + @env.inspect if @log
350
376
  method_type = @env ? @env['REQUEST_METHOD'] : 'GET'
351
- content, content_type, status_code = run_route(request, method_type)
377
+ content, content_type, status_code = run_route(request, method_type)
352
378
  @log.info 'RackRscript/run_request/content: ' + content.inspect if @log
353
379
  #puts 'content: ' + content.inspect if @debug
354
380
 
355
381
  #@log.debug 'inside run_request' if @log
356
382
  if content.is_a? Redirect then
357
-
383
+
358
384
  redirectx = content
359
385
  res = Rack::Response.new
360
386
  res.redirect(redirectx.to_url)
361
- res.finish
362
-
387
+ res.finish
388
+
363
389
  else
364
390
 
365
391
  e = $!
@@ -368,18 +394,18 @@ class RackRscript
368
394
  content, status_code = e, 500
369
395
  @log.debug 'RackRscript/call/error: ' + e if @log
370
396
  elsif content.nil? then
371
- content, status_code = "404: page not found", 404
372
- end
397
+ content, status_code = "404: page not found", 404
398
+ end
373
399
 
374
- tilt_proc = lambda do |s, content_type|
400
+ tilt_proc = lambda do |s, content_type|
375
401
  type = content_type[/[^\/]+$/]
376
402
  s = [s,{}] unless s.is_a? Array
377
403
  content, options = s
378
404
  [Tilt[type].new() {|x| content}.render(self, options), 'text/html']
379
405
  end
380
-
406
+
381
407
  passthru_proc = lambda{|c, ct| [c,ct]}
382
-
408
+
383
409
  ct_list = {
384
410
  'text/html' => passthru_proc,
385
411
  'text/haml' => tilt_proc,
@@ -393,26 +419,26 @@ class RackRscript
393
419
  'application/json' => passthru_proc,
394
420
  'image/png' => passthru_proc,
395
421
  'image/jpeg' => passthru_proc,
396
- 'image/svg+xml' => passthru_proc
422
+ 'image/svg+xml' => passthru_proc
397
423
  }
398
-
424
+
399
425
  content_type ||= 'text/html'
400
- status_code ||= 200
426
+ status_code ||= 200
401
427
  proc = ct_list[content_type]
402
428
  proc ||= passthru_proc
403
- content, content_type = proc.call(content, content_type)
404
-
429
+ content, content_type = proc.call(content, content_type)
430
+
405
431
  [status_code, {"Content-Type" => content_type}, [content]]
406
- end
407
-
432
+ end
433
+
408
434
  end
409
-
435
+
410
436
  alias jumpto run_request
411
437
 
412
438
  private
413
-
439
+
414
440
  def template(name, type=nil, &blk)
415
441
  @render.template name, type, &blk
416
- end
417
-
442
+ end
443
+
418
444
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-rscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNjI4MTA0NTMzWhcN
15
- MjEwNjI4MTA0NTMzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC++hKM
17
- OkDJ8KaD3zDoCEYnfM3w0zHKKGDhTr5pAWeFG3uSMEDpjSFjpDTNLRQnYXnAlkTQ
18
- iqnnkZ3PgKD2DrL3Tebb7i1xxiYDEV8uQJApP51MPd/bgdLka8y1Z/gNx0o5N42Z
19
- biScnOGCSwl1XpQHVgO+zhhLoPhsb4rneuOZRrT14OiHb5ERJilqE5DJhhErymQv
20
- Cs5NDHjLp39Ui3jpe0j3qdNMWBH49V7tXREIyKaM/vjDQGvaS/NX4jLGw0YVdMCE
21
- W8yadDcqRDWkFK7cz+omnIUZHGu6tcJA2oTeL/plSfJneyUXxMAAqarmm9jKWGiE
22
- Sa9icmAmueF4fjrPm8wiXcrOwDiCS0nAAOsiXnfrwJq+IKZDdvfiYrbJYqV3jpxO
23
- Zc47nGjO3oH85YcaWd0IQqpt+c0CVzRTy3wBK35xDSI9oRh3Io3qZq8YnJxpCTtR
24
- f/tFJkOfA97aDaU+n6NflYphEJgQIbNR8g5HH6aYMC1hV9NHBSj9C0+IPL0CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUotFCdsTq
26
- oF0+c4sgqZqQGAzOATIwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMjI5MTgxNDQyWhcN
15
+ MjIxMjI5MTgxNDQyWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC86yKR
17
+ KdjeR2YaKGfHPYSq+dF7O6QO+iCllVNfuVLgdZ46E35mBPMRNiXkwu3nnzEcdKnp
18
+ gN23mnWcl/riMqR6I+aymlqzFuqOeeOEl/A4T/fCcuhGx7DZmOEKJx0a58L/o3/K
19
+ X8LriVIA2fqKXpXlwcsbH9LuHHCGCXzDrw2sfJOevCkPZmGC+4YmY/Ma77gBiJL3
20
+ 1NAvfEAY2/Mm3SnKC/QR26cWo4ZT6cVqCvd6NcjnRbe2/4MkV+QRzG9bjR/jXv/p
21
+ d5IimipfEw3rvqzCZqSmqC7ZPXAJhCm3VfwrVr6AaUkOiov0elBBDEU7tN4rpLAd
22
+ AP/FQSDjA3+ElDiDQFfTgqqepIcoGZqsm+ct/MuHMVQzaBCHs/LQXTNIJDsv5oOq
23
+ YswOTDTE4j//Du1ySuCyboVDDQjeMNj7Xzr6gmQaelHrcC/Ax18fFVMMQS3CykUP
24
+ FPPwXgaqhMvO6IigDhif6bxOr9GWkR3wAOAZcdPTJuI69kXsDIppd8wvwBcCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUedc2Phvh
26
+ fegWTvjwW6u98RQNLiEwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAaEAg7AuqvVp/0qFr40orUDsiWgUri6xIAr7HN+Iu
29
- EYDxIn873j5HorzAcrhKkfb9dNyJnpraac1Hpn9yqg7hIeW/mU0LIM9wNe4S9yTI
30
- IOh0hhqsyeas7UwaZA220Bx23yyxque7E9P+fqn5I4RwtJXn/kDXZHiarKfvFTH1
31
- mduzu/04uoC0dYEAL/ASvOr/EMxD+N9/vtoxR4+bj4W8WXozy9ySAlpuKwDuVXmc
32
- twljCSdBB5QG11CH/7S+k4JMhN9vx+n4R2tNqouqyE0/Smyn+gXfYHR5jXqOzGFa
33
- wmNbJU6Nt9ro9mFunXiNVM3t85KOb7HptOAv7uAu+yNHzDX6iDy43y1wwTN9Ca+0
34
- 468xA07gVSZnQMLOLNcZE6qcx5MZVkhjTlWVchzBAusC2pb37Ut8jXn+q92nqCw9
35
- tilHf4Ok7vnZYPnxQk5PY3q28lYoflnB47YIc0pdkJHI1M3YXL/HxrcZCEIHAU3W
36
- aTCBK3Pk2/LQtqaW3yaSg73t
28
+ BgkqhkiG9w0BAQsFAAOCAYEAT8rbqnsRYicLTmcGmLHEvSAn/KEdyqbSSuuD0Kfr
29
+ SCVHCqTl53smpdKgBboZH9ZVr946vYtCZ/rtd1pVpEo/ENcWcaNaV4NhK6n/njCX
30
+ UBZ9Pdy0obZwP8k+nykQdQqDYUqiW/BXo1SB/BdkPOVu5mRYmx7yHuuj2vZpMmxM
31
+ lv4IN0rEyJXBtkcLQbGdQcRT9/b1/FLPAsuxEX7mFdSQrFufNLGcGzWl/c51a5Xo
32
+ SI76WH1OLRawRbeI9RS81zY/+Ku4K/plSqzynwuB52HFY4gEHtWlDMjJLdA98Pr8
33
+ z+AnDPyf+tgyo6PzzxVnEsp0GLrP1zKa4+NKXGXnbtDtPn7zQL3NamT39nPFzHfp
34
+ 7wFc43V/b0NugGvugJlSjM4y4rHww2j0aKMTJDGGJK0e51BLG1Hs3c/SckeGIk3r
35
+ uQ8ts8x2DfuJYY/PmLbqwXkzMzb1EgnUBWZ3mZCdlL0UBst5ypPAFTn1b2qRUC92
36
+ UtKkOrrEmCXrBnFtpv6a1ULk
37
37
  -----END CERTIFICATE-----
38
- date: 2021-01-18 00:00:00.000000000 Z
38
+ date: 2022-01-15 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rack
@@ -181,24 +181,44 @@ dependencies:
181
181
  name: polyrex-links
182
182
  requirement: !ruby/object:Gem::Requirement
183
183
  requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '0.4'
184
187
  - - ">="
185
188
  - !ruby/object:Gem::Version
186
- version: 0.3.0
189
+ version: 0.4.3
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
187
194
  - - "~>"
188
195
  - !ruby/object:Gem::Version
189
- version: '0.3'
196
+ version: '0.4'
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: 0.4.3
200
+ - !ruby/object:Gem::Dependency
201
+ name: nthrut
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: 0.1.0
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '0.1'
190
210
  type: :runtime
191
211
  prerelease: false
192
212
  version_requirements: !ruby/object:Gem::Requirement
193
213
  requirements:
194
214
  - - ">="
195
215
  - !ruby/object:Gem::Version
196
- version: 0.3.0
216
+ version: 0.1.0
197
217
  - - "~>"
198
218
  - !ruby/object:Gem::Version
199
- version: '0.3'
219
+ version: '0.1'
200
220
  description:
201
- email: james@jamesrobertson.eu
221
+ email: digital.robertson@gmail.com
202
222
  executables: []
203
223
  extensions: []
204
224
  extra_rdoc_files: []
metadata.gz.sig CHANGED
Binary file