From 1b725cb0b9b0c29be2b4932d592bea9e7ea39e10 Mon Sep 17 00:00:00 2001 From: AlmogBaku Date: Sun, 29 Mar 2020 01:51:45 +0300 Subject: [PATCH] fixes #33, remove missingPropError error --- carddav/server.go | 4 ++-- internal/elements.go | 17 ++--------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/carddav/server.go b/carddav/server.go index 4f8995c..7382fd7 100644 --- a/carddav/server.go +++ b/carddav/server.go @@ -124,7 +124,7 @@ func (h *Handler) handleQuery(w http.ResponseWriter, query *addressbookQuery) er var q AddressBookQuery if query.Prop != nil { var addressData addressDataReq - if err := query.Prop.Decode(&addressData); err != nil && !internal.IsMissingProp(err) { + if err := query.Prop.Decode(&addressData); err != nil && !internal.IsNotFound(err) { return err } req, err := decodeAddressDataReq(&addressData) @@ -176,7 +176,7 @@ func (h *Handler) handleMultiget(w http.ResponseWriter, multiget *addressbookMul var dataReq AddressDataRequest if multiget.Prop != nil { var addressData addressDataReq - if err := multiget.Prop.Decode(&addressData); err != nil && !internal.IsMissingProp(err) { + if err := multiget.Prop.Decode(&addressData); err != nil && !internal.IsNotFound(err) { return err } decoded, err := decodeAddressDataReq(&addressData) diff --git a/internal/elements.go b/internal/elements.go index 8bf2507..72d07ea 100644 --- a/internal/elements.go +++ b/internal/elements.go @@ -143,19 +143,6 @@ func (resp *Response) Path() (string, error) { return resp.Hrefs[0].Path, nil } -type missingPropError struct { - XMLName xml.Name -} - -func (err *missingPropError) Error() string { - return fmt.Sprintf("webdav: missing prop %q %q", err.XMLName.Space, err.XMLName.Local) -} - -func IsMissingProp(err error) bool { - _, ok := err.(*missingPropError) - return ok -} - func (resp *Response) DecodeProp(values ...interface{}) error { for _, v := range values { // TODO wrap errors with more context (XML name) @@ -176,7 +163,7 @@ func (resp *Response) DecodeProp(values ...interface{}) error { } return raw.Decode(v) } - return &missingPropError{name} + return HTTPErrorf(http.StatusNotFound, "missing property %s", name) } return nil @@ -254,7 +241,7 @@ func (p *Prop) Decode(v interface{}) error { raw := p.Get(name) if raw == nil { - return &missingPropError{name} + return HTTPErrorf(http.StatusNotFound, "missing property %s", name) } return raw.Decode(v)