/* * module-webdav-backend.c * * This library is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . * */ #include "evolution-data-server-config.h" #include #include /* Standard GObject macros */ #define E_TYPE_WEBDAV_BACKEND \ (e_webdav_backend_get_type ()) #define E_WEBDAV_BACKEND(obj) \ (G_TYPE_CHECK_INSTANCE_CAST \ ((obj), E_TYPE_WEBDAV_BACKEND, EWebDAVBackend)) #define E_IS_WEBDAV_BACKEND(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE \ ((obj), E_TYPE_WEBDAV_BACKEND)) typedef struct _EWebDAVBackend EWebDAVBackend; typedef struct _EWebDAVBackendClass EWebDAVBackendClass; typedef struct _EWebDAVBackendFactory EWebDAVBackendFactory; typedef struct _EWebDAVBackendFactoryClass EWebDAVBackendFactoryClass; struct _EWebDAVBackend { EWebDAVCollectionBackend parent; }; struct _EWebDAVBackendClass { EWebDAVCollectionBackendClass parent_class; }; struct _EWebDAVBackendFactory { ECollectionBackendFactory parent; }; struct _EWebDAVBackendFactoryClass { ECollectionBackendFactoryClass parent_class; }; /* Module Entry Points */ void e_module_load (GTypeModule *type_module); void e_module_unload (GTypeModule *type_module); /* Forward Declarations */ GType e_webdav_backend_get_type (void); GType e_webdav_backend_factory_get_type (void); G_DEFINE_DYNAMIC_TYPE ( EWebDAVBackend, e_webdav_backend, E_TYPE_WEBDAV_COLLECTION_BACKEND) G_DEFINE_DYNAMIC_TYPE ( EWebDAVBackendFactory, e_webdav_backend_factory, E_TYPE_COLLECTION_BACKEND_FACTORY) static ESourceAuthenticationResult webdav_backend_authenticate_sync (EBackend *backend, const ENamedParameters *credentials, gchar **out_certificate_pem, GTlsCertificateFlags *out_certificate_errors, GCancellable *cancellable, GError **error) { ESourceCollection *collection_extension; ESource *source; g_return_val_if_fail (E_IS_COLLECTION_BACKEND (backend), E_SOURCE_AUTHENTICATION_ERROR); source = e_backend_get_source (backend); if (e_source_has_extension (source, E_SOURCE_EXTENSION_GOA)) { ESourceGoa *goa_extension; goa_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_GOA); return e_webdav_collection_backend_discover_sync (E_WEBDAV_COLLECTION_BACKEND (backend), e_source_goa_get_calendar_url (goa_extension), e_source_goa_get_contacts_url (goa_extension), credentials, out_certificate_pem, out_certificate_errors, cancellable, error); } collection_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_COLLECTION); return e_webdav_collection_backend_discover_sync (E_WEBDAV_COLLECTION_BACKEND (backend), e_source_collection_get_calendar_url (collection_extension), e_source_collection_get_contacts_url (collection_extension), credentials, out_certificate_pem, out_certificate_errors, cancellable, error); } static void e_webdav_backend_class_init (EWebDAVBackendClass *class) { EBackendClass *backend_class; backend_class = E_BACKEND_CLASS (class); backend_class->authenticate_sync = webdav_backend_authenticate_sync; } static void e_webdav_backend_class_finalize (EWebDAVBackendClass *class) { } static void e_webdav_backend_init (EWebDAVBackend *backend) { } static void e_webdav_backend_factory_class_init (EWebDAVBackendFactoryClass *class) { ECollectionBackendFactoryClass *factory_class; factory_class = E_COLLECTION_BACKEND_FACTORY_CLASS (class); factory_class->factory_name = "webdav"; factory_class->backend_type = E_TYPE_WEBDAV_BACKEND; } static void e_webdav_backend_factory_class_finalize (EWebDAVBackendFactoryClass *class) { } static void e_webdav_backend_factory_init (EWebDAVBackendFactory *factory) { } G_MODULE_EXPORT void e_module_load (GTypeModule *type_module) { e_webdav_backend_register_type (type_module); e_webdav_backend_factory_register_type (type_module); } G_MODULE_EXPORT void e_module_unload (GTypeModule *type_module) { }