EWebDAVSession

EWebDAVSession — A WebDAV, CalDAV and CardDAV session

Functions

EWebDAVResource * e_webdav_resource_new ()
EWebDAVResource * e_webdav_resource_copy ()
void e_webdav_resource_free ()
gboolean (*EWebDAVPropstatTraverseFunc) ()
EWebDAVPropertyChange * e_webdav_property_change_new_set ()
EWebDAVPropertyChange * e_webdav_property_change_new_remove ()
EWebDAVPropertyChange * e_webdav_property_change_copy ()
void e_webdav_property_change_free ()
EWebDAVPrivilege * e_webdav_privilege_new ()
EWebDAVPrivilege * e_webdav_privilege_copy ()
void e_webdav_privilege_free ()
EWebDAVAccessControlEntry * e_webdav_access_control_entry_new ()
EWebDAVAccessControlEntry * e_webdav_access_control_entry_copy ()
void e_webdav_access_control_entry_free ()
void e_webdav_access_control_entry_append_privilege ()
GSList * e_webdav_access_control_entry_get_privileges ()
EWebDAVSession * e_webdav_session_new ()
const gchar * e_webdav_session_get_last_dav_error_code ()
gboolean e_webdav_session_get_last_dav_error_is_permission ()
SoupRequestHTTP * e_webdav_session_new_request ()
gboolean e_webdav_session_replace_with_detailed_error ()
gchar * e_webdav_session_ensure_full_uri ()
gboolean e_webdav_session_options_sync ()
gboolean e_webdav_session_post_sync ()
gboolean e_webdav_session_post_with_content_type_sync ()
gboolean e_webdav_session_propfind_sync ()
gboolean e_webdav_session_proppatch_sync ()
gboolean e_webdav_session_report_sync ()
gboolean e_webdav_session_mkcol_sync ()
gboolean e_webdav_session_mkcol_addressbook_sync ()
gboolean e_webdav_session_mkcalendar_sync ()
gboolean e_webdav_session_get_sync ()
gboolean e_webdav_session_get_data_sync ()
gboolean e_webdav_session_put_sync ()
gboolean e_webdav_session_put_data_sync ()
gboolean e_webdav_session_delete_sync ()
gboolean e_webdav_session_copy_sync ()
gboolean e_webdav_session_move_sync ()
gboolean e_webdav_session_lock_sync ()
gboolean e_webdav_session_refresh_lock_sync ()
gboolean e_webdav_session_unlock_sync ()
gboolean e_webdav_session_traverse_multistatus_response ()
gboolean e_webdav_session_traverse_mkcol_response ()
gboolean e_webdav_session_traverse_mkcalendar_response ()
gboolean e_webdav_session_getctag_sync ()
gboolean e_webdav_session_list_sync ()
gboolean e_webdav_session_update_properties_sync ()
gboolean e_webdav_session_lock_resource_sync ()
gboolean e_webdav_session_acl_sync ()
gboolean e_webdav_session_get_supported_privilege_set_sync ()
gboolean e_webdav_session_get_current_user_privilege_set_sync ()
gboolean e_webdav_session_get_acl_sync ()
gboolean e_webdav_session_get_acl_restrictions_sync ()
gboolean e_webdav_session_get_principal_collection_set_sync ()
gboolean e_webdav_session_set_acl_sync ()
gboolean e_webdav_session_principal_property_search_sync ()
gchar * e_webdav_session_util_maybe_dequote ()
void e_webdav_session_util_free_privileges ()
gboolean e_webdav_session_util_item_href_equal ()

Types and Values

Object Hierarchy

    GBoxed
    ├── EWebDAVAccessControlEntry
    ├── EWebDAVPrivilege
    ├── EWebDAVPropertyChange
    ╰── EWebDAVResource
    GObject
    ╰── SoupSession
        ╰── ESoupSession
            ╰── EWebDAVSession

Includes

#include <libedataserver/libedataserver.h>

Description

The EWebDAVSession is a class to work with WebDAV (RFC 4918), CalDAV (RFC 4791) or CardDAV (RFC 6352) servers, providing API for common requests/responses, on top of an ESoupSession. It supports also Access Control Protocol (RFC 3744).

Functions

e_webdav_resource_new ()

EWebDAVResource *
e_webdav_resource_new (EWebDAVResourceKind kind,
                       guint32 supports,
                       const gchar *href,
                       const gchar *etag,
                       const gchar *display_name,
                       const gchar *content_type,
                       gsize content_length,
                       glong creation_date,
                       glong last_modified,
                       const gchar *description,
                       const gchar *color);

Some values of the resource are not always valid, depending on the kind , but also whether server stores such values and whether it had been asked for them to be fetched.

The etag for E_WEBDAV_RESOURCE_KIND_COLLECTION can be a change tag instead.

Parameters

kind

an EWebDAVResourceKind of the resource

 

supports

bit-or of EWebDAVResourceSupports values

 

href

href of the resource

 

etag

optional ETag of the resource, or NULL.

[nullable]

display_name

optional display name of the resource, or NULL.

[nullable]

content_type

optional Content-Type of the resource, or NULL.

[nullable]

content_length

optional Content-Length of the resource, or 0

 

creation_date

optional date of creation of the resource, or 0

 

last_modified

optional last modified time of the resource, or 0

 

description

optional description of the resource, or NULL.

[nullable]

color

optional color of the resource, or NULL.

[nullable]

Returns

A newly created EWebDAVResource, prefilled with given values. Free it with e_webdav_resource_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_resource_copy ()

EWebDAVResource *
e_webdav_resource_copy (const EWebDAVResource *src);

Parameters

src

an EWebDAVResource to make a copy of.

[nullable]

Returns

A new EWebDAVResource prefilled with the same values as src , or NULL, when src is NULL. Free it with e_webdav_resource_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_resource_free ()

void
e_webdav_resource_free (gpointer ptr);

Frees an EWebDAVResource previously created with e_webdav_resource_new() or e_webdav_resource_copy(). The function does nothing, if ptr is NULL.

Parameters

ptr

an EWebDAVResource.

[nullable]

Since: 3.26


EWebDAVPropstatTraverseFunc ()

gboolean
(*EWebDAVPropstatTraverseFunc) (EWebDAVSession *webdav,
                                xmlNode *prop_node,
                                const SoupURI *request_uri,
                                const gchar *href,
                                guint status_code,
                                gpointer user_data);

A callback function for e_webdav_session_propfind_sync(), e_webdav_session_report_sync() and other XML response with DAV:propstat elements traversal functions.

The prop_node points to the actual property (prop) node and it can be examined with e_xml_find_child(), e_xml_find_children_nodes() and other provided XML helper functions.

Parameters

webdav

an EWebDAVSession

 

prop_node

an xmlNode

 

request_uri

a SoupURI, containing the request URI, maybe redirected by the server

 

href

a full URI to which the property belongs, or NULL, when not found.

[nullable]

status_code

an HTTP status code for this property

 

user_data

user data, as passed to e_webdav_session_propfind_sync()

 

Returns

TRUE to continue traversal of the returned response, FALSE otherwise.

Since: 3.26


e_webdav_property_change_new_set ()

EWebDAVPropertyChange *
e_webdav_property_change_new_set (const gchar *ns_uri,
                                  const gchar *name,
                                  const gchar *value);

Creates a new EWebDAVPropertyChange of kind E_WEBDAV_PROPERTY_SET, which is used to modify or set the property value. The value is a string representation of the value to store. It can be NULL, but it means an empty value, not to remove it. To remove property use e_webdav_property_change_new_remove() instead.

