diff src/getexr/getexr.go @ 13:4fb189ae0a46

getexr: version up.
author pyon@macmini
date Wed, 03 Jan 2018 08:10:34 +0900
parents aea69f84ed33
children 001e2aa380ad
line wrap: on
line diff
--- a/src/getexr/getexr.go	Sun Nov 12 20:10:26 2017 +0900
+++ b/src/getexr/getexr.go	Wed Jan 03 08:10:34 2018 +0900
@@ -16,12 +16,13 @@
     "golang.org/x/net/html"
 )
 
-var ver = "0.1"
+var ver = "0.1.1"
 
 func main() {
 
     version := flag.Bool( "v", false, "print version" )
-    file := flag.String( "f", "usd.dat", "print version" )
+    verbose := flag.Bool( "V", false, "verbose" )
+    file := flag.String( "f", "usd.dat", "data file" )
     flag.Parse()
 
     if ( *version ) {
@@ -30,11 +31,13 @@
     }
 
     // Get USD Rate
+    PrintVerbose( *verbose, "> get rate from yahoo..." )
     url := "http://finance.yahoo.co.jp/"
     resp, err := http.Get( url )
     if err != nil {
         log.Fatal( err )
     }
+    PrintVerbose( *verbose, "done\n" )
 
     z := html.NewTokenizer( resp.Body )
     usd, err := ParseHtml( z )
@@ -53,12 +56,8 @@
     buf2 := strings.Split( buf1[ len( buf1 ) - 2 ], "," )
     usd0, _ := strconv.ParseFloat( buf2[1], 32 )
 
-    alart := false
     if ( math.Abs( usd0 - usd ) > 1.0 ) {
-        alart = true
-    }
-
-    if ( alart ) {
+        PrintVerbose( *verbose, "> rate changed.\n" )
         t := time.Now()
         now := t.Format( "2006-01-02 15:04:05" )
 
@@ -72,15 +71,16 @@
         }
 
         // Post E-mail
-        err = SendMail( now, usd, "muty@willcom.com" )
+        PrintVerbose( *verbose, "> sending mail.\n" )
+        err = SendMail( now, usd, buf2[0], usd0 )
         if err != nil {
             log.Fatal( err )
         }
-        err = SendMail( now, usd, "pyon4pyon@yahoo.co.jp" )
-        if err != nil {
-            log.Fatal( err )
-        }
+    } else {
+        PrintVerbose( *verbose, "> no change.\n" )
     }
+
+    PrintVerbose( *verbose, "> finish.\n" )
 }
 
 func ParseHtml( z *html.Tokenizer ) ( float64, error ) {
@@ -102,14 +102,19 @@
     }
 }
 
-func SendMail( now string, usd float64, addr string ) error {
+func SendMail( now string, usd float64, old string, usd0 float64 ) error {
+    address := "muty@willcom.com"
     hostname := "sdm.sakura.ne.jp"
     auth := smtp.PlainAuth( "", "bad_user@sdm.sakura.ne.jp", "hogehoge3", hostname )
-    to := []string{ addr }
-    msg := []byte( "To: " + addr + "\r\n" +
+    to := []string{ address }
+    msg := []byte( "To: " + address + "\r\n" +
                 "Subject: Exchange-Mail\r\n" +
                 "\r\n" +
-                now + fmt.Sprintf( "\r\nrate changed\r\n[ USD/JPY : %.2f ].", usd ) + "\r\n" ) // mail body
+                "rate changed\r\n" +
+                now + "\r\n" +
+                fmt.Sprintf( "[ USD/JPY : %.2f ].", usd ) + "\r\n\r\n" +
+                old + "\r\n" +
+                fmt.Sprintf( "[ USD/JPY : %.2f ].", usd0 ) + "\r\n" ) // mail body
     err := smtp.SendMail( hostname + ":587", auth, "bad_user@sdm.sakura.ne.jp", to, msg )
     if err != nil {
         return err
@@ -117,3 +122,9 @@
     return nil
 }
 
+func PrintVerbose( y bool, msg string ) {
+    if y {
+        fmt.Fprintf( os.Stderr, msg )
+    }
+}
+