First cut of webapps.site-watcheR
parent
710ce74512
commit
dacf1910dc
|
@ -0,0 +1 @@
|
||||||
|
Slava Pestov
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version='1.0' ?>
|
||||||
|
|
||||||
|
<t:chloe xmlns:t="http://factorcode.org/chloe/1.0">
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>SiteWatcher</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>SiteWatcher</h1>
|
||||||
|
<h2>It tells you if your web site goes down.</h2>
|
||||||
|
<table>
|
||||||
|
<t:bind-each t:name="sites">
|
||||||
|
<tr>
|
||||||
|
<td> <t:label t:name="url" /> </td>
|
||||||
|
<td> <t:button t:action="$site-watcher-app/remove" t:for="url">Remove</t:button> </td>
|
||||||
|
</tr>
|
||||||
|
</t:bind-each>
|
||||||
|
</table>
|
||||||
|
<p>
|
||||||
|
<t:button t:action="$site-watcher-app/check">Check now</t:button>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<h3>Add a new site</h3>
|
||||||
|
<t:form t:action="$site-watcher-app/add">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>URL:</th>
|
||||||
|
<td> <t:field t:name="url" t:size="80" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>E-mail:</th>
|
||||||
|
<td> <t:field t:name="email" t:size="80" /> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p> <button type="submit">Done</button> </p>
|
||||||
|
</t:form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
</t:chloe>
|
|
@ -0,0 +1,54 @@
|
||||||
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: accessors furnace.actions furnace.alloy furnace.redirection
|
||||||
|
html.forms http.server http.server.dispatchers namespaces site-watcher
|
||||||
|
site-watcher.private kernel urls validators db.sqlite assocs ;
|
||||||
|
IN: webapps.site-watcher
|
||||||
|
|
||||||
|
TUPLE: site-watcher-app < dispatcher ;
|
||||||
|
|
||||||
|
CONSTANT: site-list-url URL" $site-watcher-app/"
|
||||||
|
|
||||||
|
: <site-list-action> ( -- action )
|
||||||
|
<page-action>
|
||||||
|
{ site-watcher-app "site-list" } >>template
|
||||||
|
[
|
||||||
|
begin-form
|
||||||
|
sites get values "sites" set-value
|
||||||
|
] >>init ;
|
||||||
|
|
||||||
|
: <add-site-action> ( -- action )
|
||||||
|
<action>
|
||||||
|
[
|
||||||
|
{ { "url" [ v-url ] } { "email" [ v-email ] } } validate-params
|
||||||
|
] >>validate
|
||||||
|
[
|
||||||
|
"email" value "url" value watch-site
|
||||||
|
site-list-url <redirect>
|
||||||
|
] >>submit ;
|
||||||
|
|
||||||
|
: <remove-site-action> ( -- action )
|
||||||
|
<action>
|
||||||
|
[
|
||||||
|
{ { "url" [ v-url ] } } validate-params
|
||||||
|
] >>validate
|
||||||
|
[
|
||||||
|
"url" value delete-site
|
||||||
|
site-list-url <redirect>
|
||||||
|
] >>submit ;
|
||||||
|
|
||||||
|
: <check-sites-action> ( -- action )
|
||||||
|
<action>
|
||||||
|
[
|
||||||
|
sites get [ check-sites ] [ report-sites ] bi
|
||||||
|
site-list-url <redirect>
|
||||||
|
] >>submit ;
|
||||||
|
|
||||||
|
: <site-watcher-app> ( -- dispatcher )
|
||||||
|
site-watcher-app new-dispatcher
|
||||||
|
<site-list-action> "" add-responder
|
||||||
|
<add-site-action> "add" add-responder
|
||||||
|
<remove-site-action> "remove" add-responder
|
||||||
|
<check-sites-action> "check" add-responder ;
|
||||||
|
|
||||||
|
<site-watcher-app> "resource:test.db" <sqlite-db> <alloy> main-responder set-global
|
Loading…
Reference in New Issue