Class: Jetski::Router
- Inherits:
-
Object
show all
- Includes:
- Parser
- Defined in:
- lib/jetski/router.rb,
lib/jetski/router/parser.rb,
lib/jetski/router/host/base.rb,
lib/jetski/router/host/crud.rb,
lib/jetski/router/host/controller.rb,
lib/jetski/router/file_path_helper.rb
Defined Under Namespace
Modules: FilePathHelper, Host, Parser
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Parser
#compile_routes
#controller_file_paths, #model_file_paths
Constructor Details
#initialize(server) ⇒ Router
Returns a new instance of Router.
5
6
7
8
|
# File 'lib/jetski/router.rb', line 5
def initialize(server)
@server = server
@crud_routes = []
end
|
Instance Attribute Details
#crud_routes ⇒ Object
Returns the value of attribute crud_routes.
4
5
6
|
# File 'lib/jetski/router.rb', line 4
def crud_routes
@crud_routes
end
|
#routes ⇒ Object
Returns the value of attribute routes.
4
5
6
|
# File 'lib/jetski/router.rb', line 4
def routes
@routes
end
|
#server ⇒ Object
Returns the value of attribute server.
4
5
6
|
# File 'lib/jetski/router.rb', line 4
def server
@server
end
|
Instance Method Details
#browser_support ⇒ Object
routes to help browser default requests etc. prevent breakage
88
89
90
91
92
|
# File 'lib/jetski/router.rb', line 88
def browser_support
server.mount_proc "/favicon.ico" do |req, res|
res.status = 204
end
end
|
#call ⇒ Object
10
11
12
13
14
15
16
|
# File 'lib/jetski/router.rb', line 10
def call
browser_support
fetch_routes
host_routes
host_crud_routes
host_assets
end
|
#host_assets ⇒ Object
37
38
39
|
# File 'lib/jetski/router.rb', line 37
def host_assets
host_css && host_images && host_javascript && host_javascript_helpers
end
|
#host_crud_routes ⇒ Object
30
31
32
33
34
35
|
# File 'lib/jetski/router.rb', line 30
def host_crud_routes
crud_routes_for_controller = crud_routes.group_by { |route| route[:controller_path] }
crud_routes_for_controller.each do |controller_path, controller_routes|
Host::Crud.new(server, controller_routes, **controller_routes.first).call
end
end
|
#host_css ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/jetski/router.rb', line 41
def host_css
css_files = Dir[File.join(Jetski.app_root,'app/assets/stylesheets/**/*.css')]
css_files.each do |file_path|
filename = file_path.split("app/assets/stylesheets/").last
asset_url = "/#{filename}"
server.mount_proc asset_url do |req, res|
res.content_type = "text/css"
res.body = File.read(File.join(Jetski.app_root,"app/assets/stylesheets/#{filename}"))
end
end
end
|
#host_images ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/jetski/router.rb', line 53
def host_images
file_ext_types = ["png", "jpg"]
image_files = Dir.glob(
file_ext_types.map { |ext| File.join(Jetski.app_root, "app/assets/images/*.#{ext}") }
)
image_files.each do |file_path|
filename = file_path.split("/").last
asset_url = "/#{filename}"
server.mount_proc asset_url do |req, res|
res.content_type = "image/*"
res.body = File.read(File.join(Jetski.app_root,"app/assets/images/#{filename}"))
end
end
end
|
#host_javascript ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/jetski/router.rb', line 68
def host_javascript
js_files = Dir[File.join(Jetski.app_root,'app/assets/javascript/**/*.js')]
js_files.each do |file_path|
filename = file_path.split("app/assets/javascript/").last
asset_url = "/#{filename}"
server.mount_proc asset_url do |req, res|
res.content_type = "text/javascript"
res.body = File.read(File.join(Jetski.app_root,"app/assets/javascript/#{filename}"))
end
end
end
|
#host_javascript_helpers ⇒ Object
80
81
82
83
84
85
|
# File 'lib/jetski/router.rb', line 80
def host_javascript_helpers
server.mount_proc "/reactive-form.js" do |req, res|
res.content_type = "text/javascript"
res.body = File.read(File.join(__dir__, 'frontend/javascript_helpers.js'))
end
end
|
#host_routes ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/jetski/router.rb', line 18
def host_routes
crud_actions = %w(new create show index edit update destroy)
routes.each do |af_route|
if crud_actions.include?(af_route[:action_name]) && (af_route[:url] != '/')
@crud_routes << af_route
next
end
Host::Controller.new(server, **af_route).call
end
end
|