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