diff --git a/client.go b/client.go index 815b4a9..72e8d76 100644 --- a/client.go +++ b/client.go @@ -1,7 +1,6 @@ package webdav import ( - "encoding/xml" "fmt" "net/http" "strings" @@ -55,7 +54,7 @@ func (c *Client) FindCurrentUserPrincipal() (string, error) { propstat := &resp.Propstats[0] var prop currentUserPrincipalProp - if err := xml.NewTokenDecoder(propstat.Prop.TokenReader()).Decode(&prop); err != nil { + if err := propstat.Prop.Decode(&prop); err != nil { return "", err } diff --git a/internal/xml.go b/internal/xml.go index 44311ff..81a530e 100644 --- a/internal/xml.go +++ b/internal/xml.go @@ -62,6 +62,10 @@ func (val *RawXMLValue) MarshalXML(e *xml.Encoder, start xml.StartElement) error var _ xml.Marshaler = (*RawXMLValue)(nil) var _ xml.Unmarshaler = (*RawXMLValue)(nil) +func (val *RawXMLValue) Decode(v interface{}) error { + return xml.NewTokenDecoder(val.TokenReader()).Decode(&v) +} + // TokenReader returns a stream of tokens for the XML value. func (val *RawXMLValue) TokenReader() xml.TokenReader { return &rawXMLValueReader{val: val}