Skip to content

Update timezone client to RFC 7808 (path-based) + working default server #31

Description

@karora

aCal's timezone client (service/UpdateTimezones) speaks the obsolete draft-douglass-timezone-service API (?action=list, ?action=get&tzid=…), built from R.string.bedeworkOrgTzUrl = http://www.bedework.org/.well-known/timezone (res/values/unlocalisable_strings.xml).

RFC 7808 (the published standard) is path-based: {context}/capabilities, {context}/zones, {context}/zones/{tzid}. Because aCal uses the old draft, it fails against compliant servers — so timezone data is effectively broken out of the box for anyone who hasn't hand-configured a server.

The current default (bedework) is unusable three ways: expired TLS cert, stale IANA 2020bj data, and a /.well-known/timezone that doesn't redirect to its /tzsvr service. (See comments for the full server survey.)

Tasks

  • Convert UpdateTimezones to RFC 7808:
    • list → GET {context}/zones (response: {"synctoken":…,"timezones":[{tzid,last-modified,etag},…]})
    • get → GET {context}/zones/{tzid} (response: VTIMEZONE)
    • read synctoken from the list response — it currently reads dtstamp, which RFC 7808 does not return.
    • treat tzServerBaseUrl as the service context path; discover it by following the /.well-known/timezone redirect (capability check via {context}/capabilities).
    • the existing timezones[] / tzid / last-modified parsing carries over.
  • Choose and verify a working public default server (move to https://). davical.mcmillan.nz/timezones is a confirmed-working RFC 7808 reference/test target with current 2026 data, but a personal server — pick a suitable public default (public DAViCal-go instance, or self-hosted).
  • Consider renaming bedeworkOrgTzUrl, which will no longer be bedework.

Acceptance criteria

  • UpdateTimezones fetches via RFC 7808 path endpoints and ignores the old ?action= form.
  • List parsing reads synctoken; per-zone last-modified change detection still works.
  • A fresh install fetches current timezones successfully with no manual configuration, against the new default.
  • Verified end-to-end against davical.mcmillan.nz/timezones.

Related: #4 (per-server timezone-service discovery, built on the same RFC 7808 client).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions