60 lines
1.7 KiB
Factor
60 lines
1.7 KiB
Factor
! Copyright (C) 2020 .
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
USING: kernel http.server http.server.responses http.server.dispatchers furnace.actions html.forms accessors namespaces io.servers io.sockets.secure.debug sequences validators ;
|
|
USING: bonerbonerboner.services bonerbonerboner.services.slack bonerbonerboner.services.mississippis bonerbonerboner.services.platzisms bonerbonerboner.services.link-logger ;
|
|
|
|
USING: prettyprint ;
|
|
IN: bonerbonerboner.api
|
|
|
|
TUPLE: bbb < dispatcher ;
|
|
|
|
: bbb-themes ( -- themes )
|
|
{ "bbb" "bones" "float" "hockey" "rocket" "trump" "wakeywakey" } ;
|
|
|
|
: 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 ;
|
|
|
|
: <theme-action> ( -- action )
|
|
|
|
<page-action>
|
|
|
|
[ validate-theme ] >>init
|
|
|
|
{ bbb "themes" } >>template ;
|
|
|
|
: <heartbeat-action> ( -- action )
|
|
<action> [ "bonerbonerboner" <text-content> ] >>display ;
|
|
|
|
: <bbb> ( -- responder )
|
|
bbb new-dispatcher
|
|
<heartbeat-action> "heartbeat" add-responder
|
|
<slack-event-action> "slack-events" add-responder
|
|
<theme-action> "subdomain" add-responder ;
|
|
|
|
: add-default-slack-listeners ( -- )
|
|
{
|
|
[ check-mississippi-request ]
|
|
[ check-platz ]
|
|
[ check-links ]
|
|
} slack-callbacks set-global ;
|
|
|
|
SYMBOL: current-bbb-server
|
|
|
|
: <bbb-website-server> ( -- threaded-server )
|
|
<http-server>
|
|
f >>secure
|
|
8069 >>insecure ;
|
|
|
|
: start-bbb-site ( -- )
|
|
add-default-slack-listeners
|
|
<bbb> main-responder set-global
|
|
<bbb-website-server> start-server wait-for-server ;
|
|
|
|
MAIN: start-bbb-site
|