1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
// Copyright 2023-2024 Hugo Osvaldo Barrera
//
// SPDX-License-Identifier: ISC
//! Names of common dav attributes and properties.
use cratePropertyName;
/// Namespace for properties defined in the WebDAV specifications.
pub const DAV: &str = "DAV:";
/// Namespace for properties defined in the CalDAV specifications.
pub const CALDAV: &str = "urn:ietf:params:xml:ns:caldav";
/// Namespace for properties defined in the CardDAV specifications.
pub const CARDDAV: &str = "urn:ietf:params:xml:ns:carddav";
/// Namespace for properties defined by Apple / ical.
pub const APPLE: &str = "http://apple.com/ns/ical/";
// WEBDAV PROPERTIES ==========================================================
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.3>
pub const COLLECTION: PropertyName = new;
/// Property name for collections display name.
///
/// Defined in: <https://www.rfc-editor.org/rfc/rfc4918#section-15.2>
///
/// Also, from <https://www.rfc-editor.org/rfc/rfc3744#section-4>:
///
/// > A principal MUST have a non-empty DAV:displayname property
pub const DISPLAY_NAME: PropertyName = new;
/// Contains the Content-Type header value.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-15.5>
pub const GETCONTENTTYPE: PropertyName = new;
/// Contains the etag header value.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-15.6>
pub const GETETAG: PropertyName = new;
/// An URI or relative reference.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.7>
pub const HREF: PropertyName = new;
/// Contains types for a resource. Types can be from any namespace.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-15.9>
pub const RESOURCETYPE: PropertyName = new;
/// A response container.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.24>
pub const RESPONSE: PropertyName = new;
/// Holds a single HTTP status-line.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.28>
pub const STATUS: PropertyName = new;
/// MUST contain one prop XML element and one status XML element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.22>
pub const PROPSTAT: PropertyName = new;
/// Reports supported by a resource.
///
/// From: <https://www.rfc-editor.org/rfc/rfc3253#section-3.1.5>
pub const SUPPORTED_REPORT_SET: PropertyName = new;
/// Report use to synchronise data. It includes a `sync-token`.
///
/// From: <https://www.rfc-editor.org/rfc/rfc6578#section-3.2>
pub const SYNC_COLLECTION: PropertyName = new;
/// Synchronisation token provided by a server.
///
/// From: <https://www.rfc-editor.org/rfc/rfc6578#section-3.2>
pub const SYNC_TOKEN: PropertyName = new;
/// Scope of a synchronisation report.
///
/// From: <https://www.rfc-editor.org/rfc/rfc6578#section-6.3>
pub const SYNC_LEVEL: PropertyName = new;
/// From: <https://www.rfc-editor.org/rfc/rfc5397>
pub const CURRENT_USER_PRINCIPAL: PropertyName = new;
/// DAV prop (property) element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.18>
pub const PROP: PropertyName = new;
/// DAV propfind (find property) element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.20>
pub const PROPFIND: PropertyName = new;
/// DAV allprop (all properties) element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.2>
pub const ALLPROP: PropertyName = new;
/// DAV update element for PROPPATCH.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.19>
pub const PROPERTYUPDATE: PropertyName = new;
/// DAV set element for PROPPATCH.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.26>
pub const SET: PropertyName = new;
/// DAV remove element for PROPPATCH.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4918#section-14.23>
pub const REMOVE: PropertyName = new;
/// Extended MKCOL element for creating collections with properties.
///
/// From: <https://www.rfc-editor.org/rfc/rfc5689#section-5.1>
pub const MKCOL: PropertyName = new;
// CALENDAR PROPERTIES ========================================================
/// Resource type of a calendar collection.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-9.1>
pub const CALENDAR: PropertyName = new;
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-5.2.1>
pub const CALENDAR_DESCRIPTION: PropertyName = new;
/// Defined in <https://www.rfc-editor.org/rfc/rfc4791#section-6.2.1>
pub const CALENDAR_HOME_SET: PropertyName = new;
/// A calendar's colour.
///
/// Not a formally standardised property, but is relatively widespread. The value of this
/// property should be an unescaped hex value with a leading pound sign (e.g. `#ff0000`).
pub const CALENDAR_COLOUR: PropertyName = new;
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-9.6>
pub const CALENDAR_DATA: PropertyName = new;
/// Sorting order for calendars.
///
/// Not documented anywhere. Supported by various clients and servers.
pub const CALENDAR_ORDER: PropertyName = new;
/// Identifies the address of a principal resource.
///
/// From: <https://datatracker.ietf.org/doc/html/rfc6638#section-2.4.1>
pub const CALENDAR_USER_ADDRESS_SET: PropertyName =
new;
/// Supported calendar component.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-5.2.3>
pub const SUPPORTED_CALENDAR_COMPONENT: PropertyName =
new;
/// Supported component types in a calendar.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-5.2.3>
pub const SUPPORTED_CALENDAR_COMPONENT_SET: PropertyName =
new;
/// Supported calendar data types in a calendar.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-5.2.2>
pub const SUPPORTED_CALENDAR_DATA: PropertyName =
new;
/// Calendar component type element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-9.1>
pub const COMP: PropertyName = new;
/// Calendar query element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-7.8>
pub const CALENDAR_QUERY: PropertyName = new;
/// Filter element for calendar queries.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-9.7>
pub const FILTER: PropertyName = new;
/// Component filter element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-9.7.1>
pub const COMP_FILTER: PropertyName = new;
/// Time range filter element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-9.9>
pub const TIME_RANGE: PropertyName = new;
/// Calendar multiget report element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc4791#section-7.9>
pub const CALENDAR_MULTIGET: PropertyName = new;
// ADDRESS BOOK PROPERTIES ====================================================
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-10.1>
pub const ADDRESSBOOK: PropertyName = new;
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-6.2.1>
pub const ADDRESSBOOK_DESCRIPTION: PropertyName =
new;
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-7.1.1>
pub const ADDRESSBOOK_HOME_SET: PropertyName =
new;
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-10.4>
pub const ADDRESS_DATA: PropertyName = new;
/// Address book multiget report element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-8.7>
pub const ADDRESSBOOK_MULTIGET: PropertyName = new;
/// Address book query report element.
///
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-8.6>
pub const ADDRESSBOOK_QUERY: PropertyName = new;
/// Filter element for address book queries.
///
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-10.5>
pub const ADDRESSBOOK_FILTER: PropertyName = new;
/// Property filter element for address book queries.
///
/// From: <https://www.rfc-editor.org/rfc/rfc6352#section-10.5.1>
pub const PROP_FILTER: PropertyName = new;