Parameters

ns_uri

namespace URI of the property

 

name

name of the property

 

value

value of the property, or NULL for empty value.

[nullable]

Returns

A new EWebDAVPropertyChange. Free it with e_webdav_property_change_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_property_change_new_remove ()

EWebDAVPropertyChange *
e_webdav_property_change_new_remove (const gchar *ns_uri,
                                     const gchar *name);

Creates a new EWebDAVPropertyChange of kind E_WEBDAV_PROPERTY_REMOVE, which is used to remove the given property. To change property value use e_webdav_property_change_new_set() instead.

Parameters

ns_uri

namespace URI of the property

 

name

name of the property

 

Returns

A new EWebDAVPropertyChange. Free it with e_webdav_property_change_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_property_change_copy ()

EWebDAVPropertyChange *
e_webdav_property_change_copy (const EWebDAVPropertyChange *src);

Parameters

src

an EWebDAVPropertyChange to make a copy of.

[nullable]

Returns

A new EWebDAVPropertyChange prefilled with the same values as src , or NULL, when src is NULL. Free it with e_webdav_property_change_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_property_change_free ()

void
e_webdav_property_change_free (gpointer ptr);

Frees an EWebDAVPropertyChange previously created with e_webdav_property_change_new_set(), e_webdav_property_change_new_remove() or or e_webdav_property_change_copy(). The function does nothing, if ptr is NULL.

Parameters

ptr

an EWebDAVPropertyChange.

[nullable]

Since: 3.26


e_webdav_privilege_new ()

EWebDAVPrivilege *
e_webdav_privilege_new (const gchar *ns_uri,
                        const gchar *name,
                        const gchar *description,
                        EWebDAVPrivilegeKind kind,
                        EWebDAVPrivilegeHint hint);

Describes one privilege entry. The hint can be E_WEBDAV_PRIVILEGE_HINT_UNKNOWN for privileges which are not known to the EWebDAVSession. It's possible, because the servers can define their own privileges. The hint is also tried to pair with known hints when it's E_WEBDAV_PRIVILEGE_HINT_UNKNOWN.

The ns_uri and name can be NULL only if the hint is one of the known privileges. Otherwise it's an error to pass either of the two as NULL.

Parameters

ns_uri

a namespace URI.

[nullable]

name

element name.

[nullable]

description

human read-able description, or NULL.

[nullable]

kind

an EWebDAVPrivilegeKind

 

hint

an EWebDAVPrivilegeHint

 

Returns

A newly created EWebDAVPrivilege, prefilled with given values. Free it with e_webdav_privilege_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_privilege_copy ()

EWebDAVPrivilege *
e_webdav_privilege_copy (const EWebDAVPrivilege *src);

Parameters

src

an EWebDAVPrivilege to make a copy of.

[nullable]

Returns

A new EWebDAVPrivilege prefilled with the same values as src , or NULL, when src is NULL. Free it with e_webdav_privilege_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_privilege_free ()

void
e_webdav_privilege_free (gpointer ptr);

Frees an EWebDAVPrivilege previously created with e_webdav_privilege_new() or e_webdav_privilege_copy(). The function does nothing, if ptr is NULL.

Parameters

ptr

an EWebDAVPrivilege.

[nullable]

Since: 3.26


e_webdav_access_control_entry_new ()

EWebDAVAccessControlEntry *
e_webdav_access_control_entry_new (EWebDAVACEPrincipalKind principal_kind,
                                   const gchar *principal_href,
                                   guint32 flags,
                                   const gchar *inherited_href);

Describes one Access Control Entry (ACE).

The flags should always contain either E_WEBDAV_ACE_FLAG_GRANT or E_WEBDAV_ACE_FLAG_DENY value.

Use e_webdav_access_control_entry_append_privilege() to add respective privileges to the entry.

Parameters

principal_kind

an EWebDAVACEPrincipalKind

 

principal_href

principal href; should be set only if principal_kind is E_WEBDAV_ACE_PRINCIPAL_HREF .

[nullable]

flags

bit-or of EWebDAVACEFlag values

 

inherited_href

href of the resource from which inherits; should be set only if flags contain E_WEBDAV_ACE_FLAG_INHERITED.

[nullable]

Returns

A newly created EWebDAVAccessControlEntry, prefilled with given values. Free it with e_webdav_access_control_entry_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_access_control_entry_copy ()

EWebDAVAccessControlEntry *
e_webdav_access_control_entry_copy (const EWebDAVAccessControlEntry *src);

Parameters

src

an EWebDAVAccessControlEntry to make a copy of.

[nullable]

Returns

