diff --git a/carddav/server.go b/carddav/server.go index 5960809..b042867 100644 --- a/carddav/server.go +++ b/carddav/server.go @@ -294,7 +294,7 @@ func (b *backend) HeadGet(w http.ResponseWriter, r *http.Request) error { w.Header().Set("Content-Length", strconv.FormatInt(ao.ContentLength, 10)) } if ao.ETag != "" { - w.Header().Set("ETag", internal.ETag(ao.ETag).String()) + w.Header().Set("ETag", ao.ETag) } if !ao.ModTime.IsZero() { w.Header().Set("Last-Modified", ao.ModTime.UTC().Format(http.TimeFormat)) @@ -458,7 +458,7 @@ func (b *backend) propFindAddressObject(ctx context.Context, propfind *internal. if ao.ETag != "" { props[internal.GetETagName] = func(*internal.RawXMLValue) (interface{}, error) { - return &internal.GetETag{ETag: internal.ETag(ao.ETag)}, nil + return &internal.GetETag{ETag: ao.ETag}, nil } } diff --git a/internal/elements.go b/internal/elements.go index 786922e..905b44b 100644 --- a/internal/elements.go +++ b/internal/elements.go @@ -368,26 +368,7 @@ type GetLastModified struct { // https://tools.ietf.org/html/rfc4918#section-15.6 type GetETag struct { XMLName xml.Name `xml:"DAV: getetag"` - ETag ETag `xml:",chardata"` -} - -type ETag string - -func (etag *ETag) UnmarshalText(b []byte) error { - s, err := strconv.Unquote(string(b)) - if err != nil { - return fmt.Errorf("webdav: failed to unquote ETag: %v", err) - } - *etag = ETag(s) - return nil -} - -func (etag ETag) MarshalText() ([]byte, error) { - return []byte(etag.String()), nil -} - -func (etag ETag) String() string { - return fmt.Sprintf("%q", string(etag)) + ETag string `xml:",chardata"` } // https://tools.ietf.org/html/rfc4918#section-14.5 diff --git a/server.go b/server.go index 7eaadde..e10ac40 100644 --- a/server.go +++ b/server.go @@ -103,7 +103,7 @@ func (b *backend) HeadGet(w http.ResponseWriter, r *http.Request) error { w.Header().Set("Last-Modified", fi.ModTime.UTC().Format(http.TimeFormat)) } if fi.ETag != "" { - w.Header().Set("ETag", internal.ETag(fi.ETag).String()) + w.Header().Set("ETag", fi.ETag) } if rs, ok := f.(io.ReadSeeker); ok { @@ -184,7 +184,7 @@ func (b *backend) propFindFile(propfind *internal.PropFind, fi *FileInfo) (*inte if fi.ETag != "" { props[internal.GetETagName] = func(*internal.RawXMLValue) (interface{}, error) { - return &internal.GetETag{ETag: internal.ETag(fi.ETag)}, nil + return &internal.GetETag{ETag: fi.ETag}, nil } } }