factor-work/bonerbonerboner/api/api.factor

60 lines
1.7 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-06-30 10:41:00 -04:00
USING: bonerbonerboner.services bonerbonerboner.services.slack bonerbonerboner.services.mississippis bonerbonerboner.services.platzisms bonerbonerboner.services.link-logger ;
2021-04-04 11:10:32 -04:00
2021-04-11 23:04:12 -04:00
USING: prettyprint ;
2022-01-23 13:00:58 -05:00
IN: bonerbonerboner.api
2021-04-04 11:10:32 -04:00
TUPLE: bbb < dispatcher ;
2021-04-11 23:04:12 -04:00
: bbb-themes ( -- themes )
2022-01-24 14:14:04 -05:00
{ "bbb" "bones" "float" "hockey" "rocket" "burger" "wakeywakey" } ;
2021-04-11 23:04:12 -04:00
: 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
2022-01-23 13:00:58 -05:00
[ validate-theme ] >>init
2021-04-04 11:10:32 -04:00
2022-01-23 13:00:58 -05:00
{ bbb "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-06-30 10:41:00 -04:00
: add-default-slack-listeners ( -- )
{
[ check-mississippi-request ]
[ check-platz ]
[ check-links ]
} slack-callbacks set-global ;
2021-07-01 15:00:42 -04:00
SYMBOL: current-bbb-server
: <bbb-website-server> ( -- threaded-server )
<http-server>
f >>secure
8069 >>insecure ;
: start-bbb-site ( -- )
2021-06-30 10:41:00 -04:00
add-default-slack-listeners
2021-07-01 15:00:42 -04:00
<bbb> main-responder set-global
<bbb-website-server> start-server wait-for-server ;
2021-06-30 10:41:00 -04:00
2021-07-01 15:00:42 -04:00
MAIN: start-bbb-site