! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs db db.sqlite db.tuples furnace furnace.actions furnace.alloy furnace.auth furnace.auth.features.deactivate-user furnace.auth.features.edit-profile furnace.auth.features.recover-password furnace.auth.features.registration furnace.auth.login furnace.boilerplate furnace.redirection html.forms http.server http.server.dispatchers kernel namespaces site-watcher site-watcher.db site-watcher.private urls sequences validators webapps.site-watcher.common webapps.site-watcher.watching webapps.site-watcher.spidering webapps.utils ; IN: webapps.site-watcher : ( -- action ) { site-watcher-app "main" } >>template ; : ( -- action ) [ username f select-tuple from-object ] >>init { site-watcher-app "update-notify" } >>template [ { { "email" [ [ v-email ] v-optional ] } { "twitter" [ [ v-one-word ] v-optional ] } { "sms" [ [ v-one-line ] v-optional ] } } validate-params ] >>validate [ username f select-tuple "email" value >>email "twitter" value >>twitter "sms" value >>sms update-tuple f ] >>submit "update notification details" >>description ; : ( -- dispatcher ) site-watcher-app new-dispatcher "" add-responder "watch-list" add-responder "add-watch" add-responder "remove-watch" add-responder "check" add-responder "spider-list" add-responder "add-spider" add-responder "remove-spider" add-responder "spider" add-responder "update-notify" add-responder ; : ( responder -- responder' ) "SiteWatcher" allow-registration allow-password-recovery allow-edit-profile allow-deactivation ; : site-watcher-db ( -- db ) "test.db" ; : ( -- dispatcher ) { site-watcher-app "site-watcher" } >>template site-watcher-db ; M: site-watcher-app init-user-profile drop "username" value "email" value insert-tuple ; : init-db ( -- ) site-watcher-db [ { site account watching-site spidering-site } [ ensure-table ] each ] with-db ; : start-site-watcher ( -- ) init-db site-watcher-db run-site-watcher main-responder set-global run-test-httpd ;