From 5eb977545bd0bfaacf289952a8b7f5a273168ab6 Mon Sep 17 00:00:00 2001 From: Evan M Jones Date: Sat, 1 Aug 2020 21:33:00 -0700 Subject: [PATCH] Chore(Error2 -> Error): Swapped Error impl. for Error2 in all controllers. --- TODO | 4 +-- internal/c/c.go | 10 ++---- internal/c/c_test.go | 4 +-- internal/c/content/content.go | 52 +++++++++++++-------------- internal/c/contenttype/contenttype.go | 50 +++++++++++++------------- internal/c/file/file.go | 4 +-- internal/c/hook/hook.go | 16 ++++----- internal/c/invite/invite.go | 20 +++++------ internal/c/space/space.go | 30 ++++++++-------- internal/c/stripe/stripe.go | 2 +- internal/c/user/user.go | 30 ++++++++-------- 11 files changed, 108 insertions(+), 114 deletions(-) diff --git a/TODO b/TODO index d37bffd..edcd159 100644 --- a/TODO +++ b/TODO @@ -2,14 +2,12 @@ Testing: 100% happy path and 80% total Documentation Doc pages: Contact, FAQ, Terms, Privacy, Tour -Roll based access control Depth option on APIs When editing existing references don't blow away prev inputs Forgot password Warn & delete excess users/spaces on downgrade. -Cache: org?, invite?, hook +Cache: org?, invite?, role?, hook Admin: change role level of users. -Invite: specify role level. [med] Cache lists diff --git a/internal/c/c.go b/internal/c/c.go index 2776bb0..1d76064 100644 --- a/internal/c/c.go +++ b/internal/c/c.go @@ -120,11 +120,7 @@ func (c *Controller) ErrorString(w http.ResponseWriter, r *http.Request, code in fmt.Fprintf(w, str) } -func (c *Controller) Error(w http.ResponseWriter, r *http.Request, code int, str string) { - c.ErrorString(w, r, code, str) -} - -func (c *Controller) Error2(w http.ResponseWriter, r *http.Request, code int, err error) { +func (c *Controller) Error(w http.ResponseWriter, r *http.Request, code int, err error) { w.Header().Add("Content-Type", "text/plain") w.WriteHeader(code) fmt.Fprintf(w, err.Error()) @@ -153,7 +149,7 @@ func (c *Controller) HTML(w http.ResponseWriter, r *http.Request, tmpl *template if err := tmpl.Execute(&buf, data); err != nil { c.log.Println(err) - c.Error(w, r, http.StatusInternalServerError, "failed to build html response") + c.Error(w, r, http.StatusInternalServerError, errors.New("failed to build html response")) return } @@ -169,7 +165,7 @@ func (c *Controller) HTML(w http.ResponseWriter, r *http.Request, tmpl *template func (c *Controller) JSON(w http.ResponseWriter, r *http.Request, data interface{}) { bytes, err := json.Marshal(data) if err != nil { - c.Error(w, r, http.StatusInternalServerError, "failed to build json response") + c.Error(w, r, http.StatusInternalServerError, errors.New("failed to build json response")) return } diff --git a/internal/c/c_test.go b/internal/c/c_test.go index a392143..7e4e3df 100644 --- a/internal/c/c_test.go +++ b/internal/c/c_test.go @@ -285,10 +285,10 @@ func (s server5) ServeHTTP(w http.ResponseWriter, r *http.Request) { s.ErrorString(w, r, 500+s.typ, s.str) break case 2: - s.Error(w, r, 500+s.typ, s.str) + s.Error(w, r, 500+s.typ, errors.New(s.str)) break case 3: - s.Error2(w, r, 500+s.typ, errors.New(s.str)) + s.Error(w, r, 500+s.typ, errors.New(s.str)) break } } diff --git a/internal/c/content/content.go b/internal/c/content/content.go index 0d24484..4f8836b 100644 --- a/internal/c/content/content.go +++ b/internal/c/content/content.go @@ -2,7 +2,6 @@ package content import ( "context" - "errors" "fmt" "io" "log" @@ -20,6 +19,7 @@ import ( "git.sr.ht/~evanj/cms/internal/s/db" webhook "git.sr.ht/~evanj/cms/internal/s/hook" "git.sr.ht/~evanj/cms/internal/v" + "github.com/pkg/errors" ) var ( @@ -115,19 +115,19 @@ func (c *Content) create(w http.ResponseWriter, r *http.Request) { user, err := c.GetCookieUser(w, r) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } space, err := c.db.SpaceGet(user, spaceID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, ErrNoSpace) + c.Error(w, r, http.StatusBadRequest, errors.Wrap(err, ErrNoSpace.Error())) return } ct, err := c.db.ContentTypeGet(user, space, contenttypeID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, ErrNoCT) + c.Error(w, r, http.StatusBadRequest, errors.Wrap(err, ErrNoCT.Error())) return } @@ -139,7 +139,7 @@ func (c *Content) create(w http.ResponseWriter, r *http.Request) { parts := strings.Split(key, "-") if len(parts) < 2 { - c.Error(w, r, http.StatusInternalServerError, "invalid name field for value") + c.Error(w, r, http.StatusInternalServerError, errors.New("invalid name field for value")) return } @@ -161,19 +161,19 @@ func (c *Content) create(w http.ResponseWriter, r *http.Request) { for key := range r.MultipartForm.File { file, header, err := r.FormFile(key) if err != nil { - c.Error(w, r, http.StatusInternalServerError, "failed to retreive file") + c.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to retreive file: %w", err)) return } url, err := c.upload(r.Context(), header.Filename, file, user) if err != nil { - c.Error(w, r, http.StatusInternalServerError, "failed to upload file") + c.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to upload file: %w", err)) return } parts := strings.Split(key, "-") if len(parts) < 2 { - c.Error(w, r, http.StatusInternalServerError, "invalid name field for value") + c.Error(w, r, http.StatusInternalServerError, errors.New("invalid name field for value")) return } @@ -189,7 +189,7 @@ func (c *Content) create(w http.ResponseWriter, r *http.Request) { content, err := c.db.ContentNew(user, space, ct, params) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, err) + c.Error(w, r, http.StatusInternalServerError, err) return } @@ -213,25 +213,25 @@ func (c *Content) serve(w http.ResponseWriter, r *http.Request) { user, err := c.GetCookieUser(w, r) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } space, err := c.db.SpaceGet(user, spaceID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, ErrNoSpace) + c.Error(w, r, http.StatusBadRequest, errors.Wrap(err, ErrNoSpace.Error())) return } ct, err := c.db.ContentTypeGet(user, space, contenttypeID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, ErrNoCT) + c.Error(w, r, http.StatusBadRequest, errors.Wrap(err, ErrNoCT.Error())) return } content, err := c.db.ContentGet(user, space, ct, contentID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, ErrNoC) + c.Error(w, r, http.StatusBadRequest, errors.Wrap(err, ErrNoC.Error())) return } @@ -250,7 +250,7 @@ func (c *Content) update(w http.ResponseWriter, r *http.Request) { user, space, ct, content, err := c.tree(w, r, spaceID, contenttypeID, contentID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } @@ -270,7 +270,7 @@ func (c *Content) update(w http.ResponseWriter, r *http.Request) { parts := strings.Split(strings.ReplaceAll(key, "value_update_", ""), "-") if len(parts) < 2 { - c.Error(w, r, http.StatusInternalServerError, "invalid name field for value") + c.Error(w, r, http.StatusInternalServerError, errors.New("invalid name field for value")) return } @@ -293,7 +293,7 @@ func (c *Content) update(w http.ResponseWriter, r *http.Request) { parts := strings.Split(key, "-") if len(parts) < 2 { - c.Error(w, r, http.StatusInternalServerError, "invalid name field for value") + c.Error(w, r, http.StatusInternalServerError, errors.New("invalid name field for value")) return } @@ -315,13 +315,13 @@ func (c *Content) update(w http.ResponseWriter, r *http.Request) { for key := range r.MultipartForm.File { file, header, err := r.FormFile(key) if err != nil { - c.Error(w, r, http.StatusInternalServerError, "failed to retreive file") + c.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to retreive file: %w", err)) return } url, err := c.upload(r.Context(), header.Filename, file, user) if err != nil { - c.Error(w, r, http.StatusInternalServerError, "failed to upload file") + c.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to upload file: %w", err)) return } @@ -330,7 +330,7 @@ func (c *Content) update(w http.ResponseWriter, r *http.Request) { parts := strings.Split(strings.ReplaceAll(key, "value_update_", ""), "-") if len(parts) < 2 { - c.Error(w, r, http.StatusInternalServerError, "invalid name field for value") + c.Error(w, r, http.StatusInternalServerError, errors.New("invalid name field for value")) return } @@ -347,7 +347,7 @@ func (c *Content) update(w http.ResponseWriter, r *http.Request) { parts := strings.Split(key, "-") if len(parts) < 2 { - c.Error(w, r, http.StatusInternalServerError, "invalid name field for value") + c.Error(w, r, http.StatusInternalServerError, errors.New("invalid name field for value")) return } @@ -363,7 +363,7 @@ func (c *Content) update(w http.ResponseWriter, r *http.Request) { content, err = c.db.ContentUpdate(user, space, ct, content, newParams, updateParams) if err != nil { - c.Error(w, r, http.StatusInternalServerError, "failed to update content") + c.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to update content: %w", err)) return } @@ -380,12 +380,12 @@ func (c *Content) delete(w http.ResponseWriter, r *http.Request) { user, space, ct, content, err := c.tree(w, r, spaceID, contenttypeID, contentID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } if err := c.db.ContentDelete(user, space, ct, content); err != nil { - c.Error(w, r, http.StatusInternalServerError, "failed to delete content") + c.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to delete content: %w", err)) return } @@ -407,19 +407,19 @@ func (c *Content) search(w http.ResponseWriter, r *http.Request) { user, err := c.GetCookieUser(w, r) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } space, err := c.db.SpaceGet(user, spaceID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, ErrNoSpace) + c.Error(w, r, http.StatusBadRequest, errors.Wrap(err, ErrNoSpace.Error())) return } ct, err := c.db.ContentTypeGet(user, space, contenttypeID) if err != nil { - c.Error2(w, r, http.StatusBadRequest, ErrNoCT) + c.Error(w, r, http.StatusBadRequest, errors.Wrap(err, ErrNoCT.Error())) return } diff --git a/internal/c/contenttype/contenttype.go b/internal/c/contenttype/contenttype.go index b91c2c3..d623862 100644 --- a/internal/c/contenttype/contenttype.go +++ b/internal/c/contenttype/contenttype.go @@ -75,7 +75,7 @@ func (ct *ContentType) create(w http.ResponseWriter, r *http.Request) { user, space, err := ct.tree(w, r) if err != nil { - ct.Error2(w, r, http.StatusBadRequest, err) + ct.Error(w, r, http.StatusBadRequest, err) return } @@ -94,7 +94,7 @@ func (ct *ContentType) create(w http.ResponseWriter, r *http.Request) { valType := r.FormValue(keyType) if valName == "" || valType == "" { - ct.Error2(w, r, http.StatusBadRequest, ErrBadForm) + ct.Error(w, r, http.StatusBadRequest, ErrBadForm) return } @@ -105,7 +105,7 @@ func (ct *ContentType) create(w http.ResponseWriter, r *http.Request) { } if len(params) < 1 { - ct.Error2(w, r, http.StatusBadRequest, ErrNoFields) + ct.Error(w, r, http.StatusBadRequest, ErrNoFields) return } @@ -117,13 +117,13 @@ func (ct *ContentType) create(w http.ResponseWriter, r *http.Request) { } } if !hasName { - ct.Error2(w, r, http.StatusBadRequest, ErrNoNameField) + ct.Error(w, r, http.StatusBadRequest, ErrNoNameField) return } ctype, err := ct.db.ContentTypeNew(user, space, name, params) if err != nil { - ct.Error2(w, r, http.StatusInternalServerError, fmt.Errorf("%s: %w", ErrFailedCreate.Error(), err)) + ct.Error(w, r, http.StatusInternalServerError, fmt.Errorf("%s: %w", ErrFailedCreate.Error(), err)) return } @@ -137,13 +137,13 @@ func (ct *ContentType) update(w http.ResponseWriter, r *http.Request) { user, space, err := ct.tree(w, r) if err != nil { - ct.Error2(w, r, http.StatusBadRequest, err) + ct.Error(w, r, http.StatusBadRequest, err) return } old, err := ct.db.ContentTypeGet(user, space, ctID) if err != nil { - ct.Error2(w, r, http.StatusInternalServerError, ErrNoCT) + ct.Error(w, r, http.StatusInternalServerError, ErrNoCT) return } @@ -164,7 +164,7 @@ func (ct *ContentType) update(w http.ResponseWriter, r *http.Request) { valType := r.FormValue(keyType) if valName == "" || valType == "" { - ct.Error2(w, r, http.StatusBadRequest, ErrBadForm) + ct.Error(w, r, http.StatusBadRequest, ErrBadForm) return } @@ -190,7 +190,7 @@ func (ct *ContentType) update(w http.ResponseWriter, r *http.Request) { } if valName == "" || valType == "" || valID == "" { - ct.Error2(w, r, http.StatusBadRequest, ErrBadForm) + ct.Error(w, r, http.StatusBadRequest, ErrBadForm) return } @@ -202,7 +202,7 @@ func (ct *ContentType) update(w http.ResponseWriter, r *http.Request) { } if len(updateParams) < 1 { - ct.Error2(w, r, http.StatusBadRequest, ErrNoFields) + ct.Error(w, r, http.StatusBadRequest, ErrNoFields) return } @@ -219,19 +219,19 @@ func (ct *ContentType) update(w http.ResponseWriter, r *http.Request) { } } if !hasName { - ct.Error2(w, r, http.StatusBadRequest, ErrNoNameField) + ct.Error(w, r, http.StatusBadRequest, ErrNoNameField) return } ctype, err := ct.db.ContentTypeGet(user, space, ctID) if err != nil { - ct.Error2(w, r, http.StatusInternalServerError, ErrNoCT) + ct.Error(w, r, http.StatusInternalServerError, ErrNoCT) return } ctype, err = ct.db.ContentTypeUpdate(user, space, ctype, name, newParams, updateParams) if err != nil { - ct.Error2(w, r, http.StatusInternalServerError, fmt.Errorf("%s: %w", ErrFailedUpdate.Error(), err)) + ct.Error(w, r, http.StatusInternalServerError, fmt.Errorf("%s: %w", ErrFailedUpdate.Error(), err)) return } @@ -251,19 +251,19 @@ func (c *ContentType) serve(w http.ResponseWriter, r *http.Request) { user, err := c.GetCookieUser(w, r) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } space, err := c.db.SpaceGet(user, spaceID) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrNoSpace) + c.Error(w, r, http.StatusInternalServerError, ErrNoSpace) return } ct, err := c.db.ContentTypeGet(user, space, contenttypeID) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrNoCT) + c.Error(w, r, http.StatusInternalServerError, ErrNoCT) return } @@ -277,7 +277,7 @@ func (c *ContentType) serve(w http.ResponseWriter, r *http.Request) { case "": o = db.OrderAsc default: - c.Error2(w, r, http.StatusBadRequest, ErrBadOrder) + c.Error(w, r, http.StatusBadRequest, ErrBadOrder) return } @@ -290,7 +290,7 @@ func (c *ContentType) serve(w http.ResponseWriter, r *http.Request) { before, _ := strconv.Atoi(r.URL.Query().Get("before")) list, err := c.db.ContentPerContentType(user, space, ct, before, o, f) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrNoC) + c.Error(w, r, http.StatusInternalServerError, ErrNoC) return } @@ -308,24 +308,24 @@ func (c *ContentType) delete(w http.ResponseWriter, r *http.Request) { user, err := c.GetCookieUser(w, r) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } space, err := c.db.SpaceGet(user, spaceID) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrNoSpace) + c.Error(w, r, http.StatusInternalServerError, ErrNoSpace) return } ct, err := c.db.ContentTypeGet(user, space, contenttypeID) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrNoCT) + c.Error(w, r, http.StatusInternalServerError, ErrNoCT) return } if err := c.db.ContentTypeDelete(user, space, ct); err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrFailedDelete) + c.Error(w, r, http.StatusInternalServerError, ErrFailedDelete) return } @@ -339,20 +339,20 @@ func (c *ContentType) search(w http.ResponseWriter, r *http.Request) { user, err := c.GetCookieUser(w, r) if err != nil { - c.Error2(w, r, http.StatusBadRequest, err) + c.Error(w, r, http.StatusBadRequest, err) return } space, err := c.db.SpaceGet(user, spaceID) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrNoSpace) + c.Error(w, r, http.StatusInternalServerError, ErrNoSpace) return } before, _ := strconv.Atoi(r.URL.Query().Get("before")) list, err := c.db.ContentTypeSearch(user, space, query, before) if err != nil { - c.Error2(w, r, http.StatusInternalServerError, ErrNoCT) + c.Error(w, r, http.StatusInternalServerError, ErrNoCT) return } diff --git a/internal/c/file/file.go b/internal/c/file/file.go index eeee3b4..ea81040 100644 --- a/internal/c/file/file.go +++ b/internal/c/file/file.go @@ -36,14 +36,14 @@ func New(c *c.Controller, log *log.Logger, db DBer, e3 E3er, baseURL string) *Fi func (f *File) ServeHTTP(w http.ResponseWriter, r *http.Request) { ok, err := f.db.FileExists(f.baseURL + r.URL.Path) if !ok || err != nil { - f.Error(w, r, http.StatusNotFound, "file does not exist") + f.ErrorString(w, r, http.StatusNotFound, "file does not exist") return } full := strings.TrimRight(f.e3.URL(), "api") + strings.TrimLeft(r.URL.Path, "/file") // TODO: Cleanup, this is hacky. bytes, err := f.e3.Proxy(r.Context(), full) if err != nil { - f.Error(w, r, http.StatusInternalServerError, "failed to serve file") + f.ErrorString(w, r, http.StatusInternalServerError, "failed to serve file") return } diff --git a/internal/c/hook/hook.go b/internal/c/hook/hook.go index e93a4c4..c25552a 100644 --- a/internal/c/hook/hook.go +++ b/internal/c/hook/hook.go @@ -49,7 +49,7 @@ func New(c *c.Controller, log *log.Logger, db dber) *Content { func (h *Content) ServeHTTP(w http.ResponseWriter, r *http.Request) { user, err := h.GetCookieUser(w, r) if err != nil { - h.Error2(w, r, http.StatusBadRequest, err) + h.Error(w, r, http.StatusBadRequest, err) return } @@ -58,13 +58,13 @@ func (h *Content) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "POST": space, err := h.db.SpaceGet(user, r.FormValue("space")) if err != nil { - h.Error2(w, r, http.StatusBadRequest, ErrNoSpace) + h.Error(w, r, http.StatusBadRequest, ErrNoSpace) return } hook, err := h.db.HookNew(user, space, r.FormValue("url")) if err != nil { - h.Error2(w, r, http.StatusInternalServerError, ErrFailedCreate) + h.Error(w, r, http.StatusInternalServerError, ErrFailedCreate) return } @@ -74,18 +74,18 @@ func (h *Content) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "DELETE": space, err := h.db.SpaceGet(user, r.FormValue("space")) if err != nil { - h.Error2(w, r, http.StatusBadRequest, ErrNoSpace) + h.Error(w, r, http.StatusBadRequest, ErrNoSpace) return } hook, err := h.db.HookGet(user, space, r.FormValue("hook")) if err != nil { - h.Error2(w, r, http.StatusBadRequest, ErrNoHook) + h.Error(w, r, http.StatusBadRequest, ErrNoHook) return } if err := h.db.HookDelete(user, space, hook); err != nil { - h.Error2(w, r, http.StatusInternalServerError, ErrFailedDelete) + h.Error(w, r, http.StatusInternalServerError, ErrFailedDelete) return } @@ -104,13 +104,13 @@ func (h *Content) ServeHTTP(w http.ResponseWriter, r *http.Request) { space, err := h.db.SpaceGet(user, spaceID) if err != nil { - h.Error2(w, r, http.StatusBadRequest, ErrNoSpace) + h.Error(w, r, http.StatusBadRequest, ErrNoSpace) return } hook, err := h.db.HookGet(user, space, hookID) if err != nil { - h.Error2(w, r, http.StatusBadRequest, ErrNoHook) + h.Error(w, r, http.StatusBadRequest, ErrNoHook) return } diff --git a/internal/c/invite/invite.go b/internal/c/invite/invite.go index afa478a..7338a73 100644 --- a/internal/c/invite/invite.go +++ b/internal/c/invite/invite.go @@ -47,7 +47,7 @@ func (i Invite) ServeHTTP(w http.ResponseWriter, r *http.Request) { // This is the logged out user. tok := strings.Trim(r.URL.Path, "/") if tok == "" { - i.Error2(w, r, http.StatusBadRequest, ErrNoInvite) + i.Error(w, r, http.StatusBadRequest, ErrNoInvite) return } i.HTML(w, r, inviteHTML, map[string]interface{}{"Invite": tok}) @@ -56,7 +56,7 @@ func (i Invite) ServeHTTP(w http.ResponseWriter, r *http.Request) { invites, err := i.db.InviteList(user, user.Org()) if err != nil { - i.Error2(w, r, http.StatusInternalServerError, err) + i.Error(w, r, http.StatusInternalServerError, err) return } @@ -70,23 +70,23 @@ func (i Invite) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "POST": user, err := i.GetCookieUser(w, r) if err != nil { - i.Error2(w, r, http.StatusBadRequest, c.ErrNoLogin) + i.Error(w, r, http.StatusBadRequest, c.ErrNoLogin) return } role, ok := role.ByName(r.FormValue("role")) if !ok { - i.Error2(w, r, http.StatusBadRequest, errors.New("invalid role suppplied for invite")) + i.Error(w, r, http.StatusBadRequest, errors.New("invalid role suppplied for invite")) return } _, err = i.db.InviteNew(user, user.Org(), role) if errors.Is(err, invite.ErrExpired) || errors.Is(err, invite.ErrUsed) { - i.Error2(w, r, http.StatusBadRequest, err) + i.Error(w, r, http.StatusBadRequest, err) return } if err != nil { - i.Error2(w, r, http.StatusInternalServerError, fmt.Errorf("failed to create invite: %w", err)) + i.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to create invite: %w", err)) return } @@ -97,24 +97,24 @@ func (i Invite) ServeHTTP(w http.ResponseWriter, r *http.Request) { // Can't be logged in. _, err := i.GetCookieUser(w, r) if err == nil { - i.Error2(w, r, http.StatusBadRequest, ErrLoggedIn) + i.Error(w, r, http.StatusBadRequest, ErrLoggedIn) return } inv, err := i.db.InviteGetByToken(r.FormValue("invite")) if err != nil { - i.Error2(w, r, http.StatusBadRequest, err) + i.Error(w, r, http.StatusBadRequest, err) return } // Accept invite and create new user. user, _, err := i.db.InviteAccept(inv, r.FormValue("username"), r.FormValue("password"), r.FormValue("verify")) if errors.Is(err, invite.ErrExpired) || errors.Is(err, invite.ErrUsed) { - i.Error2(w, r, http.StatusBadRequest, err) + i.Error(w, r, http.StatusBadRequest, err) return } if err != nil { - i.Error2(w, r, http.StatusInternalServerError, fmt.Errorf("failed to create invite: %w", err)) + i.Error(w, r, http.StatusInternalServerError, fmt.Errorf("failed to create invite: %w", err)) return } diff --git a/internal/c/space/space.go b/internal/c/space/space.go index df794d6..b9ea997 100644 --- a/internal/c/space/space.go +++ b/internal/c/space/space.go @@ -58,27 +58,27 @@ func (s *Space) serve(w http.ResponseWriter, r *http.Request) { user, err := s.GetCookieUser(w, r) if err != nil { - s.Error2(w, r, http.StatusBadRequest, err) + s.Error(w, r, http.StatusBadRequest, err) return } space, err := s.db.SpaceGet(user, spaceID) if err != nil { - s.Error2(w, r, http.StatusNotFound, ErrNoSpace) + s.Error(w, r, http.StatusNotFound, ErrNoSpace) return } beforect, _ := strconv.Atoi(r.URL.Query().Get("beforect")) cts, err := s.db.ContentTypesPerSpace(user, space, beforect) if err != nil { - s.Error(w, r, http.StatusInternalServerError, "failed to find contenttypes for space") + s.ErrorString(w, r, http.StatusInternalServerError, "failed to find contenttypes for space") return } beforehook, _ := strconv.Atoi(r.URL.Query().Get("beforehook")) hooks, err := s.db.HooksPerSpace(user, space, beforehook) if err != nil { - s.Error(w, r, http.StatusInternalServerError, "failed to find webhooks for space") + s.ErrorString(w, r, http.StatusInternalServerError, "failed to find webhooks for space") return } @@ -96,13 +96,13 @@ func (s *Space) create(w http.ResponseWriter, r *http.Request) { user, err := s.GetCookieUser(w, r) if err != nil { - s.Error2(w, r, http.StatusBadRequest, errors.Wrap(err, "can't create space")) + s.Error(w, r, http.StatusBadRequest, errors.Wrap(err, "can't create space")) return } space, err := s.db.SpaceNew(user, name, desc) if err != nil { - s.Error2(w, r, http.StatusBadRequest, err) + s.Error(w, r, http.StatusBadRequest, err) return } @@ -117,19 +117,19 @@ func (s *Space) copy(w http.ResponseWriter, r *http.Request) { user, err := s.GetCookieUser(w, r) if err != nil { - s.Error2(w, r, http.StatusBadRequest, errors.Wrap(err, "can't copy space")) + s.Error(w, r, http.StatusBadRequest, errors.Wrap(err, "can't copy space")) return } spacePrev, err := s.db.SpaceGet(user, spaceID) if err != nil { - s.Error2(w, r, http.StatusNotFound, ErrNoSpace) + s.Error(w, r, http.StatusNotFound, ErrNoSpace) return } spaceNext, err := s.db.SpaceCopy(user, spacePrev, name, desc) if err != nil { - s.Error(w, r, http.StatusBadRequest, err.Error()) + s.Error(w, r, http.StatusBadRequest, err) return } @@ -144,19 +144,19 @@ func (s *Space) update(w http.ResponseWriter, r *http.Request) { user, err := s.GetCookieUser(w, r) if err != nil { - s.Error2(w, r, http.StatusBadRequest, errors.Wrap(err, "can't update space")) + s.Error(w, r, http.StatusBadRequest, errors.Wrap(err, "can't update space")) return } prev, err := s.db.SpaceGet(user, spaceID) if err != nil { - s.Error2(w, r, http.StatusNotFound, ErrNoSpace) + s.Error(w, r, http.StatusNotFound, ErrNoSpace) return } next, err := s.db.SpaceUpdate(user, prev, name, desc) if err != nil { - s.Error(w, r, http.StatusInternalServerError, "failed to update space") + s.ErrorString(w, r, http.StatusInternalServerError, "failed to update space") return } @@ -169,18 +169,18 @@ func (s *Space) delete(w http.ResponseWriter, r *http.Request) { user, err := s.GetCookieUser(w, r) if err != nil { - s.Error2(w, r, http.StatusBadRequest, errors.Wrap(err, "can't delete space")) + s.Error(w, r, http.StatusBadRequest, errors.Wrap(err, "can't delete space")) return } space, err := s.db.SpaceGet(user, spaceID) if err != nil { - s.Error2(w, r, http.StatusNotFound, ErrNoSpace) + s.Error(w, r, http.StatusNotFound, ErrNoSpace) return } if err := s.db.SpaceDelete(user, space); err != nil { - s.Error(w, r, http.StatusInternalServerError, "failed to delete space") + s.ErrorString(w, r, http.StatusInternalServerError, "failed to delete space") return } diff --git a/internal/c/stripe/stripe.go b/internal/c/stripe/stripe.go index 377d7b1..55f1644 100644 --- a/internal/c/stripe/stripe.go +++ b/internal/c/stripe/stripe.go @@ -29,7 +29,7 @@ func (s StripeEndpoint) ServeHTTP(w http.ResponseWriter, r *http.Request) { case "/success": err := s.stripe.CompleteCheckout(r.FormValue("session_id")) if err != nil { - s.Error2(w, r, http.StatusInternalServerError, err) + s.Error(w, r, http.StatusInternalServerError, err) return } s.Redirect(w, r, "/") diff --git a/internal/c/user/user.go b/internal/c/user/user.go index dd994d7..9fd5101 100644 --- a/internal/c/user/user.go +++ b/internal/c/user/user.go @@ -63,7 +63,7 @@ func (l *User) login(w http.ResponseWriter, r *http.Request) { user, err := l.db.UserGet(username, password) if err != nil { - l.Error2(w, r, http.StatusBadRequest, err) + l.Error(w, r, http.StatusBadRequest, err) return } @@ -73,7 +73,7 @@ func (l *User) login(w http.ResponseWriter, r *http.Request) { func (l *User) signup(w http.ResponseWriter, r *http.Request) { if !l.signupEnabled { - l.Error2(w, r, http.StatusForbidden, ErrNoSignup) + l.Error(w, r, http.StatusForbidden, ErrNoSignup) return } @@ -82,13 +82,13 @@ func (l *User) signup(w http.ResponseWriter, r *http.Request) { verify := r.FormValue("verify") t, ok := tier.ByName(r.FormValue("tier")) if !ok { - l.Error2(w, r, http.StatusBadRequest, ErrNoTier) + l.Error(w, r, http.StatusBadRequest, ErrNoTier) return } user, err := l.db.UserNew(username, password, verify) if err != nil { - l.Error2(w, r, http.StatusBadRequest, err) + l.Error(w, r, http.StatusBadRequest, err) return } l.SetCookieUser(w, r, user) @@ -100,7 +100,7 @@ func (l *User) signup(w http.ResponseWriter, r *http.Request) { stripeCheckoutSessionID, stripePK, err := l.stripe.StartCheckout(user, t) if err != nil { - l.Error2(w, r, http.StatusInternalServerError, err) + l.Error(w, r, http.StatusInternalServerError, err) return } @@ -127,7 +127,7 @@ func (l *User) home(w http.ResponseWriter, r *http.Request) { spaces, err := l.db.SpacesPerUser(user, before) if err != nil { - l.Error(w, r, http.StatusInternalServerError, "failed to find spaces for user") + l.Error(w, r, http.StatusInternalServerError, errors.New("failed to find spaces for user")) return } @@ -141,12 +141,12 @@ func (l *User) home(w http.ResponseWriter, r *http.Request) { func (l *User) updateEmail(w http.ResponseWriter, r *http.Request) { u, err := l.GetCookieUser(w, r) if err != nil { - l.Error2(w, r, http.StatusInternalServerError, c.ErrNoLogin) + l.Error(w, r, http.StatusInternalServerError, c.ErrNoLogin) return } if _, err := l.db.UserSetEmail(u, r.FormValue("email")); err != nil { - l.Error2(w, r, http.StatusInternalServerError, err) + l.Error(w, r, http.StatusInternalServerError, err) return } @@ -156,12 +156,12 @@ func (l *User) updateEmail(w http.ResponseWriter, r *http.Request) { func (l *User) updatePassword(w http.ResponseWriter, r *http.Request) { u, err := l.GetCookieUser(w, r) if err != nil { - l.Error2(w, r, http.StatusInternalServerError, c.ErrNoLogin) + l.Error(w, r, http.StatusInternalServerError, c.ErrNoLogin) return } if _, err := l.db.UserSetPassword(u, r.FormValue("current"), r.FormValue("password"), r.FormValue("verify")); err != nil { - l.Error2(w, r, http.StatusInternalServerError, err) + l.Error(w, r, http.StatusInternalServerError, err) return } @@ -171,13 +171,13 @@ func (l *User) updatePassword(w http.ResponseWriter, r *http.Request) { func (l *User) updateBilling(w http.ResponseWriter, r *http.Request) { u, err := l.GetCookieUser(w, r) if err != nil { - l.Error2(w, r, http.StatusInternalServerError, c.ErrNoLogin) + l.Error(w, r, http.StatusInternalServerError, c.ErrNoLogin) return } t, ok := tier.ByName(r.FormValue("tier")) if !ok || !(t.Is(tier.Business) || t.Is(tier.Enterprise)) { - l.Error2(w, r, http.StatusBadRequest, ErrNoTier) + l.Error(w, r, http.StatusBadRequest, ErrNoTier) return } @@ -188,7 +188,7 @@ func (l *User) updateBilling(w http.ResponseWriter, r *http.Request) { stripeCheckoutSessionID, stripePK, err := l.stripe.StartCheckout(u, t) if err != nil { - l.Error2(w, r, http.StatusInternalServerError, err) + l.Error(w, r, http.StatusInternalServerError, err) return } @@ -203,12 +203,12 @@ func (l *User) updateBilling(w http.ResponseWriter, r *http.Request) { func (l *User) cancelBilling(w http.ResponseWriter, r *http.Request) { u, err := l.GetCookieUser(w, r) if err != nil { - l.Error2(w, r, http.StatusInternalServerError, c.ErrNoLogin) + l.Error(w, r, http.StatusInternalServerError, c.ErrNoLogin) return } if err := l.stripe.CancelSubscription(u); err != nil { - l.Error2(w, r, http.StatusInternalServerError, err) + l.Error(w, r, http.StatusInternalServerError, err) return } -- 2.45.2