mirror of
https://github.com/1f349/go-webdav.git
synced 2024-12-22 16:24:14 +00:00
carddav: add limit support to addressbook-query
References: https://github.com/emersion/go-webdav/issues/18
This commit is contained in:
parent
70c3bffdf3
commit
94f47fa001
@ -19,10 +19,13 @@ type AddressBook struct {
|
||||
type AddressBookQuery struct {
|
||||
Props []string
|
||||
AllProp bool
|
||||
|
||||
Limit int // <= 0 means unlimited
|
||||
}
|
||||
|
||||
type AddressBookMultiGet struct {
|
||||
Paths []string
|
||||
|
||||
Props []string
|
||||
AllProp bool
|
||||
}
|
||||
|
@ -215,6 +215,9 @@ func (c *Client) QueryAddressBook(addressBook string, query *AddressBookQuery) (
|
||||
}
|
||||
|
||||
addressbookQuery := addressbookQuery{Prop: propReq}
|
||||
if query.Limit > 0 {
|
||||
addressbookQuery.Limit = &limit{NResults: uint(query.Limit)}
|
||||
}
|
||||
|
||||
req, err := c.ic.NewXMLRequest("REPORT", addressBook, &addressbookQuery)
|
||||
if err != nil {
|
||||
|
@ -80,6 +80,12 @@ func (h *Handler) handleQuery(w http.ResponseWriter, query *addressbookQuery) er
|
||||
q.Props = append(q.Props, p.Name)
|
||||
}
|
||||
}
|
||||
if query.Limit != nil {
|
||||
q.Limit = int(query.Limit.NResults)
|
||||
if q.Limit <= 0 {
|
||||
return internal.ServeMultistatus(w, internal.NewMultistatus())
|
||||
}
|
||||
}
|
||||
|
||||
aos, err := h.Backend.QueryAddressObjects(&q)
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user