Commit Graph

47 Commits

Author SHA1 Message Date
Simon Ser
7eac113594 caldav, carddav: simplify with internal.IsNotFound 2022-05-03 20:15:21 +02:00
Simon Ser
a419541835 caldav, carddav: stop hardcoding current user principal
Add Backend.CurrentUserPrincipal to fetch the current user
principal.
2022-05-03 19:32:46 +02:00
Simon Ser
c7b85859a2 caldav, carddav: stop exposing home set props
These are principal properties, now handled by webdav.ServePrincipal.
2022-05-03 18:54:41 +02:00
Simon Ser
c2b2f073cc webdav: allow serving extra props in ServePrincipal 2022-05-03 18:38:29 +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
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
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
842acb3647
carddav: add Client.PutAddressObject 2020-02-12 19:47:16 +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
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
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
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
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
0469c3d389
all: add basic docs 2020-01-21 21:01:18 +01:00
Simon Ser
3a61646ab4
carddav: add current-user-principal to server 2020-01-20 10:56:25 +01:00
Simon Ser
c4718a3a49
carddav: add addressbook-home-set to server 2020-01-19 15:10:54 +01:00
Simon Ser
6bac674701
carddav: add max-resource-size to serve 2020-01-19 15:06:09 +01:00
Simon Ser
238e72b73e
carddav: add addressbook-supprted-address-data to server 2020-01-19 15:00:40 +01:00
Simon Ser
edfc2804b5
carddav: add displayname and addressbook-description to server 2020-01-19 14:53:58 +01:00
Simon Ser
797b2f8fc5
carddav: add address-data to server responses 2020-01-19 12:08:53 +01:00
Simon Ser
4a2a520522
carddav: add server support for REPORT addressbook-query 2020-01-19 12:02:18 +01:00
Simon Ser
f3f1c8b58a
internal: introduce DecodeXMLRequest, ServeXML and ServeMultistatus 2020-01-19 11:12:45 +01:00
Simon Ser
60e5d57cda
carddav: implement REPORT addressbook-multiget 2020-01-19 11:05:56 +01:00
Simon Ser
34b2ebf940
all: use variables for xml.Name values 2020-01-17 17:09:23 +01:00
Simon Ser
557972089c
carddav: add very basic server implementation 2020-01-17 16:59:29 +01:00