capsium 0.1.1 → 0.1.2
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
- data/.github/workflows/rake.yml +1 -4
- data/.github/workflows/release.yml +1 -2
- data/.rubocop.yml +10 -6
- data/Gemfile +0 -6
- data/capsium.gemspec +9 -8
- data/lib/capsium/cli.rb +29 -10
- data/lib/capsium/converters/jekyll.rb +63 -30
- data/lib/capsium/package/dataset.rb +35 -48
- data/lib/capsium/package/dataset_config.rb +28 -0
- data/lib/capsium/package/manifest.rb +21 -41
- data/lib/capsium/package/manifest_config.rb +19 -0
- data/lib/capsium/package/metadata.rb +13 -27
- data/lib/capsium/package/metadata_config.rb +17 -0
- data/lib/capsium/package/routes.rb +39 -97
- data/lib/capsium/package/routes_config.rb +74 -0
- data/lib/capsium/package/storage.rb +47 -22
- data/lib/capsium/package/storage_config.rb +9 -0
- data/lib/capsium/package.rb +18 -6
- data/lib/capsium/packager.rb +25 -63
- data/lib/capsium/protector.rb +15 -7
- data/lib/capsium/reactor.rb +52 -28
- data/lib/capsium/version.rb +1 -1
- metadata +73 -25
- data/images/005df7415a331c466ad2d9a42efdd212b6f42fe50b5fd3b3174c86c706f58244.png +0 -0
- data/images/0374025b3af99b8a473282c8cbbf9fcd29573cf41e586982f328f86c0690f43d.png +0 -0
- data/images/0bb4da785be40ef58e219470ebccb979325928b75453dc46bac23c6ee8a7a7cb.png +0 -0
- data/images/6aa294dccc81af594aacbe804e7ddffdc17eacc28357338108aea5d021d831ff.png +0 -0
- data/images/72dd3fbf3f4b475e27a0e7fb8137c475c32c41f8d222bcf62d6a9ccf102d9532.png +0 -0
- data/images/8772b6961d169738d7b0fa0b669b06fc2f40632d4c62586c7634fc17b93182a3.png +0 -0
- data/images/a998d842405933d45723606ff3f70162ec95b4ef30db25464a366184fd08fb9b.png +0 -0
- data/images/aa8980547e8c003d33273ab4d80e62da7f317bd7581b293c06d67f5331f24f31.png +0 -0
- data/images/bb78a872b539e0e9b2d80dee58acbb688f3f2727b324a5bf8bf417a69d94a166.png +0 -0
- data/images/c48fc83b17725d85fbb64d971196ebfccd8c5c757fe6aa5845303f6e315879b6.png +0 -0
- data/images/f08ef07308d08119ac2124bb7428c8bef17ef1ca70045696604d6e83015a9b91.png +0 -0
- data/images/f7514206111b695647eae9adfcf498ba3e0ff83ecfe25f3fc3ed8e9f04c5c726-1.png +0 -0
- data/images/f7514206111b695647eae9adfcf498ba3e0ff83ecfe25f3fc3ed8e9f04c5c726.png +0 -0
data/lib/capsium/reactor.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# lib/capsium/reactor.rb
|
4
3
|
require "webrick"
|
5
4
|
require "json"
|
6
5
|
require "listen"
|
@@ -9,14 +8,16 @@ require "capsium/package"
|
|
9
8
|
module Capsium
|
10
9
|
class Reactor
|
11
10
|
DEFAULT_PORT = 8864
|
12
|
-
attr_accessor :package, :package_path, :routes, :port, :server, :server_thread
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
attr_accessor :package, :package_path, :routes, :port, :server,
|
13
|
+
:server_thread
|
14
|
+
|
15
|
+
def initialize(package:, port: DEFAULT_PORT, do_not_listen: false)
|
16
|
+
@package = package.is_a?(String) ? Package.new(package) : package
|
17
|
+
@package_path = @package.path
|
17
18
|
@port = port
|
18
|
-
|
19
|
-
|
19
|
+
setup_server(do_not_listen)
|
20
|
+
@routes = @package.routes
|
20
21
|
mount_routes
|
21
22
|
end
|
22
23
|
|
@@ -25,45 +26,65 @@ module Capsium
|
|
25
26
|
start_listener
|
26
27
|
end
|
27
28
|
|
29
|
+
def handle_request(request, response)
|
30
|
+
route = @routes.resolve(request.path)
|
31
|
+
if route
|
32
|
+
target = route.target
|
33
|
+
content_path = target.fs_path(@package.manifest)
|
34
|
+
if File.exist?(content_path)
|
35
|
+
response.status = 200
|
36
|
+
response["Content-Type"] = target.mime(@package.manifest)
|
37
|
+
response.body = File.read(content_path)
|
38
|
+
else
|
39
|
+
response.status = 404
|
40
|
+
response["Content-Type"] = "text/plain"
|
41
|
+
response.body = "Not Found"
|
42
|
+
end
|
43
|
+
else
|
44
|
+
response.status = 404
|
45
|
+
response["Content-Type"] = "text/plain"
|
46
|
+
response.body = "Not Found"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
28
50
|
private
|
29
51
|
|
30
|
-
def
|
31
|
-
|
52
|
+
def setup_server(do_not_listen)
|
53
|
+
server_options = { Port: @port }
|
54
|
+
server_options[:DoNotListen] = true if do_not_listen
|
55
|
+
@server = WEBrick::HTTPServer.new(server_options)
|
32
56
|
end
|
33
57
|
|
34
58
|
def mount_routes
|
35
|
-
@routes.each do |route|
|
59
|
+
@routes.config.routes.each do |route|
|
36
60
|
path = route.path
|
37
|
-
|
38
|
-
|
39
|
-
puts "mounting route: #{path} => #{content_path}"
|
40
|
-
@server.mount_proc(path.to_s) do |_req, res|
|
41
|
-
res.body = File.read(content_path)
|
42
|
-
res.content_type = target.mime(@package.manifest)
|
61
|
+
@server.mount_proc(path.to_s) do |req, res|
|
62
|
+
handle_request(req, res)
|
43
63
|
end
|
44
64
|
end
|
45
65
|
end
|
46
66
|
|
47
67
|
def start_server
|
48
|
-
|
49
|
-
trap("INT")
|
50
|
-
puts "\nShutting down server..."
|
51
|
-
@server.shutdown
|
52
|
-
exit
|
53
|
-
end
|
54
|
-
|
68
|
+
Thread.new do
|
69
|
+
trap("INT") { shutdown_server }
|
55
70
|
puts "Starting server on http://localhost:#{@port}"
|
56
71
|
@server.start
|
57
72
|
end
|
58
73
|
end
|
59
74
|
|
75
|
+
def shutdown_server
|
76
|
+
puts "\nShutting down server..."
|
77
|
+
@server.shutdown
|
78
|
+
exit
|
79
|
+
end
|
80
|
+
|
60
81
|
def restart_server
|
61
82
|
@server.shutdown
|
62
|
-
|
83
|
+
@server_thread&.join
|
63
84
|
load_package
|
64
|
-
|
85
|
+
setup_server(false)
|
65
86
|
mount_routes
|
66
|
-
start_server
|
87
|
+
@server_thread = start_server
|
67
88
|
end
|
68
89
|
|
69
90
|
def start_listener
|
@@ -74,9 +95,12 @@ module Capsium
|
|
74
95
|
|
75
96
|
listener.start
|
76
97
|
puts "Listening for changes in #{@package_path}..."
|
77
|
-
|
78
|
-
# Wait for the server thread to finish
|
79
98
|
@server_thread.join
|
80
99
|
end
|
100
|
+
|
101
|
+
def load_package
|
102
|
+
@package = Package.new(@package_path)
|
103
|
+
@routes = @package.routes
|
104
|
+
end
|
81
105
|
end
|
82
106
|
end
|
data/lib/capsium/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capsium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cssminify
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: jekyll
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: json
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: json-schema
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: listen
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -224,16 +252,30 @@ dependencies:
|
|
224
252
|
name: pry
|
225
253
|
requirement: !ruby/object:Gem::Requirement
|
226
254
|
requirements:
|
227
|
-
- - "
|
255
|
+
- - ">="
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
228
263
|
- !ruby/object:Gem::Version
|
229
|
-
version: 0
|
264
|
+
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: rack-test
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
230
272
|
type: :development
|
231
273
|
prerelease: false
|
232
274
|
version_requirements: !ruby/object:Gem::Requirement
|
233
275
|
requirements:
|
234
|
-
- - "
|
276
|
+
- - ">="
|
235
277
|
- !ruby/object:Gem::Version
|
236
|
-
version: 0
|
278
|
+
version: '0'
|
237
279
|
- !ruby/object:Gem::Dependency
|
238
280
|
name: rake
|
239
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -276,9 +318,23 @@ dependencies:
|
|
276
318
|
- - "~>"
|
277
319
|
- !ruby/object:Gem::Version
|
278
320
|
version: '1.58'
|
321
|
+
- !ruby/object:Gem::Dependency
|
322
|
+
name: rubocop-performance
|
323
|
+
requirement: !ruby/object:Gem::Requirement
|
324
|
+
requirements:
|
325
|
+
- - ">="
|
326
|
+
- !ruby/object:Gem::Version
|
327
|
+
version: '0'
|
328
|
+
type: :development
|
329
|
+
prerelease: false
|
330
|
+
version_requirements: !ruby/object:Gem::Requirement
|
331
|
+
requirements:
|
332
|
+
- - ">="
|
333
|
+
- !ruby/object:Gem::Version
|
334
|
+
version: '0'
|
279
335
|
description: Capsium
|
280
336
|
email:
|
281
|
-
- open.source@ribose.com
|
337
|
+
- open.source@ribose.com
|
282
338
|
executables:
|
283
339
|
- capsium
|
284
340
|
extensions: []
|
@@ -297,41 +353,33 @@ files:
|
|
297
353
|
- bin/setup
|
298
354
|
- capsium.gemspec
|
299
355
|
- exe/capsium
|
300
|
-
- images/005df7415a331c466ad2d9a42efdd212b6f42fe50b5fd3b3174c86c706f58244.png
|
301
|
-
- images/0374025b3af99b8a473282c8cbbf9fcd29573cf41e586982f328f86c0690f43d.png
|
302
|
-
- images/0bb4da785be40ef58e219470ebccb979325928b75453dc46bac23c6ee8a7a7cb.png
|
303
|
-
- images/6aa294dccc81af594aacbe804e7ddffdc17eacc28357338108aea5d021d831ff.png
|
304
|
-
- images/72dd3fbf3f4b475e27a0e7fb8137c475c32c41f8d222bcf62d6a9ccf102d9532.png
|
305
|
-
- images/8772b6961d169738d7b0fa0b669b06fc2f40632d4c62586c7634fc17b93182a3.png
|
306
|
-
- images/a998d842405933d45723606ff3f70162ec95b4ef30db25464a366184fd08fb9b.png
|
307
|
-
- images/aa8980547e8c003d33273ab4d80e62da7f317bd7581b293c06d67f5331f24f31.png
|
308
|
-
- images/bb78a872b539e0e9b2d80dee58acbb688f3f2727b324a5bf8bf417a69d94a166.png
|
309
|
-
- images/c48fc83b17725d85fbb64d971196ebfccd8c5c757fe6aa5845303f6e315879b6.png
|
310
|
-
- images/f08ef07308d08119ac2124bb7428c8bef17ef1ca70045696604d6e83015a9b91.png
|
311
|
-
- images/f7514206111b695647eae9adfcf498ba3e0ff83ecfe25f3fc3ed8e9f04c5c726-1.png
|
312
|
-
- images/f7514206111b695647eae9adfcf498ba3e0ff83ecfe25f3fc3ed8e9f04c5c726.png
|
313
356
|
- lib/capsium.rb
|
314
357
|
- lib/capsium/cli.rb
|
315
358
|
- lib/capsium/converters/jekyll.rb
|
316
359
|
- lib/capsium/package.rb
|
317
360
|
- lib/capsium/package/dataset.rb
|
361
|
+
- lib/capsium/package/dataset_config.rb
|
318
362
|
- lib/capsium/package/manifest.rb
|
363
|
+
- lib/capsium/package/manifest_config.rb
|
319
364
|
- lib/capsium/package/metadata.rb
|
365
|
+
- lib/capsium/package/metadata_config.rb
|
320
366
|
- lib/capsium/package/routes.rb
|
367
|
+
- lib/capsium/package/routes_config.rb
|
321
368
|
- lib/capsium/package/storage.rb
|
369
|
+
- lib/capsium/package/storage_config.rb
|
322
370
|
- lib/capsium/packager.rb
|
323
371
|
- lib/capsium/protector.rb
|
324
372
|
- lib/capsium/reactor.rb
|
325
373
|
- lib/capsium/thor_ext.rb
|
326
374
|
- lib/capsium/version.rb
|
327
375
|
- sig/capsium.rbs
|
328
|
-
homepage: https://github.com/
|
376
|
+
homepage: https://github.com/capsiums/capsium
|
329
377
|
licenses:
|
330
378
|
- MIT
|
331
379
|
metadata:
|
332
|
-
homepage_uri: https://github.com/
|
333
|
-
source_code_uri: https://github.com/
|
334
|
-
changelog_uri: https://github.com/
|
380
|
+
homepage_uri: https://github.com/capsiums/capsium
|
381
|
+
source_code_uri: https://github.com/capsiums/capsium
|
382
|
+
changelog_uri: https://github.com/capsiums/capsium/releases
|
335
383
|
post_install_message:
|
336
384
|
rdoc_options: []
|
337
385
|
require_paths:
|
@@ -347,7 +395,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
347
395
|
- !ruby/object:Gem::Version
|
348
396
|
version: '0'
|
349
397
|
requirements: []
|
350
|
-
rubygems_version: 3.
|
398
|
+
rubygems_version: 3.5.11
|
351
399
|
signing_key:
|
352
400
|
specification_version: 4
|
353
401
|
summary: Capsium
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|