## ESourceWebdav

ESourceWebdav — ESource extension for WebDAV settings

## Synopsis

    #include <libedataserver/libedataserver.h>

    struct              ESourceWebdav;
    #define             E_SOURCE_EXTENSION_WEBDAV_BACKEND
    gboolean            e_source_webdav_get_calendar_auto_schedule
                                                            (ESourceWebdav *extension);
    void                e_source_webdav_set_calendar_auto_schedule
                                                            (ESourceWebdav *extension,
                                                             gboolean calendar_auto_schedule);
    const gchar *       e_source_webdav_get_display_name    (ESourceWebdav *extension);
    gchar *             e_source_webdav_dup_display_name    (ESourceWebdav *extension);
    void                e_source_webdav_set_display_name    (ESourceWebdav *extension,
                                                             const gchar *display_name);
    const gchar *       e_source_webdav_get_email_address   (ESourceWebdav *extension);
    gchar *             e_source_webdav_dup_email_address   (ESourceWebdav *extension);
    void                e_source_webdav_set_email_address   (ESourceWebdav *extension,
                                                             const gchar *email_address);
    gboolean            e_source_webdav_get_ignore_invalid_cert
                                                            (ESourceWebdav *extension);
    void                e_source_webdav_set_ignore_invalid_cert
                                                            (ESourceWebdav *extension,
                                                             gboolean ignore_invalid_cert);
    const gchar *       e_source_webdav_get_resource_path   (ESourceWebdav *extension);
    gchar *             e_source_webdav_dup_resource_path   (ESourceWebdav *extension);
    void                e_source_webdav_set_resource_path   (ESourceWebdav *extension,
                                                             const gchar *resource_path);
    const gchar *       e_source_webdav_get_resource_query  (ESourceWebdav *extension);
    gchar *             e_source_webdav_dup_resource_query  (ESourceWebdav *extension);
    void                e_source_webdav_set_resource_query  (ESourceWebdav *extension,
                                                             const gchar *resource_query);
    SoupURI *           e_source_webdav_dup_soup_uri        (ESourceWebdav *extension);
    void                e_source_webdav_set_soup_uri        (ESourceWebdav *extension,
                                                             SoupURI *soup_uri);
    gboolean            e_source_webdav_get_avoid_ifmatch   (ESourceWebdav *extension);
    void                e_source_webdav_set_avoid_ifmatch   (ESourceWebdav *extension,
                                                             gboolean avoid_ifmatch);

## Object Hierarchy

      GObject
       +----ESourceExtension
             +----ESourceWebdav

## Properties

      "avoid-ifmatch"            gboolean              : Read / Write / Construct
      "calendar-auto-schedule"   gboolean              : Read / Write / Construct
      "display-name"             gchar*                : Read / Write / Construct
      "email-address"            gchar*                : Read / Write / Construct
      "ignore-invalid-cert"      gboolean              : Read / Write / Construct
      "resource-path"            gchar*                : Read / Write / Construct
      "resource-query"           gchar*                : Read / Write / Construct
      "soup-uri"                 SoupURI*              : Read / Write

## Description

The ESourceWebdav extension tracks settings for accessing resources on a remote WebDAV server.

This class exists in libedataserver because we have several WebDAV-based backends. Each of these backends is free to use this class directly or subclass it with additional settings. Subclasses should override the extension name.

The SoupURI is parsed into components and distributed across several other built-in extensions such as ESourceAuthentication and ESourceSecurity.

Access the extension as follows:

    1
    2
    3
    4
    5

    #include <libedataserver/libedataserver.h>

    ESourceWebdav *extension;

    extension = e_source_get_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND);

## Details

### struct ESourceWebdav

    struct ESourceWebdav;

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

Since 3.6

### E_SOURCE_EXTENSION_WEBDAV_BACKEND

    #define E_SOURCE_EXTENSION_WEBDAV_BACKEND "WebDAV Backend"

Pass this extension name to `e_source_get_extension()` to access ESourceWebdav. This is also used as a group name in key files.

Since 3.6

### e_source_webdav_get_calendar_auto_schedule ()

    gboolean            e_source_webdav_get_calendar_auto_schedule
                                                            (ESourceWebdav *extension);

FIXME Document me!

`extension` : | an ESourceWebdav

Since 3.6

### e_source_webdav_set_calendar_auto_schedule ()

    void                e_source_webdav_set_calendar_auto_schedule
                                                            (ESourceWebdav *extension,
                                                             gboolean calendar_auto_schedule);

FIXME Document me!

`extension` : | an ESourceWebdav
`calendar_auto_schedule` : | whether the server supports the "calendar-auto-schedule" feature of CalDAV

Since 3.6

### e_source_webdav_get_display_name ()

    const gchar *       e_source_webdav_get_display_name    (ESourceWebdav *extension);

