]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/site-watcher/site-watcher.factor
factor: trim using lists
[factor.git] / extra / site-watcher / site-watcher.factor
index 29a66afb13465426b9e082cae88915accabe84ee..16deccc8ee2ae88fa3623eca91024dbd5a85120b 100644 (file)
@@ -1,19 +1,15 @@
 ! Copyright (C) 2009 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alarms arrays calendar combinators
-combinators.smart continuations debugger http.client
-init io.streams.string kernel locals math math.parser
-namespaces sequences site-watcher.db site-watcher.db.private smtp ;
+USING: accessors calendar continuations db http.client init
+kernel math math.parser namespaces sequences site-watcher.db
+site-watcher.email timers ;
 IN: site-watcher
 
-SYMBOL: site-watcher-from
-"factor-site-watcher@gmail.com" site-watcher-from set-global
-
 SYMBOL: site-watcher-frequency
-10 seconds site-watcher-frequency set-global
+5 minutes site-watcher-frequency set-global
+
 SYMBOL: running-site-watcher
-[ f running-site-watcher set-global ] "site-watcher" add-init-hook
+[ f running-site-watcher set-global ] "site-watcher" add-startup-hook
 
 <PRIVATE
 
@@ -22,36 +18,33 @@ SYMBOL: running-site-watcher
         [ dup url>> http-get 2drop site-good ] [ site-bad ] recover
     ] each ;
 
-: site-up-email ( email site -- email )
+: site-up-email ( site -- body )
     last-up>> now swap time- duration>minutes 60 /mod
     [ >integer number>string ] bi@
     [ " hours, " append ] [ " minutes" append ] bi* append
-    "Site was down for (at least): " prepend >>body ;
+    "Site was down for (at least): " prepend ;
 
-: site-down-email ( email site -- email ) error>> >>body ;
+: site-down-email ( site -- body ) error>> ;
 
 : send-report ( site -- )
-    [ <email> ] dip
-    {
-        [ email>> 1array >>to ]
-        [ drop site-watcher-from get "factor.site.watcher@gmail.com" or >>from ]
-        [ dup up?>> [ site-up-email ] [ site-down-email ] if ]
-        [ [ url>> ] [ up?>> "up" "down" ? ] bi " is " glue >>subject ]
-    } cleave send-email ;
+    [ ]
+    [ dup up?>> [ site-up-email ] [ site-down-email ] if ]
+    [ [ url>> ] [ up?>> "up" "down" ? ] bi " is " glue ] tri
+    send-site-email ;
 
 : send-reports ( seq -- )
-    [ ] [ [ send-report ] each ] if-empty ;
+    [ [ send-report ] each ] unless-empty ;
 
 PRIVATE>
 
 : watch-sites ( -- )
     find-sites check-sites sites-to-report send-reports ;
 
-: run-site-watcher ( -- )
-    running-site-watcher get [ 
-        [ watch-sites ] site-watcher-frequency get every
-        running-site-watcher set-global 
+: run-site-watcher ( db -- )
+    [ running-site-watcher get ] dip '[
+        [ _ [ watch-sites ] with-db ] site-watcher-frequency get every
+        running-site-watcher set
     ] unless ;
 
 : stop-site-watcher ( -- )
-    running-site-watcher get [ cancel-alarm ] when* ;
+    running-site-watcher get [ stop-timer ] when* ;