/*
 * e-ews-connection-utils.h
 *
 * This program 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; either
 * version 2 of the License, or (at your option) version 3.
 *
 * This program 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 the program; if not, see <http://www.gnu.org/licenses/>
 *
 */

#ifndef E_EWS_CONNECTION_UTILS_H
#define E_EWS_CONNECTION_UTILS_H

#include <glib.h>
#include <server/e-ews-connection.h>

G_BEGIN_DECLS

#define E_EWS_CONNECTION_UTILS_CHECK_ELEMENT(element_name, expected_name) \
	(e_ews_connection_utils_check_element (G_STRFUNC, (element_name), (expected_name)))

void		e_ews_connection_utils_unref_in_thread	(gpointer object);
gboolean	e_ews_connection_utils_check_element	(const gchar *function_name,
							 const gchar *element_name,
							 const gchar *expected_name);

void		e_ews_connection_utils_force_off_ntlm_auth_check
							(void);
gboolean	e_ews_connection_utils_get_without_password
							(CamelEwsSettings *ews_settings);
void		e_ews_connection_utils_expired_password_to_error
							(const gchar *service_url,
							 GError **error);
gboolean	e_ews_connection_utils_check_x_ms_credential_headers
							(SoupMessage *message,
							 gint *out_expire_in_days,
							 gboolean *out_expired,
							 gchar **out_service_url);
void		e_ews_connection_utils_prepare_auth_method
							(SoupSession *soup_session,
							 EwsAuthType auth_method);
void		e_ews_connection_utils_authenticate	(EEwsConnection *cnc,
							 SoupSession *session,
							 SoupMessage *msg,
							 SoupAuth *auth,
							 gboolean retrying);
gboolean	e_ews_connection_utils_prepare_message	(EEwsConnection *cnc,
							 SoupSession *session,
							 SoupMessage *message,
							 GCancellable *cancellable);

G_END_DECLS

#endif /* E_EWS_CONNECTION_UTILS_H */


