Improve error handling
This commit is contained in:
parent
956a5dc355
commit
664c6fd4fa
|
@ -41,27 +41,30 @@ type GetSyncVerResp struct {
|
|||
Version string `json:"version"`
|
||||
}
|
||||
|
||||
func sendJSON(w http.ResponseWriter, status int, data interface{}) error {
|
||||
func sendJSON(w http.ResponseWriter, status int, data interface{}) {
|
||||
body, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
return err
|
||||
log.Printf("sendJSON(%v): json.Marshal() failed: %v", data, err)
|
||||
return
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(status)
|
||||
_, err = w.Write(body)
|
||||
return err
|
||||
if err != nil {
|
||||
log.Println("sendJSON() failed:", err)
|
||||
}
|
||||
}
|
||||
|
||||
func sendJSONOk(w http.ResponseWriter, data interface{}) error {
|
||||
return sendJSON(w, http.StatusOK, data)
|
||||
func sendJSONOk(w http.ResponseWriter, data interface{}) {
|
||||
sendJSON(w, http.StatusOK, data)
|
||||
}
|
||||
|
||||
func sendJSONError(w http.ResponseWriter, err error) error {
|
||||
func sendJSONError(w http.ResponseWriter, err error) {
|
||||
switch e := err.(type) {
|
||||
case syncstore.SyncError:
|
||||
return sendJSON(w, e.StatusCode, e.Payload)
|
||||
sendJSON(w, e.StatusCode, e.Payload)
|
||||
default:
|
||||
return sendJSON(w, http.StatusInternalServerError,
|
||||
sendJSON(w, http.StatusInternalServerError,
|
||||
syncstore.ErrorPayload{
|
||||
Code: "Internal server error",
|
||||
Message: e.Error()})
|
||||
|
@ -75,7 +78,7 @@ func info(w http.ResponseWriter, req *http.Request) {
|
|||
log.Println("info()")
|
||||
sendJSONOk(w, serviceInfoResp{
|
||||
Version: "1.1.13",
|
||||
Message: "Powered by browsersync",
|
||||
Message: "Powered by uBrowserSync",
|
||||
MaxSyncSize: 2 * 1024 * 1024,
|
||||
Status: 1})
|
||||
}
|
||||
|
@ -103,7 +106,7 @@ func createSync(w http.ResponseWriter, req *http.Request) {
|
|||
sendJSONOk(w, resp)
|
||||
}
|
||||
|
||||
func getSync(syncId string, w http.ResponseWriter, req *http.Request) {
|
||||
func getSync(syncId string, w http.ResponseWriter, _ *http.Request) {
|
||||
resp, err := store.Get(syncId)
|
||||
if err != nil {
|
||||
sendJSONError(w, err)
|
||||
|
@ -112,7 +115,7 @@ func getSync(syncId string, w http.ResponseWriter, req *http.Request) {
|
|||
sendJSONOk(w, resp)
|
||||
}
|
||||
|
||||
func getLastUpdated(syncId string, w http.ResponseWriter, req *http.Request) {
|
||||
func getLastUpdated(syncId string, w http.ResponseWriter, _ *http.Request) {
|
||||
resp, err := store.GetLastUpdated(syncId)
|
||||
if err != nil {
|
||||
sendJSONError(w, err)
|
||||
|
@ -121,7 +124,7 @@ func getLastUpdated(syncId string, w http.ResponseWriter, req *http.Request) {
|
|||
sendJSONOk(w, LastUpdatedResp{LastUpdated: resp})
|
||||
}
|
||||
|
||||
func getVersion(syncId string, w http.ResponseWriter, req *http.Request) {
|
||||
func getVersion(syncId string, w http.ResponseWriter, _ *http.Request) {
|
||||
resp, err := store.GetVersion(syncId)
|
||||
if err != nil {
|
||||
sendJSONError(w, err)
|
||||
|
@ -203,26 +206,26 @@ var listen string
|
|||
|
||||
func init() {
|
||||
var err error
|
||||
var storeflag string
|
||||
var storeFlag string
|
||||
var storeDrv syncstore.StoreDriver
|
||||
|
||||
flag.StringVar(&listen, "listen", ":8090", "listen address and port")
|
||||
flag.StringVar(&storeflag, "store", "fs:data", "blob store driver")
|
||||
flag.StringVar(&storeFlag, "store", "fs:data", "blob store driver")
|
||||
flag.Parse()
|
||||
|
||||
lstore := strings.Split(storeflag, ":")
|
||||
storeFlagTokens := strings.Split(storeFlag, ":")
|
||||
|
||||
switch lstore[0] {
|
||||
switch storeFlagTokens[0] {
|
||||
case "fs":
|
||||
if len(lstore) != 2 {
|
||||
if len(storeFlagTokens) != 2 {
|
||||
err = fmt.Errorf("argument required for fs store driver")
|
||||
} else {
|
||||
storeDrv, err = syncstore.NewFSStore(lstore[1])
|
||||
storeDrv, err = syncstore.NewFSStore(storeFlagTokens[1])
|
||||
}
|
||||
case "mem":
|
||||
storeDrv, err = syncstore.NewMemStore()
|
||||
default:
|
||||
err = fmt.Errorf("Invalid store driver: "+lstore[0])
|
||||
err = fmt.Errorf("Invalid store driver: "+ storeFlagTokens[0])
|
||||
}
|
||||
if err != nil {
|
||||
log.Fatalf("store initialization failed: %v", err)
|
||||
|
|
Loading…
Reference in New Issue