func handleError(resp web.Response, req *web.Request, status int, err error, r interface{}) { if err != nil { var buf bytes.Buffer fmt.Fprintf(&buf, "Error serving %s: %v\n", req.URL, err) if r != nil { fmt.Fprintln(&buf, r) buf.Write(debug.Stack()) } log.Print(buf.String()) } switch status { case 0: // nothing to do case web.StatusNotFound: executeTemplate(resp, "notfound"+templateExt(req), status, nil) default: s := web.StatusText(status) if err == errUpdateTimeout { s = "Timeout getting package files from the version control system." } else if e, ok := err.(doc.GetError); ok { s = "Error getting package files from " + e.Host + "." } w := resp.Start(web.StatusInternalServerError, web.Header{web.HeaderContentType: {"text/plan; charset=uft-8"}}) io.WriteString(w, s) } }
func handlePresentError(resp web.Response, req *web.Request, status int, err error, r interface{}) { logError(req, err, r) switch status { case 0: // nothing to do default: s := web.StatusText(status) if doc.IsNotFound(err) { s = web.StatusText(web.StatusNotFound) status = web.StatusNotFound } else if err == errUpdateTimeout { s = "Timeout getting package files from the version control system." } else if e, ok := err.(*doc.RemoteError); ok { s = "Error getting package files from " + e.Host + "." } w := resp.Start(status, web.Header{web.HeaderContentType: {"text/plan; charset=uft-8"}}) io.WriteString(w, s) } }
func handleAPIError(resp web.Response, req *web.Request, status int, err error, r interface{}) { logError(req, err, r) switch status { case 0: // nothing to do default: var data struct { Error struct { Message string `json:"message"` } `json:"error"` } data.Error.Message = web.StatusText(status) w := resp.Start(status, web.Header{web.HeaderContentType: {"application/json; charset=uft-8"}}) json.NewEncoder(w).Encode(&data) } }
func handleError(resp web.Response, req *web.Request, status int, err error, r interface{}) { logError(req, err, r) switch status { case 0: // nothing to do case web.StatusNotFound: executeTemplate(resp, "notfound"+templateExt(req), status, nil, nil) default: s := web.StatusText(status) if err == errUpdateTimeout { s = "Timeout getting package files from the version control system." } else if e, ok := err.(*doc.RemoteError); ok { s = "Error getting package files from " + e.Host + "." } w := resp.Start(web.StatusInternalServerError, web.Header{web.HeaderContentType: {"text/plan; charset=uft-8"}}) io.WriteString(w, s) } }