factor-work/bonerbonerboner/bonerbonerboner.factor

50 lines
1.3 KiB
Factor
Raw Normal View History

2021-04-04 11:10:32 -04:00
! Copyright (C) 2020 .
! See http://factorcode.org/license.txt for BSD license.
2021-04-11 23:04:12 -04:00
USING: kernel http.server http.server.responses http.server.dispatchers furnace.actions html.forms accessors namespaces io.servers io.sockets.secure.debug sequences validators ;
2021-04-04 11:10:32 -04:00
USING: bonerbonerboner.services ;
2021-04-11 23:04:12 -04:00
USING: prettyprint ;
2021-04-04 11:10:32 -04:00
IN: bonerbonerboner
TUPLE: bbb < dispatcher ;
2021-04-11 23:04:12 -04:00
: bbb-themes ( -- themes )
{ "bbb" "rocket" "hockey" } ;
: v-valid-theme ( str -- theme )
dup bbb-themes member? [ "not a valid theme" throw ] unless ;
: validate-theme ( -- )
{
{ "theme" [ v-required v-valid-theme ] }
} validate-params ;
2021-04-04 11:10:32 -04:00
: <theme-action> ( -- action )
2021-04-11 23:04:12 -04:00
<page-action>
2021-04-04 11:10:32 -04:00
2021-04-11 23:04:12 -04:00
[
validate-theme
] >>init
2021-04-04 11:10:32 -04:00
2021-04-11 23:04:12 -04:00
{ bbb "templates/themes" } >>template ;
2021-04-04 11:10:32 -04:00
2021-04-11 23:04:12 -04:00
: <heartbeat-action> ( -- action )
<action> [ "bonerbonerboner" <text-content> ] >>display ;
2021-04-04 11:10:32 -04:00
: <bbb> ( -- responder )
bbb new-dispatcher
2021-04-11 23:04:12 -04:00
<heartbeat-action> "heartbeat" add-responder
<slack-event-action> "slack-events" add-responder
<theme-action> "subdomain" add-responder ;
2021-04-04 11:10:32 -04:00
2021-04-11 23:04:12 -04:00
SYMBOL: current-bbb-server
: run-bbb-server ( -- )
2021-04-04 11:10:32 -04:00
<bbb> main-responder set-global
2021-04-11 23:04:12 -04:00
8080 httpd current-bbb-server set ;
: restart-bbb-server ( -- )
current-bbb-server get stop-server
run-bbb-server ;