Returns the last known display name of a WebDAV resource, which may differ from the "display-name" property of the ESource to which `extension` belongs.

`extension` : | an ESourceWebdav
Returns : | the display name of the WebDAV resource

Since 3.6

### e_source_webdav_dup_display_name ()

    gchar *             e_source_webdav_dup_display_name    (ESourceWebdav *extension);

Thread-safe variation of `e_source_webdav_get_display_name()`. Use this function when accessing `extension` from multiple threads.

The returned string should be freed with `g_free()` when no longer needed.

`extension` : | an ESourceWebdav
Returns : | a newly-allocated copy of "display-name"

Since 3.6

### e_source_webdav_set_display_name ()

    void                e_source_webdav_set_display_name    (ESourceWebdav *extension,
                                                             const gchar *display_name);

Updates the last known display name of a WebDAV resource, which may differ from the "display-name" property of the ESource to which `extension` belongs.

The internal copy of `display_name` is automatically stripped of leading and trailing whitespace. If the resulting string is empty, `NULL` is set instead.

`extension` : | an ESourceWebdav
`display_name` : | the display name of the WebDAV resource, or `NULL`. [allow-none]

Since 3.6

### e_source_webdav_get_email_address ()

    const gchar *       e_source_webdav_get_email_address   (ESourceWebdav *extension);

Returns the user's email address which can be passed to a CalDAV server if the user wishes to receive scheduling messages.

`extension` : | an ESourceWebdav
Returns : | the user's email address

Since 3.6

### e_source_webdav_dup_email_address ()

    gchar *             e_source_webdav_dup_email_address   (ESourceWebdav *extension);

Thread-safe variation of `e_source_webdav_get_email_address()`. Use this function when accessing `extension` from multiple threads.

The returned string should be freed with `g_free()` when no longer needed.

`extension` : | an ESourceWebdav
Returns : | the newly-allocated copy of "email-address"

Since 3.6

### e_source_webdav_set_email_address ()

    void                e_source_webdav_set_email_address   (ESourceWebdav *extension,
                                                             const gchar *email_address);

Sets the user's email address which can be passed to a CalDAV server if the user wishes to receive scheduling messages.

The internal copy of `email_address` is automatically stripped of leading and trailing whitespace. If the resulting string is empty, `NULL` is set instead.

`extension` : | an ESourceWebdav
`email_address` : | the user's email address, or `NULL`. [allow-none]

Since 3.6

### e_source_webdav_get_ignore_invalid_cert ()

    gboolean            e_source_webdav_get_ignore_invalid_cert
                                                            (ESourceWebdav *extension);

Returns `TRUE` if invalid SSL certificates should be ignored.

This option allows SSL certificates to be accepted even if they have signed by an unrecognized Certificate Authority.

`extension` : | an ESourceWebdav
Returns : | whether invalid SSL certificates should be ignored

Since 3.6

### e_source_webdav_set_ignore_invalid_cert ()

    void                e_source_webdav_set_ignore_invalid_cert
                                                            (ESourceWebdav *extension,
                                                             gboolean ignore_invalid_cert);

Sets whether invalid SSL certificates should be ignored.

This option allows SSL certificates to be accepted even if they have signed by an unrecognized Certificate Authority.

`extension` : | an ESourceWebdav
`ignore_invalid_cert` : | whether invalid SSL certificates should be ignored

Since 3.6

### e_source_webdav_get_resource_path ()

    const gchar *       e_source_webdav_get_resource_path   (ESourceWebdav *extension);

Returns the absolute path to a resource on a WebDAV server.

`extension` : | an ESourceWebdav
Returns : | the absolute path to a WebDAV resource

Since 3.6

### e_source_webdav_dup_resource_path ()

    gchar *             e_source_webdav_dup_resource_path   (ESourceWebdav *extension);

Thread-safe variation of `e_source_webdav_get_resource_path()`. Use this function when accessing `extension` from multiple threads.

The returned string should be freed with `g_free()` when no longer needed.

`extension` : | an ESourceWebdav
Returns : | the newly-allocated copy of "resource-path"

Since 3.6

### e_source_webdav_set_resource_path ()

    void                e_source_webdav_set_resource_path   (ESourceWebdav *extension,
                                                             const gchar *resource_path);

Sets the absolute path to a resource on a WebDAV server.

The internal copy of `resource_path` is automatically stripped of leading and trailing whitespace. If the resulting string is empty, `NULL` is set instead.

`extension` : | an ESourceWebdav
`resource_path` : | the absolute path to a WebDAV resource, or `NULL`. [allow-none]

Since 3.6

### e_source_webdav_get_resource_query ()

    const gchar *       e_source_webdav_get_resource_query  (ESourceWebdav *extension);

Returns the URI query required to access a resource on a WebDAV server.

