ustj/web/router.hoon
2024-06-01 15:45:45 +07:00

90 lines
2.6 KiB
Plaintext

/- sur=forum, tp=post
/+ lib=forum, sr=sortug
/+ server
::
/= layout /web/layout
/= index /web/pages/index
/= thread /web/pages/thread
:: /* sw %noun /web/sw/js
:: /* manifest %noun /web/manifest/json
:: assets
/* css %css /web/assets/style/css
/* spinner %noun /web/assets/spinner/svg
/* favicon %noun /web/assets/favicon/ico
/* favicon1 %noun /web/assets/favicon-32x32/png
/* favicon2 %noun /web/assets/favicon-16x16/png
|%
+$ order [id=@ta req=inbound-request:eyre]
++ pbail
%- html-response:gen:server
%- manx-to-octs:server
manx-bail
++ manx-bail ^- manx ;div:"404"
++ route
|= [=order =state:sur =bowl:gall] ^- (list card:agent:gall)
=/ rl (parse-request-line:server url.request.req.order)
=. site.rl ?~ site.rl ~ t.site.rl
=/ met method.request.req.order
=/ fpath=(pole knot) [met site.rl]
~& > rl=fpath
=/ bail %+ give-simple-payload:app:server id.order pbail
|^
:: if file extension assume its asset
?. ?=(~ ext.rl) (serve-assets rl)
?+ fpath bail
[%'GET' rest=*] (serve-get rl(site rest.fpath))
[%'POST' rest=*] (serve-post rl(site rest.fpath))
==
::
++ serve-assets
|= rl=request-line:server
~& >> assets=rl
=/ pl
?+ [site ext]:rl pbail
[[%style ~] [~ %css]] (css-response:gen:server (as-octs:mimes:html css))
:: [[%spinner ~] [~ %svg]] [%full (serve-other:kaji %svg spinner)]
:: [[%sw ~] [~ %js]] [%mime /text/javascript sw]
:: [[%manifest ~] [~ %json]] [%mime /application/json manifest]
==
(give-simple-payload:app:server id.order pl)
++ serve-get
|= rl=request-line:server
=/ pl %- html-response:gen:server %- manx-to-octs:server
^- manx
=/ p=(pole knot) site.rl ::?. mob.rl pat.rl [%m pat.rl]
?: ?=([%f rest=*] p) (fragment rest.p)
%- layout ^- marl :_ ~
?+ p manx-bail
~ (serve-index '1')
[%p p=@t ~] (serve-index p.p)
[%ted ted=@t ~] (serve-thread ted.p)
==
(give-simple-payload:app:server id.order pl)
++ serve-index |= t=@t ^- manx
=/ pag (slaw %ud t) ?~ pag manx-bail
=/ threads (get-thread-page:lib u.pag state)
(index [u.pag threads] bowl)
++ serve-thread |= uidt=@t ^- manx
=/ uid (slaw:sr %uw uidt) ?~ uid manx-bail
=/ cued (cue u.uid)
=/ pid %- (soft pid:tp) cued
?~ pid manx-bail
=/ ted (get-thread:lib u.pid state)
?~ ted manx-bail
(thread u.ted bowl)
++ fragment
|= p=(pole knot)
?+ p manx-bail
~ manx-bail
==
++ serve-post
|= rl=request-line:server ~
--
--