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