Top-level Plug that handles CalDAV requests under the /dav prefix.
Resource layout (relative to mount point):
/principals/{user}/ — principal resource
/calendars/{user}/ — calendar-home-set
/calendars/{user}/{cal}/ — calendar collection
/calendars/{user}/{cal}/{obj} — calendar object resource (.ics)Can be mounted at any path via forward in a Phoenix router. All
<href> elements in responses are prefixed with conn.script_name so
they remain valid behind a prefix-routing proxy.
Required opts:
:storage— module implementingExDav.Storage:authenticator— module implementingExDav.Authenticator, or{module, opts}to pass adapter-specific opts
Optional opts:
:prefix— first path segment the plug claims (default"dav"). Use"caldav"if you want autodiscovery and request URLs to live under/caldav/...rather than the historical/dav/....
Example:
plug ExDav.CalDav.Plug,
storage: ExDav.Storage.Postgres,
authenticator: {ExDav.Authenticator.Basic,
verify: {ExDav.Storage.Postgres, :authenticate}}