domogeek/vendor/github.com/dolanor/caldav-go/caldav/response.go

41 lines
1.0 KiB
Go
Raw Normal View History

2022-04-18 10:47:47 +00:00
package caldav
import (
"github.com/dolanor/caldav-go/icalendar"
"github.com/dolanor/caldav-go/utils"
"github.com/dolanor/caldav-go/webdav"
"io/ioutil"
"log"
)
var _ = log.Print
// a WebDAV response object
type Response webdav.Response
// downcasts the response to the WebDAV interface
func (r *Response) WebDAV() *webdav.Response {
return (*webdav.Response)(r)
}
// decodes a CalDAV iCalendar response into the provided interface
func (r *Response) Decode(into interface{}) error {
if body := r.Body; body == nil {
return nil
} else if encoded, err := ioutil.ReadAll(body); err != nil {
return utils.NewError(r.Decode, "unable to read response body", r, err)
} else {
// log.Printf("IN: %+v", string(encoded))
if err := icalendar.Unmarshal(string(encoded), into); err != nil {
return utils.NewError(r.Decode, "unable to decode response body", r, err)
} else {
return nil
}
}
}
// creates a new WebDAV response object
func NewResponse(response *webdav.Response) *Response {
return (*Response)(response)
}