Simon Ser
0babf610b0
carddav: stop hardcoding address book home set
2022-05-03 21:17:37 +02:00
Conrad Hoffmann
95a4ae783b
carddav: use AddressBook.Path in PROPFIND response
2022-05-02 20:58:00 +02:00
Simon Ser
8cc6542f1c
carddav: use partial error response on multiget failure
...
Instead of making the whole HTTP request fail when a single address
object cannot be fetched, return a partial error response.
2022-05-02 15:43:43 +02:00
Simon Ser
4e8c5effe3
Replace DAVError with HTTPError + Error
...
That way we can avoid having different ways of representing the
same error value.
2022-05-02 15:43:43 +02:00
Conrad Hoffmann
c4206ba616
carddav: pass If-(None-)Match to backend
...
This simply extends the interfaces to pass on the values if they were
used, relying on the backend to handle things accordingly.
2022-03-22 09:28:24 +01:00
Conrad Hoffmann
85d2b222bb
Add error type representing DAV/XML errors
...
Backends will need some way to signal that a precondition error occurred
(and specifying which one) without causing the server to return a 500.
This commit adds an exported function to create a specific error for
this. The existing error handling routine is slightly adapted to handle
this error in such a way that it returns the desired result.
Usage would be something like:
```
return "", carddav.NewPreconditionError(carddav.PreconditionNoUIDConflict)
```
which triggers the following HTTP response:
```
HTTP/1.1 409 Conflict.
Content-Type: text/xml; charset=utf-8.
Date: Thu, 10 Mar 2022 10:28:56 GMT.
Content-Length: 141.
Connection: close.
<?xml version="1.0" encoding="UTF-8"?>
<error xmlns="DAV:"><no-uid-conflict
xmlns="urn:ietf:params:xml:ns:carddav"></no-uid-conflict></error>
```
This response gets correctly recognized by e.g. Evolution (though it's
handling is not great).
The added error type is generic enough to be used for other stuff also.
As it is not exported (internal package), new functions for creating
such errors would have to be added.
2022-03-10 16:48:11 +01:00
Sebastien Binet
6d59672ed4
carddav: add filtering and matching helper functions
...
Updates emersion/hydroxide#159 .
Signed-off-by: Sebastien Binet <binet@cern.ch>
Co-authored-by: Conrad Hoffmann <ch@bitfehler.net>
2022-03-01 10:06:11 +01:00
Conrad Hoffmann
dc57b81662
carddav/server: set ETag and Last-Modified if available
...
Some clients (e.g. Evolution) will not work properly without this. It is
up to the underlying backend to actually provide this data, the headers
will only be set if it is available.
2022-02-24 12:41:56 +01:00
Conrad Hoffmann
0f6744ede8
Pass request context to storage interface
...
This way the storage implementation can communicate with any potentially
used middleware (e.g. authentication) or for example abort requests.
2022-02-23 12:01:13 +01:00
Heiko Carrasco
4316bbcd93
caldav: add server handling for well-known URLs
2020-10-09 15:10:33 +02:00
AlmogBaku
9e23289610
sync-collection for client
2020-05-25 18:28:24 +02:00
AlmogBaku
1b725cb0b9
fixes #33 , remove missingPropError error
2020-04-02 16:48:13 +02:00
Simon Ser
abadf534f4
carddav: expose supported address data in client
2020-02-27 12:36:14 +01:00
Simon Ser
7d2b6a3902
carddav: make Discover fail when target is empty
2020-02-19 16:32:35 +01:00
Simon Ser
4b24edf624
carddav: fix Discover with default HTTPS port
2020-02-19 16:31:03 +01:00
Simon Ser
ddf2a85958
Introduce HTTPClient, remove Client.SetBasicAuth
2020-02-19 16:02:49 +01:00
Simon Ser
c52097fefb
carddav: add Client.GetAddressObject
2020-02-12 21:38:55 +01:00
Simon Ser
236dc07837
carddav: fix Client.PutAddressObject failing with Radicale
...
This is workaround for a Radicale issue.
References: https://github.com/Kozea/Radicale/issues/1016
2020-02-12 21:10:52 +01:00
Simon Ser
842acb3647
carddav: add Client.PutAddressObject
2020-02-12 19:47:16 +01:00
Simon Ser
a892cc58df
internal: only handle relative paths in Client.ResolveHref
...
Don't prepend the endpoint path in front of absolute paths.
2020-02-12 17:13:12 +01:00
Simon Ser
f9d728aaeb
carddav: add Client.HasSupport
2020-02-05 16:08:15 +01:00
Simon Ser
25678476db
internal: add ETag
2020-02-03 21:48:31 +01:00
Simon Ser
dd1527b97e
carddav: allow created address book objects to have a different path
...
Closes: https://github.com/emersion/go-webdav/issues/32
2020-01-30 15:20:10 +01:00
Simon Ser
6aea0eda2d
caldav: add Client boilerplate
2020-01-30 13:18:05 +01:00
Simon Ser
feea39c898
carddav: fix server appearing as read-only in Evolution
2020-01-30 00:43:23 +01:00
Simon Ser
8937358ac1
Allow servers to return DAV capabilities in OPTIONS
2020-01-29 18:03:47 +01:00
Simon Ser
5f03e421d3
carddav: fix addressbook-home-set>href namespace
2020-01-29 17:41:28 +01:00
Simon Ser
1f509de404
carddav: honor address-data in addressbook-query
2020-01-27 10:30:19 +01:00
Simon Ser
29cccc7ef9
carddav: add query filter support in server
...
Closes: https://github.com/emersion/go-webdav/issues/18
2020-01-24 16:34:57 +01:00
Simon Ser
73b67b62b1
carddav: add client support for query filter
...
References: https://github.com/emersion/go-webdav/issues/18
2020-01-24 12:24:35 +01:00
Simon Ser
5ada08f6ab
carddav: add full query AST
2020-01-24 11:25:58 +01:00
Simon Ser
e56ab47c43
carddav: add negateCondition
2020-01-23 19:32:10 +01:00
Simon Ser
30977aac83
carddav: add matchType
2020-01-23 19:27:31 +01:00
Simon Ser
38b729ad9c
carddav: remove filter.MarshalText
...
This isn't necessary, we can just straight up let encoding/xml use the
string.
2020-01-23 19:21:00 +01:00
Simon Ser
94f47fa001
carddav: add limit support to addressbook-query
...
References: https://github.com/emersion/go-webdav/issues/18
2020-01-23 10:35:14 +01:00
Simon Ser
70c3bffdf3
carddav: add filter and limit XML definitions
2020-01-22 20:36:35 +01:00
Simon Ser
cd5945aace
carddav: add AddressBook{Query,MultiGet}.AllProp
2020-01-22 19:18:58 +01:00
Simon Ser
7e29f37bd8
carddav: add allprop and propname support to query and multiget in server
2020-01-22 18:59:01 +01:00
Simon Ser
0a251a8dfb
carddav: add AddressObject.{ModTime,ETag}
2020-01-22 15:35:36 +01:00
Simon Ser
2eb6e89979
carddav: add DELETE support to server
2020-01-22 15:16:41 +01:00
Simon Ser
aa750836d4
carddav: add PUT support to server
2020-01-22 15:14:49 +01:00
Simon Ser
bf97060e19
carddav: don't support PROPPATCH
...
PROPPATCH can't be used to change an address object's data. For now,
let's not support it.
2020-01-22 14:52:14 +01:00
Simon Ser
6d229f4e8a
webdav: add COPY support to server
2020-01-22 13:00:42 +01:00
Simon Ser
3268102d5a
webdav: add MOVE support to server
2020-01-22 11:43:36 +01:00
Simon Ser
6eeeccb96e
all: encode hrefs, replace hrefs with path in public API
...
Closes: https://github.com/emersion/go-webdav/issues/14
Closes: https://github.com/emersion/go-webdav/issues/16
2020-01-22 11:07:30 +01:00
Simon Ser
90fe8dedf7
internal: add PROPPATCH support to server
2020-01-21 23:18:27 +01:00
Simon Ser
e9e1f102de
webdav: add MKCOL support to server
2020-01-21 22:05:59 +01:00
Simon Ser
41b68829e8
webdav: add DELETE support to server
2020-01-21 21:46:01 +01:00
Simon Ser
7d6de88179
webdav: add support for PUT to server
2020-01-21 21:19:44 +01:00
Simon Ser
45774fe572
carddav: simplify variable names
2020-01-21 21:04:19 +01:00