d0086bb433
The PROPFIND handlers (added in #153) handle the /caldav/{username}/ and /carddav/{username}/ prefixes returned by discovery, but do so via an expensive database call to distinguish usernames from UUIDs. The remaining handlers (PUT, GET, DELETE, REPORT, PROPPATCH) don't handle the prefix at all, causing 500 errors when standard clients (DAVx5, Apple Calendar, Thunderbird) follow the discovery URLs. This commit: 1. Adds a strip_username_prefix() helper that uses a UUID parse check to distinguish collection IDs from usernames (no DB call needed). 2. Applies it to PUT, GET, DELETE, REPORT, and PROPPATCH handlers in both caldav_handler.rs and carddav_handler.rs. 3. Refactors PROPFIND in both files to use the same UUID heuristic for consistency, avoiding unnecessary database queries. Includes 7 unit tests for the helper function.