This is typically used when the "resource-path" points not to the resource itself but to a web program that generates the resource content on-the-fly. The "resource-query" holds the input values for the program.

`extension` : | an ESourceWebdav
Returns : | the query to access a WebDAV resource

Since 3.6

### e_source_webdav_dup_resource_query ()

    gchar *             e_source_webdav_dup_resource_query  (ESourceWebdav *extension);

Thread-safe variation of `e_source_webdav_get_resource_query()`. Use this function when accessing `extension` from multiple threads.

The returned string should be freed with `g_free()` when no longer needed.

`extension` : | an ESourceWebdav
Returns : | the newly-allocated copy of "resource-query"

Since 3.6

### e_source_webdav_set_resource_query ()

    void                e_source_webdav_set_resource_query  (ESourceWebdav *extension,
                                                             const gchar *resource_query);

Sets the URI query required to access a resource on a WebDAV server.

This is typically used when the "resource-path" points not to the resource itself but to a web program that generates the resource content on-the-fly. The "resource-query" holds the input values for the program.

The internal copy of `resource_query` is automatically stripped of leading and trailing whitespace. If the resulting string is empty, `NULL` is set instead.

`extension` : | an ESourceWebdav
`resource_query` : | the query to access a WebDAV resource, or `NULL`. [allow-none]

Since 3.6

### e_source_webdav_dup_soup_uri ()

    SoupURI *           e_source_webdav_dup_soup_uri        (ESourceWebdav *extension);

This is a convenience function which returns a newly-allocated SoupURI, its contents assembled from the ESourceAuthentication extension, the ESourceSecurity extension, and `extension` itself. Free the returned SoupURI with `soup_uri_free()`.

`extension` : | an ESourceWebdav
Returns : | a newly-allocated SoupURI. [transfer full]

Since 3.6

### e_source_webdav_set_soup_uri ()

    void                e_source_webdav_set_soup_uri        (ESourceWebdav *extension,
                                                             SoupURI *soup_uri);

This is a convenience function which propagates the components of `uri` to the ESourceAuthentication extension, the ESourceSecurity extension, and `extension` itself. (The "fragment" component of `uri` is ignored.)

`extension` : | an ESourceWebdav
`soup_uri` : | a SoupURI

Since 3.6

### e_source_webdav_get_avoid_ifmatch ()

    gboolean            e_source_webdav_get_avoid_ifmatch   (ESourceWebdav *extension);

This setting works around a <ulink url="https://issues.apache.org/bugzilla/show_bug.cgi?id=38034"> bug</ulink> in older Apache mod_dav versions.

<note> <para> We may deprecate this once Apache 2.2.8 or newer becomes sufficiently ubiquitous, or we figure out a way to detect and work around the bug automatically. </para> </note>

`extension` : | an ESourceWebdav
Returns : | whether the WebDAV server is known to exhibit the bug

Since 3.6

### e_source_webdav_set_avoid_ifmatch ()

    void                e_source_webdav_set_avoid_ifmatch   (ESourceWebdav *extension,
                                                             gboolean avoid_ifmatch);

This setting works around a <ulink url="https://issues.apache.org/bugzilla/show_bug.cgi?id=38034"> bug</ulink> in older Apache mod_dav versions.

<note> <para> We may deprecate this once Apache 2.2.8 or newer becomes sufficiently ubiquitous, or we figure out a way to detect and work around the bug automatically. </para> </note>

`extension` : | an ESourceWebdav
`avoid_ifmatch` : | whether the WebDAV server is known to exhibit the bug

Since 3.6

## Property Details

### The `"avoid-ifmatch"` property

      "avoid-ifmatch"            gboolean              : Read / Write / Construct

Work around a bug in old Apache servers.

Default value: FALSE

### The `"calendar-auto-schedule"` property

      "calendar-auto-schedule"   gboolean              : Read / Write / Construct

Whether the server handles meeting invitations (CalDAV-only).

Default value: FALSE

### The `"display-name"` property

      "display-name"             gchar*                : Read / Write / Construct

Display name of the WebDAV resource.

Default value: ""

### The `"email-address"` property

      "email-address"            gchar*                : Read / Write / Construct

The user's email address.

Default value: ""

### The `"ignore-invalid-cert"` property

      "ignore-invalid-cert"      gboolean              : Read / Write / Construct

Ignore invalid SSL certificates.

Default value: FALSE

### The `"resource-path"` property

      "resource-path"            gchar*                : Read / Write / Construct

Absolute path to a WebDAV resource.

Default value: NULL

### The `"resource-query"` property

      "resource-query"           gchar*                : Read / Write / Construct

Query to access a WebDAV resource.

Default value: NULL

### The `"soup-uri"` property

      "soup-uri"                 SoupURI*              : Read / Write

WebDAV service as a SoupURI.