capsium 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|