MCPcopy
hub / github.com/writefreely/writefreely / handleHTTPError

Method handleHTTPError

handle.go:789–857  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request, err error)

Source from the content-addressed store, hash-verified

787}
788
789func (h *Handler) handleHTTPError(w http.ResponseWriter, r *http.Request, err error) {
790 if err == nil {
791 return
792 }
793
794 if err, ok := err.(impart.HTTPError); ok {
795 if err.Status >= 300 && err.Status < 400 {
796 sendRedirect(w, err.Status, err.Message)
797 return
798 } else if err.Status == http.StatusUnauthorized {
799 q := ""
800 if r.URL.RawQuery != "" {
801 q = url.QueryEscape("?" + r.URL.RawQuery)
802 }
803 sendRedirect(w, http.StatusFound, "/login?to="+r.URL.Path+q)
804 return
805 } else if err.Status == http.StatusGone {
806 w.WriteHeader(err.Status)
807 p := &struct {
808 page.StaticPage
809 Content *template.HTML
810 }{
811 StaticPage: pageForReq(h.app.App(), r),
812 }
813 if err.Message != "" {
814 co := template.HTML(err.Message)
815 p.Content = &co
816 }
817 h.errors.Gone.ExecuteTemplate(w, "base", p)
818 return
819 } else if err.Status == http.StatusNotFound {
820 w.WriteHeader(err.Status)
821 if IsActivityPubRequest(r) {
822 // This is a fediverse request; simply return the header
823 return
824 }
825 h.errors.NotFound.ExecuteTemplate(w, "base", pageForReq(h.app.App(), r))
826 return
827 } else if err.Status == http.StatusInternalServerError {
828 w.WriteHeader(err.Status)
829 log.Info("handleHTTPErorr internal error render")
830 h.errors.InternalServerError.ExecuteTemplate(w, "base", pageForReq(h.app.App(), r))
831 return
832 } else if err.Status == http.StatusServiceUnavailable {
833 w.WriteHeader(err.Status)
834 h.errors.UnavailableError.ExecuteTemplate(w, "base", pageForReq(h.app.App(), r))
835 return
836 } else if err.Status == http.StatusAccepted {
837 impart.WriteSuccess(w, "", err.Status)
838 return
839 } else {
840 p := &struct {
841 page.StaticPage
842 Title string
843 Content template.HTML
844 }{
845 pageForReq(h.app.App(), r),
846 fmt.Sprintf("Uh oh (%d)", err.Status),

Callers 9

UserMethod · 0.95
AdminMethod · 0.95
AdminApperMethod · 0.95
UserAllMethod · 0.95
WebErrorsMethod · 0.95
WebMethod · 0.95
DownloadMethod · 0.95
RedirectMethod · 0.95
LogHandlerFuncMethod · 0.95

Calls 4

sendRedirectFunction · 0.85
pageForReqFunction · 0.85
IsActivityPubRequestFunction · 0.85
AppMethod · 0.65

Tested by

no test coverage detected