# 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