A new EWebDAVAccessControlEntry prefilled with the same values as src , or NULL, when src is NULL. Free it with e_webdav_access_control_entry_free(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_access_control_entry_free ()

void
e_webdav_access_control_entry_free (gpointer ptr);

Frees an EWebDAVAccessControlEntry previously created with e_webdav_access_control_entry_new() or e_webdav_access_control_entry_copy(). The function does nothing, if ptr is NULL.

Parameters

ptr

an EWebDAVAccessControlEntry.

[nullable]

Since: 3.26


e_webdav_access_control_entry_append_privilege ()

void
e_webdav_access_control_entry_append_privilege
                               (EWebDAVAccessControlEntry *ace,
                                EWebDAVPrivilege *privilege);

Appends a new privilege to the list of privileges for the ace . The function assumes ownership of the privilege , which is freed together with the ace .

Parameters

ace

an EWebDAVAccessControlEntry

 

privilege

an EWebDAVPrivilege.

[transfer full]

Since: 3.26


e_webdav_access_control_entry_get_privileges ()

GSList *
e_webdav_access_control_entry_get_privileges
                               (EWebDAVAccessControlEntry *ace);

Parameters

Returns

A GSList of EWebDAVPrivilege with the list of privileges for the ace . The reurned GSList, together with its data is owned by the ace .

[element-type EWebDAVPrivilege][transfer none]

Since: 3.26


e_webdav_session_new ()

EWebDAVSession *
e_webdav_session_new (ESource *source);

Creates a new EWebDAVSession associated with given source . The EWebDAVSession uses an ESourceWebdav extension on certain places when it's defined for the source .

Parameters

source

an ESource

 

Returns

a new EWebDAVSession; free it with g_object_unref(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_session_get_last_dav_error_code ()

const gchar *
e_webdav_session_get_last_dav_error_code
                               (EWebDAVSession *webdav);

Returns last DAV error code as returned by the server. Each recognized code is enclosed in "[]" in the returned string, to be able to distinguish between them, in case the server returned multiple codes.

The string is valid until the next request is executed.

Parameters

webdav

an EWebDAVSession

 

Returns

a DAV error from the last request, or NULL, when no error had been recognized.

[transfer none]

Since: 3.36


e_webdav_session_get_last_dav_error_is_permission ()

gboolean
e_webdav_session_get_last_dav_error_is_permission
                               (EWebDAVSession *webdav);

Parameters

webdav

an EWebDAVSession

 

Returns

whether the last recognized DAV error code contains an error which means that user doesn't have permission for the operation. If there is no DAV error stored, then returns FALSE.

Since: 3.36


e_webdav_session_new_request ()

SoupRequestHTTP *
e_webdav_session_new_request (EWebDAVSession *webdav,
                              const gchar *method,
                              const gchar *uri,
                              GError **error);

Parameters

webdav

an EWebDAVSession

 

method

an HTTP method

 

uri

URI to create the request for, or NULL to read from ESource.

[nullable]

error

return location for a GError, or NULL

 

Returns

A new SoupRequestHTTP for the given uri , or, when NULL, for the URI stored in the associated ESource. Free the returned structure with g_object_unref(), when no longer needed.

[transfer full]

Since: 3.26


e_webdav_session_replace_with_detailed_error ()

gboolean
e_webdav_session_replace_with_detailed_error
                               (EWebDAVSession *webdav,
                                SoupRequestHTTP *request,
                                const GByteArray *response_data,
                                gboolean ignore_multistatus,
                                const gchar *prefix,
                                GError **inout_error);

Tries to read detailed error information from response_data , if not provided, then from request 's response_body. If the detailed error cannot be found, then does nothing, otherwise frees the content of inout_error , if any, and then populates it with an error message prefixed with prefix .

The prefix might be of form "Failed to something", because the resulting error message will be: "Failed to something: HTTP error code XXX (reason_phrase): detailed_error". When prefix is NULL, the error message will be: "Failed with HTTP error code XXX (reason phrase): detailed_error".

As the caller might not be interested in errors, also the inout_error can be NULL, in which case the function does nothing.

Parameters

webdav

an EWebDAVSession

 

request

a SoupRequestHTTP

 

response_data

received response data, or NULL.

[nullable]

ignore_multistatus

whether to ignore multistatus responses

 

prefix

error message prefix, used when replacing, or NULL.

[nullable]

inout_error

a GError variable to replace content to, or NULL.

[inout][nullable][transfer full]

Returns

Whether any detailed error had been recognized.

Since: 3.26


e_webdav_session_ensure_full_uri ()

gchar *
e_webdav_session_ensure_full_uri (EWebDAVSession *webdav,
                                  const SoupURI *request_uri,
                                  const gchar *href);

Converts possibly path-only href into a full URI under the request_uri . When the request_uri is NULL, the URI defined in associated ESource is used instead, taken from the ESourceWebdav extension, if defined.

Free the returned pointer with g_free(), when no longer needed.

Parameters

webdav

an EWebDAVSession

 

request_uri

a SoupURI to which the href belongs, or NULL.

[nullable]

href

a possibly path-only href

 

Returns

The href as a full URI.

[transfer full]

Since: 3.24


e_webdav_session_options_sync ()

gboolean
e_webdav_session_options_sync (EWebDAVSession *webdav,
                               const gchar *uri,
                               GHashTable **out_capabilities,
                               GHashTable **out_allows,
                               GCancellable *cancellable,
                               GError **error);

Issues OPTIONS request on the provided uri , or, in case it's NULL, on the URI defined in associated ESource.

The out_capabilities contains a set of returned capabilities. Some known are defined as E_WEBDAV_CAPABILITY_CLASS_1, and so on. The 'value' of the GHashTable doesn't have any particular meaning and the strings are compared case insensitively. Free the hash table with g_hash_table_destroy(), when no longer needed. The returned value can be NULL on success, it's when the server doesn't provide the information.

The out_allows contains a set of allowed methods returned by the server. Some known are defined as SOUP_METHOD_OPTIONS, and so on. The 'value' of the GHashTable doesn't have any particular meaning and the strings are compared case insensitively. Free the hash table with g_hash_table_destroy(), when no longer needed. The returned value can be NULL on success, it's when the server doesn't provide the information.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

out_capabilities

return location for DAV capabilities.

[out][transfer full]

out_allows

return location for allowed operations.

[out][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_post_sync ()

gboolean
e_webdav_session_post_sync (EWebDAVSession *webdav,
                            const gchar *uri,
                            const gchar *data,
                            gsize data_length,
                            gchar **out_content_type,
                            GByteArray **out_content,
                            GCancellable *cancellable,
                            GError **error);

Issues POST request on the provided uri , or, in case it's NULL, on the URI defined in associated ESource. The Content-Type of the data is set to application/xml. To POST the data with a different Content-Type use e_webdav_session_post_with_content_type_sync().

The optional out_content_type can be used to get content type of the response. Free it with g_free(), when no longer needed.

The optional out_content can be used to get actual result content. Free it with g_byte_array_free(), when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

data

data to post to the server

 

data_length

length of data , or -1, when data is NUL-terminated

 

out_content_type

return location for response Content-Type, or NULL.

[nullable][transfer full]

out_content

return location for response content, or NULL.

[nullable][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_post_with_content_type_sync ()

gboolean
e_webdav_session_post_with_content_type_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                const gchar *data,
                                gsize data_length,
                                const gchar *in_content_type,
                                gchar **out_content_type,
                                GByteArray **out_content,
                                GCancellable *cancellable,
                                GError **error);

Issues POST request on the provided uri , or, in case it's NULL, on the URI defined in associated ESource.

The optional out_content_type can be used to get content type of the response. Free it with g_free(), when no longer needed.

The optional out_content can be used to get actual result content. Free it with g_byte_array_free(), when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

data

data to post to the server

 

data_length

length of data , or -1, when data is NUL-terminated

 

in_content_type

a Content-Type of the data , or NULL, to use application/xml.

[nullable]

out_content_type

return location for response Content-Type, or NULL.

[nullable][transfer full]

out_content

return location for response content, or NULL.

[nullable][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.32


e_webdav_session_propfind_sync ()

gboolean
e_webdav_session_propfind_sync (EWebDAVSession *webdav,
                                const gchar *uri,
                                const gchar *depth,
                                const EXmlDocument *xml,
                                EWebDAVPropstatTraverseFunc func,
                                gpointer func_user_data,
                                GCancellable *cancellable,
                                GError **error);

Issues PROPFIND request on the provided uri , or, in case it's NULL, on the URI defined in associated ESource. On success, calls func for each returned DAV:propstat.

The xml can be NULL, in which case the server should behave like DAV:allprop request.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

depth

requested depth, can be one of E_WEBDAV_DEPTH_THIS, E_WEBDAV_DEPTH_THIS_AND_CHILDREN or E_WEBDAV_DEPTH_INFINITY

 

xml

the request itself, as an EXmlDocument, the root element should be DAV:propfind, or NULL.

[nullable]

func

an EWebDAVPropstatTraverseFunc function to call for each DAV:propstat in the multistatus response.

[scope call]

func_user_data

user data passed to func .

[closure func]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_proppatch_sync ()

gboolean
e_webdav_session_proppatch_sync (EWebDAVSession *webdav,
                                 const gchar *uri,
                                 const EXmlDocument *xml,
                                 GCancellable *cancellable,
                                 GError **error);

Issues PROPPATCH request on the provided uri , or, in case it's NULL, on the URI defined in associated ESource, with the changes . The order of requested changes inside xml is significant, unlike on other places.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

xml

an EXmlDocument with request changes, its root element should be DAV:propertyupdate

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_report_sync ()

gboolean
e_webdav_session_report_sync (EWebDAVSession *webdav,
                              const gchar *uri,
                              const gchar *depth,
                              const EXmlDocument *xml,
                              EWebDAVPropstatTraverseFunc func,
                              gpointer func_user_data,
                              gchar **out_content_type,
                              GByteArray **out_content,
                              GCancellable *cancellable,
                              GError **error);

Issues REPORT request on the provided uri , or, in case it's NULL, on the URI defined in associated ESource. On success, calls func for each returned DAV:propstat.

The report can result in a multistatus response, but also to raw data. In case the func is provided and the result is a multistatus response, then it is traversed using this func .

The optional out_content_type can be used to get content type of the response. Free it with g_free(), when no longer needed.

The optional out_content can be used to get actual result content. Free it with g_byte_array_free(), when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

depth

requested depth, can be NULL, then no Depth header is sent.

[nullable]

xml

the request itself, as an EXmlDocument

 

func

an EWebDAVPropstatTraverseFunc function to call for each DAV:propstat in the multistatus response, or NULL.

[nullable][scope call]

func_user_data

user data passed to func .

[closure func]

out_content_type

return location for response Content-Type, or NULL.

[nullable][transfer full]

out_content

return location for response content, or NULL.

[nullable][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_mkcol_sync ()

gboolean
e_webdav_session_mkcol_sync (EWebDAVSession *webdav,
                             const gchar *uri,
                             GCancellable *cancellable,
                             GError **error);

Creates a new generic collection identified by uri on the server. To create specific collections use e_webdav_session_mkcalendar_sync() or e_webdav_session_mkcol_addressbook_sync().

Parameters

webdav

an EWebDAVSession

 

uri

URI of the collection to create

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_mkcol_addressbook_sync ()

gboolean
e_webdav_session_mkcol_addressbook_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                const gchar *display_name,
                                const gchar *description,
                                GCancellable *cancellable,
                                GError **error);

Creates a new address book collection identified by uri on the server.

Note that CardDAV RFC 6352 Section 5.2 forbids to create address book resources under other address book resources (no nested address books are allowed).

Parameters

webdav

an EWebDAVSession

 

uri

URI of the collection to create

 

display_name

a human-readable display name to set, or NULL.

[nullable]

description

a human-readable description of the address book, or NULL.

[nullable]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_mkcalendar_sync ()

gboolean
e_webdav_session_mkcalendar_sync (EWebDAVSession *webdav,
                                  const gchar *uri,
                                  const gchar *display_name,
                                  const gchar *description,
                                  const gchar *color,
                                  guint32 supports,
                                  GCancellable *cancellable,
                                  GError **error);

Creates a new calendar collection identified by uri on the server. The supports defines what component types can be stored into the created calendar collection. Only E_WEBDAV_RESOURCE_SUPPORTS_NONE and values related to iCalendar content can be used here. Using E_WEBDAV_RESOURCE_SUPPORTS_NONE means that everything is supported.

Note that CalDAV RFC 4791 Section 4.2 forbids to create calendar resources under other calendar resources (no nested calendars are allowed).

Parameters

webdav

an EWebDAVSession

 

uri

URI of the collection to create

 

display_name

a human-readable display name to set, or NULL.

[nullable]

description

a human-readable description of the calendar, or NULL.

[nullable]

color

a color to set, in format "#RRGGBB", or NULL.

[nullable]

supports

a bit-or of EWebDAVResourceSupports values

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_get_sync ()

gboolean
e_webdav_session_get_sync (EWebDAVSession *webdav,
                           const gchar *uri,
                           gchar **out_href,
                           gchar **out_etag,
                           GOutputStream *out_stream,
                           GCancellable *cancellable,
                           GError **error);

Reads a resource identified by uri from the server and writes it to the stream . The URI cannot reference a collection.

Free returned pointer of out_href and out_etag , if not NULL, with g_free(), when no longer needed.

The e_webdav_session_get_data_sync() can be used to read the resource data directly to memory.

Parameters

webdav

an EWebDAVSession

 

uri

URI of the resource to read

 

out_href

optional return location for href of the resource, or NULL.

[out][nullable][transfer full]

out_etag

optional return location for etag of the resource, or NULL.

[out][nullable][transfer full]

out_stream

a GOutputStream to write data to.

[out caller-allocates]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_get_data_sync ()

gboolean
e_webdav_session_get_data_sync (EWebDAVSession *webdav,
                                const gchar *uri,
                                gchar **out_href,
                                gchar **out_etag,
                                gchar **out_bytes,
                                gsize *out_length,
                                GCancellable *cancellable,
                                GError **error);

Reads a resource identified by uri from the server. The URI cannot reference a collection.

The out_bytes is filled by actual data being read. If not NULL, out_length is populated with how many bytes had been read. The out_bytes is always NUL-terminated, while this termination byte is not part of out_length . Free the out_bytes with g_free(), when no longer needed.

Free returned pointer of out_href and out_etag , if not NULL, with g_free(), when no longer needed.

To read large data use e_webdav_session_get_sync() instead.

Parameters

webdav

an EWebDAVSession

 

uri

URI of the resource to read

 

out_href

optional return location for href of the resource, or NULL.

[out][nullable][transfer full]

out_etag

optional return location for etag of the resource, or NULL.

[out][nullable][transfer full]

out_bytes

return location for bytes being read.

[out][transfer full]

out_length

option return location for length of bytes being read, or NULL.

[out][nullable]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_put_sync ()

gboolean
e_webdav_session_put_sync (EWebDAVSession *webdav,
                           const gchar *uri,
                           const gchar *etag,
                           const gchar *content_type,
                           GInputStream *stream,
                           gchar **out_href,
                           gchar **out_etag,
                           GCancellable *cancellable,
                           GError **error);

Writes data from stream to a resource identified by uri to the server. The URI cannot reference a collection.

The etag argument is used to avoid clashes when overwriting existing resources. It can contain three values:

  • NULL - to write completely new resource

  • empty string - write new resource or overwrite any existing, regardless changes on the server

  • valid ETag - overwrite existing resource only if it wasn't changed on the server.

Note that the actual behaviour is also influenced by “avoid-ifmatch” property of the associated ESource.

The out_href , if provided, is filled with the resulting URI of the written resource. It can be different from the uri when the server redirected to a different location.

The out_etag contains ETag of the resource after it had been saved.

The stream should support also GSeekable interface, because the data send can require restart of the send due to redirect or other reasons.

This method uses Transfer-Encoding:chunked, in contrast to the e_webdav_session_put_data_sync(), which writes data stored in memory like any other request.

Parameters

webdav

an EWebDAVSession

 

uri

URI of the resource to write

 

etag

an ETag of the resource, if it's an existing resource, or NULL.

[nullable]

content_type

Content-Type of the bytes to be written

 

stream

a GInputStream with data to be written

 

out_href

optional return location for href of the resource, or NULL.

[out][nullable][transfer full]

out_etag

optional return location for etag of the resource, or NULL.

[out][nullable][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_put_data_sync ()

gboolean
e_webdav_session_put_data_sync (EWebDAVSession *webdav,
                                const gchar *uri,
                                const gchar *etag,
                                const gchar *content_type,
                                const gchar *bytes,
                                gsize length,
                                gchar **out_href,
                                gchar **out_etag,
                                GCancellable *cancellable,
                                GError **error);

Writes data to a resource identified by uri to the server. The URI cannot reference a collection.

The etag argument is used to avoid clashes when overwriting existing resources. It can contain three values:

  • NULL - to write completely new resource

  • empty string - write new resource or overwrite any existing, regardless changes on the server

  • valid ETag - overwrite existing resource only if it wasn't changed on the server.

Note that the actual usage of etag is also influenced by “avoid-ifmatch” property of the associated ESource.

The out_href , if provided, is filled with the resulting URI of the written resource. It can be different from the uri when the server redirected to a different location.

The out_etag contains ETag of the resource after it had been saved.

To write large data use e_webdav_session_put_sync() instead.

Parameters

webdav

an EWebDAVSession

 

uri

URI of the resource to write

 

etag

an ETag of the resource, if it's an existing resource, or NULL.

[nullable]

content_type

Content-Type of the bytes to be written

 

bytes

actual bytes to be written

 

length

how many bytes to write, or -1, when the bytes is NUL-terminated

 

out_href

optional return location for href of the resource, or NULL.

[out][nullable][transfer full]

out_etag

optional return location for etag of the resource, or NULL.

[out][nullable][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_delete_sync ()

gboolean
e_webdav_session_delete_sync (EWebDAVSession *webdav,
                              const gchar *uri,
                              const gchar *depth,
                              const gchar *etag,
                              GCancellable *cancellable,
                              GError **error);

Deletes a resource identified by uri on the server. The URI can reference a collection, in which case depth should be E_WEBDAV_DEPTH_INFINITY. Use depth E_WEBDAV_DEPTH_THIS when deleting a regular resource, or NULL, to let the server use default Depth.

The etag argument is used to avoid clashes when overwriting existing resources. Use NULL etag when deleting collection resources or to force the deletion, otherwise provide a valid ETag of a non-collection resource to verify that the version requested to delete is the same as on the server.

Note that the actual usage of etag is also influenced by “avoid-ifmatch” property of the associated ESource.

Parameters

webdav

an EWebDAVSession

 

uri

URI of the resource to delete

 

depth

optional requested depth, can be one of E_WEBDAV_DEPTH_THIS or E_WEBDAV_DEPTH_INFINITY, or NULL.

[nullable]

etag

an optional ETag of the resource, or NULL.

[nullable]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_copy_sync ()

gboolean
e_webdav_session_copy_sync (EWebDAVSession *webdav,
                            const gchar *source_uri,
                            const gchar *destination_uri,
                            const gchar *depth,
                            gboolean can_overwrite,
                            GCancellable *cancellable,
                            GError **error);

Copies a resource identified by source_uri to destination_uri on the server. The source_uri can reference also collections, in which case the depth influences whether only the collection itself is copied (E_WEBDAV_DEPTH_THIS) or whether the collection with all its children is copied (E_WEBDAV_DEPTH_INFINITY).

Parameters

webdav

an EWebDAVSession

 

source_uri

URI of the resource or collection to copy

 

destination_uri

URI of the destination

 

depth

requested depth, can be one of E_WEBDAV_DEPTH_THIS or E_WEBDAV_DEPTH_INFINITY

 

can_overwrite

whether can overwrite destination_uri , when it exists

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_move_sync ()

gboolean
e_webdav_session_move_sync (EWebDAVSession *webdav,
                            const gchar *source_uri,
                            const gchar *destination_uri,
                            gboolean can_overwrite,
                            GCancellable *cancellable,
                            GError **error);

Moves a resource identified by source_uri to destination_uri on the server. The source_uri can reference also collections.

Parameters

webdav

an EWebDAVSession

 

source_uri

URI of the resource or collection to copy

 

destination_uri

URI of the destination

 

can_overwrite

whether can overwrite destination_uri , when it exists

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_lock_sync ()

gboolean
e_webdav_session_lock_sync (EWebDAVSession *webdav,
                            const gchar *uri,
                            const gchar *depth,
                            gint32 lock_timeout,
                            const EXmlDocument *xml,
                            gchar **out_lock_token,
                            xmlDoc **out_xml_response,
                            GCancellable *cancellable,
                            GError **error);

Locks a resource identified by uri , or, in case it's NULL, on the URI defined in associated ESource.

The out_lock_token can be refreshed with e_webdav_session_refresh_lock_sync(). Release the lock with e_webdav_session_unlock_sync(). Free the returned out_lock_token with g_free(), when no longer needed.

If provided, free the returned out_xml_response with xmlFreeDoc(), when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to lock, or NULL to read from ESource.

[nullable]

depth

requested depth, can be one of E_WEBDAV_DEPTH_THIS or E_WEBDAV_DEPTH_INFINITY

 

lock_timeout

timeout for the lock, in seconds, on 0 to infinity

 

xml

an XML describing the lock request, with DAV:lockinfo root element

 

out_lock_token

return location of the obtained or refreshed lock token.

[out][transfer full]

out_xml_response

optional return location for the server response as xmlDocPtr.

[out][nullable][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_refresh_lock_sync ()

gboolean
e_webdav_session_refresh_lock_sync (EWebDAVSession *webdav,
                                    const gchar *uri,
                                    const gchar *lock_token,
                                    gint32 lock_timeout,
                                    GCancellable *cancellable,
                                    GError **error);

Refreshes existing lock lock_token for a resource identified by uri , or, in case it's NULL, on the URI defined in associated ESource. The lock_token is returned from e_webdav_session_lock_sync() and the uri should be the same as that used with e_webdav_session_lock_sync().

Parameters

webdav

an EWebDAVSession

 

uri

URI to lock, or NULL to read from ESource.

[nullable]

lock_token

token of an existing lock

 

lock_timeout

timeout for the lock, in seconds, on 0 to infinity

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_unlock_sync ()

gboolean
e_webdav_session_unlock_sync (EWebDAVSession *webdav,
                              const gchar *uri,
                              const gchar *lock_token,
                              GCancellable *cancellable,
                              GError **error);

Releases (unlocks) existing lock lock_token for a resource identified by uri , or, in case it's NULL, on the URI defined in associated ESource. The lock_token is returned from e_webdav_session_lock_sync() and the uri should be the same as that used with e_webdav_session_lock_sync().

Parameters

webdav

an EWebDAVSession

 

uri

URI to lock, or NULL to read from ESource.

[nullable]

lock_token

token of an existing lock

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_traverse_multistatus_response ()

gboolean
e_webdav_session_traverse_multistatus_response
                               (EWebDAVSession *webdav,
                                const SoupMessage *message,
                                const GByteArray *xml_data,
                                EWebDAVPropstatTraverseFunc func,
                                gpointer func_user_data,
                                GError **error);

Traverses a DAV:multistatus response and calls func for each returned DAV:propstat.

The message , if provided, is used to verify that the response is a multi-status and that the Content-Type is properly set. It's used to get a request URI as well.

Parameters

webdav

an EWebDAVSession

 

message

an optional SoupMessage corresponding to the response, or NULL.

[nullable]

xml_data

a GByteArray containing DAV:multistatus response

 

func

an EWebDAVPropstatTraverseFunc function to call for each DAV:propstat in the multistatus response.

[scope call]

func_user_data

user data passed to func .

[closure func]

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_traverse_mkcol_response ()

gboolean
e_webdav_session_traverse_mkcol_response
                               (EWebDAVSession *webdav,
                                const SoupMessage *message,
                                const GByteArray *xml_data,
                                EWebDAVPropstatTraverseFunc func,
                                gpointer func_user_data,
                                GError **error);

Traverses a DAV:mkcol-response response and calls func for each returned DAV:propstat.

The message , if provided, is used to verify that the response is an XML Content-Type. It's used to get the request URI as well.

Parameters

webdav

an EWebDAVSession

 

message

an optional SoupMessage corresponding to the response, or NULL.

[nullable]

xml_data

a GByteArray containing DAV:mkcol-response response

 

func

an EWebDAVPropstatTraverseFunc function to call for each DAV:propstat in the response.

[scope call]

func_user_data

user data passed to func .

[closure func]

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_traverse_mkcalendar_response ()

gboolean
e_webdav_session_traverse_mkcalendar_response
                               (EWebDAVSession *webdav,
                                const SoupMessage *message,
                                const GByteArray *xml_data,
                                EWebDAVPropstatTraverseFunc func,
                                gpointer func_user_data,
                                GError **error);

Traverses a CALDAV:mkcalendar-response response and calls func for each returned DAV:propstat.

The message , if provided, is used to verify that the response is an XML Content-Type. It's used to get the request URI as well.

Parameters

webdav

an EWebDAVSession

 

message

an optional SoupMessage corresponding to the response, or NULL.

[nullable]

xml_data

a GByteArray containing CALDAV:mkcalendar-response response

 

func

an EWebDAVPropstatTraverseFunc function to call for each DAV:propstat in the response.

[scope call]

func_user_data

user data passed to func .

[closure func]

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_getctag_sync ()

gboolean
e_webdav_session_getctag_sync (EWebDAVSession *webdav,
                               const gchar *uri,
                               gchar **out_ctag,
                               GCancellable *cancellable,
                               GError **error);

Issues a getctag property request for a collection identified by uri , or, in case it's NULL, on the URI defined in associated ESource. The ctag is a collection tag, which changes whenever the collection changes (similar to etag). The getctag is an extension, thus the function can fail when the server doesn't support it.

Free the returned out_ctag with g_free(), when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

out_ctag

return location for the ctag.

[out][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_list_sync ()

gboolean
e_webdav_session_list_sync (EWebDAVSession *webdav,
                            const gchar *uri,
                            const gchar *depth,
                            guint32 flags,
                            GSList **out_resources,
                            GCancellable *cancellable,
                            GError **error);

Lists content of the uri , or, in case it's NULL, of the URI defined in associated ESource, which should point to a collection. The flags influences which properties are read for the resources.

The out_resources is in no particular order.

Free the returned out_resources with g_slist_free_full (resources, e_webdav_resource_free); when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

depth

requested depth, can be one of E_WEBDAV_DEPTH_THIS, E_WEBDAV_DEPTH_THIS_AND_CHILDREN or E_WEBDAV_DEPTH_INFINITY

 

flags

a bit-or of EWebDAVListFlags, claiming what properties to read

 

out_resources

return location for the resources.

[out][transfer full][element-type EWebDAVResource]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_update_properties_sync ()

gboolean
e_webdav_session_update_properties_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                const GSList *changes,
                                GCancellable *cancellable,
                                GError **error);

Updates properties (set/remove) on the provided uri , or, in case it's NULL, on the URI defined in associated ESource, with the changes . The order of changes is significant, unlike on other places.

This function supports only flat properties, those not under other element. To support more complex property tries use e_webdav_session_proppatch_sync() directly.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

changes

a GSList with request changes.

[element-type EWebDAVPropertyChange]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_lock_resource_sync ()

gboolean
e_webdav_session_lock_resource_sync (EWebDAVSession *webdav,
                                     const gchar *uri,
                                     EWebDAVLockScope lock_scope,
                                     gint32 lock_timeout,
                                     const gchar *owner,
                                     gchar **out_lock_token,
                                     GCancellable *cancellable,
                                     GError **error);

Locks a resource identified by uri , or, in case it's NULL, by the URI defined in associated ESource. It obtains a write lock with the given lock_scope .

The owner is used to identify the lock owner. When it's an http:// or https://, then it's referenced as DAV:href, otherwise the value is treated as plain text. If it's NULL, then the user name from the associated ESource is used.

The out_lock_token can be refreshed with e_webdav_session_refresh_lock_sync(). Release the lock with e_webdav_session_unlock_sync(). Free the returned out_lock_token with g_free(), when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to lock, or NULL to read from ESource.

[nullable]

lock_scope

an EWebDAVLockScope to define the scope of the lock

 

lock_timeout

timeout for the lock, in seconds, on 0 to infinity

 

owner

optional identificator of the owner of the lock, or NULL.

[nullable]

out_lock_token

return location of the obtained or refreshed lock token.

[out][transfer full]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_acl_sync ()

gboolean
e_webdav_session_acl_sync (EWebDAVSession *webdav,
                           const gchar *uri,
                           const EXmlDocument *xml,
                           GCancellable *cancellable,
                           GError **error);

Issues ACL request on the provided uri , or, in case it's NULL, on the URI defined in associated ESource.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

xml

the request itself, as an EXmlDocument, the root element should be DAV:acl

 

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_get_supported_privilege_set_sync ()

gboolean
e_webdav_session_get_supported_privilege_set_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                GNode **out_privileges,
                                GCancellable *cancellable,
                                GError **error);

Gets supported privileges for the uri , or, in case it's NULL, for the URI defined in associated ESource.

The root node of out_privileges has always NULL data.

Free the returned out_privileges with e_webdav_session_util_free_privileges() when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

out_privileges

return location for the tree of supported privileges.

[out][transfer full][element-type EWebDAVPrivilege]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_get_current_user_privilege_set_sync ()

gboolean
e_webdav_session_get_current_user_privilege_set_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                GSList **out_privileges,
                                GCancellable *cancellable,
                                GError **error);

Gets current user privileges for the uri , or, in case it's NULL, for the URI defined in associated ESource.

Free the returned out_privileges with g_slist_free_full (privileges, e_webdav_privilege_free); when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

out_privileges

return location for a GSList of EWebDAVPrivilege.

[out][transfer full][element-type EWebDAVPrivilege]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_get_acl_sync ()

gboolean
e_webdav_session_get_acl_sync (EWebDAVSession *webdav,
                               const gchar *uri,
                               GSList **out_entries,
                               GCancellable *cancellable,
                               GError **error);

Gets Access Control List (ACL) for the uri , or, in case it's NULL, for the URI defined in associated ESource.

This function doesn't read general E_WEBDAV_ACE_PRINCIPAL_PROPERTY.

Free the returned out_entries with g_slist_free_full (entries, e_webdav_access_control_entry_free); when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

out_entries

return location for a GSList of EWebDAVAccessControlEntry.

[out][transfer full][element-type EWebDAVAccessControlEntry]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_get_acl_restrictions_sync ()

gboolean
e_webdav_session_get_acl_restrictions_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                guint32 *out_restrictions,
                                EWebDAVACEPrincipalKind *out_principal_kind,
                                GSList **out_principal_hrefs,
                                GCancellable *cancellable,
                                GError **error);

Gets Access Control List (ACL) restrictions for the uri , or, in case it's NULL, for the URI defined in associated ESource. The out_principal_kind is valid only if the out_restrictions contains E_WEBDAV_ACL_RESTRICTION_REQUIRED_PRINCIPAL. The out_principal_hrefs is valid only if the out_principal_kind is valid and when it is E_WEBDAV_ACE_PRINCIPAL_HREF.

Free the returned out_principal_hrefs with g_slist_free_full (entries, g_free); when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

out_restrictions

return location for bit-or of EWebDAVACLRestrictions.

[out]

out_principal_kind

return location for principal kind.

[out]

out_principal_hrefs

return location for a GSList of principal href-s.

[out][transfer full][element-type utf8]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_get_principal_collection_set_sync ()

gboolean
e_webdav_session_get_principal_collection_set_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                GSList **out_principal_hrefs,
                                GCancellable *cancellable,
                                GError **error);

Gets list of principal collection href for the uri , or, in case it's NULL, for the URI defined in associated ESource. The out_principal_hrefs are root collections that contain the principals that are available on the server that implements this resource.

Free the returned out_principal_hrefs with g_slist_free_full (entries, g_free); when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

out_principal_hrefs

return location for a GSList of principal href-s.

[out][transfer full][element-type utf8]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_set_acl_sync ()

gboolean
e_webdav_session_set_acl_sync (EWebDAVSession *webdav,
                               const gchar *uri,
                               const GSList *entries,
                               GCancellable *cancellable,
                               GError **error);

Changes Access Control List (ACL) for the uri , or, in case it's NULL, for the URI defined in associated ESource.

Make sure that the entries satisfy ACL restrictions, as returned by e_webdav_session_get_acl_restrictions_sync(). The order in the entries is preserved. It cannot contain any E_WEBDAV_ACE_FLAG_PROTECTED, nor E_WEBDAV_ACE_FLAG_INHERITED , items.

Use e_webdav_session_get_acl_sync() to read currently known ACL entries, remove from the list those protected and inherited, and then modify the rest with the required changed.

Note this function doesn't support general E_WEBDAV_ACE_PRINCIPAL_PROPERTY and returns G_IO_ERROR_NOT_SUPPORTED error when any such is tried to be written.

In case the returned entries contain any E_WEBDAV_ACE_PRINCIPAL_PROPERTY, or there's a need to write such Access Control Entry, then do not use e_webdav_session_get_acl_sync(), neither e_webdav_session_set_acl_sync(), and write more generic implementation.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

entries

entries to write.

[element-type EWebDAVAccessControlEntry]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded.

Since: 3.26


e_webdav_session_principal_property_search_sync ()

gboolean
e_webdav_session_principal_property_search_sync
                               (EWebDAVSession *webdav,
                                const gchar *uri,
                                gboolean apply_to_principal_collection_set,
                                const gchar *match_ns_uri,
                                const gchar *match_property,
                                const gchar *match_value,
                                GSList **out_principals,
                                GCancellable *cancellable,
                                GError **error);

Issues a DAV:principal-property-search for the uri , or, in case it's NULL, for the URI defined in associated ESource. The DAV:principal-property-search performs a search for all principals whose properties contain character data that matches the search criteria match_value in match_property property of namespace match_ns_uri .

By default, the function searches all members (at any depth) of the collection identified by the uri . If apply_to_principal_collection_set is set to TRUE, the search is applied instead to each collection returned by e_webdav_session_get_principal_collection_set_sync() for the uri .

The out_principals is a GSList of EWebDAVResource, where the kind is set to E_WEBDAV_RESOURCE_KIND_PRINCIPAL and only href with displayname are filled. All other members of EWebDAVResource are not set.

Free the returned out_principals with g_slist_free_full (principals, e_webdav_resource_free); when no longer needed.

Parameters

webdav

an EWebDAVSession

 

uri

URI to issue the request for, or NULL to read from ESource.

[nullable]

apply_to_principal_collection_set

whether to apply to principal-collection-set

 

match_ns_uri

namespace URI of the property to search in, or NULL for E_WEBDAV_NS_DAV.

[nullable]

match_property

name of the property to search in

 

match_value

a string value to search for

 

out_principals

return location for matching principals.

[out][transfer full][element-type EWebDAVResource]

cancellable

optional GCancellable object, or NULL

 

error

return location for a GError, or NULL

 

Returns

Whether succeeded. Note it can report success also when no matching principal had been found.

Since: 3.26


e_webdav_session_util_maybe_dequote ()

gchar *
e_webdav_session_util_maybe_dequote (gchar *text);

Dequotes text , if it's enclosed in double-quotes. The function changes text , it doesn't allocate new string. The function does nothing when the text is not enclosed in double-quotes.

Parameters

text

text to dequote.

[inout][nullable]

Returns

possibly dequoted text

Since: 3.26


e_webdav_session_util_free_privileges ()

void
e_webdav_session_util_free_privileges (GNode *privileges);

Frees privileges returned by e_webdav_session_get_supported_privilege_set_sync(). The function does nothing, if privileges is NULL.

Parameters

privileges

a tree of EWebDAVPrivilege structures.

[nullable]

Since: 3.26


e_webdav_session_util_item_href_equal ()

gboolean
e_webdav_session_util_item_href_equal (const gchar *href1,
                                       const gchar *href2);

Compares two hrefs and return whether they reference the same item on the server. The comparison is done in a relaxed way, not considering scheme part and comparing the host name case insensitively, while the path case sensitively. It also ignores the username/password information in the hostname part, if it's included. The function doesn't decode any URI-encoded characters.

Parameters

href1

the first href

 

href2

the second href

 

Returns

whether the two href-s reference the same item

Since: 3.38.2

Types and Values

E_WEBDAV_CAPABILITY_CLASS_1

#define E_WEBDAV_CAPABILITY_CLASS_1			"1"

E_WEBDAV_CAPABILITY_CLASS_2

#define E_WEBDAV_CAPABILITY_CLASS_2			"2"

E_WEBDAV_CAPABILITY_CLASS_3

#define E_WEBDAV_CAPABILITY_CLASS_3			"3"

E_WEBDAV_CAPABILITY_ACCESS_CONTROL

#define E_WEBDAV_CAPABILITY_ACCESS_CONTROL		"access-control"

E_WEBDAV_CAPABILITY_BIND

#define E_WEBDAV_CAPABILITY_BIND			"bind"

E_WEBDAV_CAPABILITY_EXTENDED_MKCOL

#define E_WEBDAV_CAPABILITY_EXTENDED_MKCOL		"extended-mkcol"

E_WEBDAV_CAPABILITY_ADDRESSBOOK

#define E_WEBDAV_CAPABILITY_ADDRESSBOOK			"addressbook"

E_WEBDAV_CAPABILITY_CALENDAR_ACCESS

#define E_WEBDAV_CAPABILITY_CALENDAR_ACCESS		"calendar-access"

E_WEBDAV_CAPABILITY_CALENDAR_SCHEDULE

#define E_WEBDAV_CAPABILITY_CALENDAR_SCHEDULE		"calendar-schedule"

E_WEBDAV_CAPABILITY_CALENDAR_AUTO_SCHEDULE

#define E_WEBDAV_CAPABILITY_CALENDAR_AUTO_SCHEDULE "calendar-auto-schedule"

E_WEBDAV_CAPABILITY_CALENDAR_PROXY

#define E_WEBDAV_CAPABILITY_CALENDAR_PROXY		"calendar-proxy"

E_WEBDAV_DEPTH_THIS

#define E_WEBDAV_DEPTH_THIS			"0"

E_WEBDAV_DEPTH_THIS_AND_CHILDREN

#define E_WEBDAV_DEPTH_THIS_AND_CHILDREN "1"

E_WEBDAV_DEPTH_INFINITY

#define E_WEBDAV_DEPTH_INFINITY			"infinity"

E_WEBDAV_CONTENT_TYPE_XML

#define E_WEBDAV_CONTENT_TYPE_XML		"application/xml; charset=\"utf-8\""

E_WEBDAV_CONTENT_TYPE_CALENDAR

#define E_WEBDAV_CONTENT_TYPE_CALENDAR		"text/calendar; charset=\"utf-8\""

E_WEBDAV_CONTENT_TYPE_VCARD

#define E_WEBDAV_CONTENT_TYPE_VCARD		"text/vcard; charset=\"utf-8\""

E_WEBDAV_NS_DAV

#define E_WEBDAV_NS_DAV				"DAV:"

E_WEBDAV_NS_CALDAV

#define E_WEBDAV_NS_CALDAV			"urn:ietf:params:xml:ns:caldav"

E_WEBDAV_NS_CARDDAV

#define E_WEBDAV_NS_CARDDAV			"urn:ietf:params:xml:ns:carddav"

E_WEBDAV_NS_CALENDARSERVER

#define E_WEBDAV_NS_CALENDARSERVER		"http://calendarserver.org/ns/"

E_WEBDAV_NS_ICAL

#define E_WEBDAV_NS_ICAL			"http://apple.com/ns/ical/"

enum EWebDAVResourceKind

Members

E_WEBDAV_RESOURCE_KIND_UNKNOWN

   

E_WEBDAV_RESOURCE_KIND_ADDRESSBOOK

   

E_WEBDAV_RESOURCE_KIND_CALENDAR

   

E_WEBDAV_RESOURCE_KIND_PRINCIPAL

   

E_WEBDAV_RESOURCE_KIND_COLLECTION

   

E_WEBDAV_RESOURCE_KIND_RESOURCE

   

E_WEBDAV_RESOURCE_KIND_SUBSCRIBED_ICALENDAR

   

E_WEBDAV_RESOURCE_KIND_WEBDAV_NOTES

   

enum EWebDAVResourceSupports

Members

E_WEBDAV_RESOURCE_SUPPORTS_NONE

   

E_WEBDAV_RESOURCE_SUPPORTS_CONTACTS

   

E_WEBDAV_RESOURCE_SUPPORTS_EVENTS

   

E_WEBDAV_RESOURCE_SUPPORTS_MEMOS

   

E_WEBDAV_RESOURCE_SUPPORTS_TASKS

   

E_WEBDAV_RESOURCE_SUPPORTS_FREEBUSY

   

E_WEBDAV_RESOURCE_SUPPORTS_TIMEZONE

   

E_WEBDAV_RESOURCE_SUPPORTS_WEBDAV_NOTES

   

E_WEBDAV_RESOURCE_SUPPORTS_LAST

   

enum EWebDAVListFlags

Members

E_WEBDAV_LIST_ALL

   

E_WEBDAV_LIST_NONE

   

E_WEBDAV_LIST_SUPPORTS

   

E_WEBDAV_LIST_ETAG

   

E_WEBDAV_LIST_DISPLAY_NAME

   

E_WEBDAV_LIST_CONTENT_TYPE

   

E_WEBDAV_LIST_CONTENT_LENGTH

   

E_WEBDAV_LIST_CREATION_DATE

   

E_WEBDAV_LIST_LAST_MODIFIED

   

E_WEBDAV_LIST_DESCRIPTION

   

E_WEBDAV_LIST_COLOR

   

E_WEBDAV_LIST_ONLY_CALENDAR

   

E_WEBDAV_LIST_ONLY_ADDRESSBOOK

   

enum EWebDAVPropertyChangeKind

Members

E_WEBDAV_PROPERTY_SET

   

E_WEBDAV_PROPERTY_REMOVE

   

enum EWebDAVLockScope

Members

E_WEBDAV_LOCK_EXCLUSIVE

   

E_WEBDAV_LOCK_SHARED

   

E_WEBDAV_COLLATION_ASCII_NUMERIC_SUFFIX

#define E_WEBDAV_COLLATION_ASCII_NUMERIC_SUFFIX "ascii-numeric"

E_WEBDAV_COLLATION_ASCII_NUMERIC

#define E_WEBDAV_COLLATION_ASCII_NUMERIC "i;" E_WEBDAV_COLLATION_ASCII_NUMERIC_SUFFIX

E_WEBDAV_COLLATION_ASCII_CASEMAP_SUFFIX

#define E_WEBDAV_COLLATION_ASCII_CASEMAP_SUFFIX "ascii-casemap"

E_WEBDAV_COLLATION_ASCII_CASEMAP

#define E_WEBDAV_COLLATION_ASCII_CASEMAP "i;" E_WEBDAV_COLLATION_ASCII_CASEMAP_SUFFIX

E_WEBDAV_COLLATION_OCTET_SUFFIX

#define E_WEBDAV_COLLATION_OCTET_SUFFIX "octet"

E_WEBDAV_COLLATION_OCTET

#define E_WEBDAV_COLLATION_OCTET "i;" E_WEBDAV_COLLATION_OCTET_SUFFIX

E_WEBDAV_COLLATION_UNICODE_CASEMAP_SUFFIX

#define E_WEBDAV_COLLATION_UNICODE_CASEMAP_SUFFIX "unicode-casemap"

E_WEBDAV_COLLATION_UNICODE_CASEMAP

#define E_WEBDAV_COLLATION_UNICODE_CASEMAP "i;" E_WEBDAV_COLLATION_UNICODE_CASEMAP_SUFFIX

enum EWebDAVPrivilegeKind

Members

E_WEBDAV_PRIVILEGE_KIND_UNKNOWN

   

E_WEBDAV_PRIVILEGE_KIND_ABSTRACT

   

E_WEBDAV_PRIVILEGE_KIND_AGGREGATE

   

E_WEBDAV_PRIVILEGE_KIND_COMMON

   

enum EWebDAVPrivilegeHint

Members

E_WEBDAV_PRIVILEGE_HINT_UNKNOWN

   

E_WEBDAV_PRIVILEGE_HINT_READ

   

E_WEBDAV_PRIVILEGE_HINT_WRITE

   

E_WEBDAV_PRIVILEGE_HINT_WRITE_PROPERTIES

   

E_WEBDAV_PRIVILEGE_HINT_WRITE_CONTENT

   

E_WEBDAV_PRIVILEGE_HINT_UNLOCK

   

E_WEBDAV_PRIVILEGE_HINT_READ_ACL

   

E_WEBDAV_PRIVILEGE_HINT_WRITE_ACL

   

E_WEBDAV_PRIVILEGE_HINT_READ_CURRENT_USER_PRIVILEGE_SET

   

E_WEBDAV_PRIVILEGE_HINT_BIND

   

E_WEBDAV_PRIVILEGE_HINT_UNBIND

   

E_WEBDAV_PRIVILEGE_HINT_ALL

   

E_WEBDAV_PRIVILEGE_HINT_CALDAV_READ_FREE_BUSY

   

enum EWebDAVACEPrincipalKind

Members

E_WEBDAV_ACE_PRINCIPAL_UNKNOWN

   

E_WEBDAV_ACE_PRINCIPAL_HREF

   

E_WEBDAV_ACE_PRINCIPAL_ALL

   

E_WEBDAV_ACE_PRINCIPAL_AUTHENTICATED

   

E_WEBDAV_ACE_PRINCIPAL_UNAUTHENTICATED

   

E_WEBDAV_ACE_PRINCIPAL_PROPERTY

   

E_WEBDAV_ACE_PRINCIPAL_SELF

   

E_WEBDAV_ACE_PRINCIPAL_OWNER

   

enum EWebDAVACEFlag

Members

E_WEBDAV_ACE_FLAG_UNKNOWN

   

E_WEBDAV_ACE_FLAG_GRANT

   

E_WEBDAV_ACE_FLAG_DENY

   

E_WEBDAV_ACE_FLAG_INVERT

   

E_WEBDAV_ACE_FLAG_PROTECTED

   

E_WEBDAV_ACE_FLAG_INHERITED

   

enum EWebDAVACLRestrictions

Members

E_WEBDAV_ACL_RESTRICTION_NONE

   

E_WEBDAV_ACL_RESTRICTION_GRANT_ONLY

   

E_WEBDAV_ACL_RESTRICTION_NO_INVERT

   

E_WEBDAV_ACL_RESTRICTION_DENY_BEFORE_GRANT

   

E_WEBDAV_ACL_RESTRICTION_REQUIRED_PRINCIPAL

   

struct EWebDAVSession

struct EWebDAVSession;

Contains only private data that should be read and manipulated using the functions below.

Since: 3.26