Graceful failure plus go fmt

If the db file isn't there, or it's corrupt, allow for the creation of an empty
slice of Creds.
This commit is contained in:
Stephen McQuay 2013-01-06 22:20:48 -08:00
parent 56bc88847f
commit bb12b12ebf

37
main.go
View File

@ -3,11 +3,11 @@ package main
import ( import (
"encoding/json" "encoding/json"
"flag" "flag"
"io/ioutil"
"log" "log"
"net/http" "net/http"
"sync" "sync"
"text/template" "text/template"
"io/ioutil"
) )
type Cred struct { type Cred struct {
@ -36,26 +36,31 @@ func passHandler(resp http.ResponseWriter, req *http.Request) {
defer m.Unlock() defer m.Unlock()
creds = append(creds, c) creds = append(creds, c)
b, err := json.Marshal(creds) b, err := json.Marshal(creds)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
err = ioutil.WriteFile(*db_file, b, 0644) err = ioutil.WriteFile(*db_file, b, 0644)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
http.Redirect(resp, req, "/", http.StatusTemporaryRedirect) http.Redirect(resp, req, "/", http.StatusTemporaryRedirect)
} }
func init_db() {
b, err := ioutil.ReadFile(*db_file)
if err != nil {
log.Println("Problem opening db file", err)
}
err = json.Unmarshal(b, &creds)
if err != nil {
log.Println("Problem parsing db file", err)
creds = make([]Cred, 0)
}
}
func main() { func main() {
flag.Parse() flag.Parse()
b, err := ioutil.ReadFile(*db_file) init_db()
if err != nil {
log.Fatal("Problem opening db file", err)
}
err = json.Unmarshal(b, &creds)
if err != nil {
log.Fatal("Problem parsing db file", err)
}
http.HandleFunc("/", homeHandler) http.HandleFunc("/", homeHandler)
http.HandleFunc("/pass", passHandler) http.HandleFunc("/pass", passHandler)
http.Handle("/s/", http.StripPrefix("/s/", http.Handle("/s/", http.StripPrefix("/s/",