# `ExDav.CalDav.Plug`
[🔗](https://git.sr.ht/~sbr/ExDav)

Top-level Plug that handles CalDAV requests under the `/dav` prefix.

Resource layout:

    /dav/                              — root collection
    /dav/principals/{user}/            — principal resource
    /dav/calendars/{user}/             — calendar-home-set
    /dav/calendars/{user}/{cal}/       — calendar collection
    /dav/calendars/{user}/{cal}/{obj}  — calendar object resource (.ics)

All non-`/dav/*` requests pass through unmodified.

Required opts:

  * `:storage` — module implementing `ExDav.Storage`
  * `:authenticator` — module implementing `ExDav.Authenticator`, or
    `{module, opts}` to pass adapter-specific opts

Example:

    plug ExDav.CalDav.Plug,
      storage: ExDav.Storage.Postgres,
      authenticator: {ExDav.Authenticator.Basic,
                      verify: {ExDav.Storage.Postgres, :authenticate}}

---

*Consult [api-reference.md](api-reference.md) for complete listing*
