vstorage 0.2.1

Common API for various icalendar/vcard storages.
Documentation
# vstorage

[Docs](https://docs.rs/vstorage/) |
[Source](https://git.sr.ht/~whynothugo/vstorage) |
[Issues](https://todo.sr.ht/~whynothugo/pimsync) |
[Patches](https://lists.sr.ht/~whynothugo/vdirsyncer-devel) |
[Chat](irc://ircs.libera.chat:6697/#pimutils)

Several storage implementations for iCalendar and vCard items with a common
API. This crate is part of the [`pimsync`
project](https://git.sr.ht/~whynothugo/pimsync).

Documentation for this library can be generated with `cargo doc`. The
documentation for the stable releases is available at [crates.io].

[crates.io]: https://docs.rs/vstorage/

## Thanks

Special thanks to the [NLnet foundation][nlnet] and the [NGI Zero Entrust
program][ngi0] of the European Commission, which helped secure funding for the
work on [pimsync] and related projects such a this one.

[nlnet]: https://nlnet.nl/project/vdirsyncer/
[ngi0]: https://www.ngi.eu/ngi-projects/ngi-zero-entrust/
[pimsync]: https://sr.ht/~whynothugo/pimsync

## Contributing

### Testing the JMAP implementation

Use [Cyrus's test server][test-server] for these tests:

[test-server]: https://github.com/cyrusimap/cyrus-docker-test-server

```sh
docker run -it \
    -p 8080:8080 -p 8143:8143 -p 8110:8110 -p 8024:8024 -p 8001:8001 \
    cyrus-testserver
```

This runs both a JMAP and CardDAV server:

- JMAP endpoint: `http://localhost:8080/jmap`
- CardDAV endpoint: `http://localhost:8080/dav/addressbooks`
- CalDAV endpoint: `http://localhost:8080/dav/calendars`
- Test credentials: username `user1`, no password.

Run tests via

```sh
cargo test --features jmap_test --  jmap_tests::
```

Manually interact with the test server via:

```sh
# Check JMAP session
curl -u user1: -H "Content-Type: application/json" \
  -X GET http://localhost:8080/jmap/.well-known/jmap

# List CardDAV collections
curl -u user1: -X PROPFIND \
  -H "Content-Type: text/xml" \
  -H "Depth: 1" \
  http://localhost:8080/dav/addressbooks/
```

Or use `davcli` for the latter.

## Licence

Copyright 2023-2024 Hugo Osvaldo Barrera  
Licensed under the EUPL-1.2  
SPDX-License-Identifier: EUPL-1.2