! 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" "burger" "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 ; : ( -- action ) [ validate-theme ] >>init { bbb "themes" } >>template ; : ( -- action ) [ "bonerbonerboner" ] >>display ; : ( -- responder ) bbb new-dispatcher "heartbeat" add-responder "slack-events" add-responder "subdomain" add-responder ; : add-default-slack-listeners ( -- ) { [ check-mississippi-request ] [ check-platz ] [ check-links ] } slack-callbacks set-global ; SYMBOL: current-bbb-server : ( -- threaded-server ) f >>secure 8069 >>insecure ; : start-bbb-site ( -- ) add-default-slack-listeners main-responder set-global start-server wait-for-server ; MAIN: start-bbb-site