-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ICloud calendar support #305
base: master
Are you sure you want to change the base?
Conversation
icloud calendar CalDav has three places that are implemented differently. 1. It can return empty string "" on status:Dav for a calendar. 2. for each .ics, it returns two props, one without resource type. 3. It doesn't use Dav namespace for props
Thanks for investigating this. I'd like to understand a bit better what is going on before merging this. Could you post a few examples of the HTTP responses you're getting from iCloud, that this patch fixes? In case it helps, I've added an extra level of debug verbosity, so that URL requests and responses are printed to Additional comments: I think it sounds reasonable to treat empty string as 404 status, but should add a comment that this behavior is a workaround for iCalendar. It seems strange to be adding in Injecting "DAV:" as default namespace may be reasonable, but I'm not sure the |
I have org-caldav working with Apple's icloud. This is not a patch, but I will show you what the problem(s) are and how to make this work. Note: I am using the latest Org source code and the latest org-caldav. So the main two issues as pointed out by EasyHard are url-dav.el not being able to handle empty property tags and the empty string for org-caldav-check-connection. =============== Here is what we get from iCloud:
However url-dav.el is expecting something along the lines of this:
Here is a parialsample from one of my requests:
I asked Grok the following: Is This Apple’s Fault?
Apple’s Choice: iCloud could include a (e.g., ) to indicate it’s an event, but it opts for minimalism—an empty —which is within spec but not the most informative approach. Fault?: Not really—it’s not a violation, but it’s an edge case that other servers (e.g., DAViCal, Zoho) handle differently by avoiding empty tags or returning 404/403 instead of 200 OK for unapplicable properties. The my/url-dav-process-DAV:prop code shown below addresses the issue with url-dav-process-DAV:prop found in url-dav.el =============== Regarding the empty string issue when performing the org-caldav-check-connection found in org-caldav.el The code (my/org-caldav-check-connection) shown below fixes edge case: Handles iCloud’s potential empty status string, converting it to 404 to match the original’s empty-calendar logic. =============== THE SOLUTION This is what you need to do to get Apple's iCloud to work. Until proper patches are provided to the source code, this is the simplest way to patch the existing code to get this functionality working. In your init.el or similar place add the following code:
Again in your init.el or similar place add the following code:
Optionally, (see attached code) if you want to use alarms in your org entries such as:
With the above entry, you will end up with a event in your Apple Calendar called in my case TODO-Pay Auto Insurance and it will have an alarm reminder of 7 days before and 1 day before. The Notes field will contain Amount Due $200.00. If you change the title on your Apple Calendar to DONE-Pay Auto Insurance, during the next sync, the org document will reflect that and a further sync will remove the DONE item from you Apple Calendar. Please note, alarms are currently not synced back to the org document, in other words they currently only go one way. |
icloud calendar CalDav has three places that are implemented differently.