Frameworks/libpurple.framework/Versions/0.6.2/Headers/session.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 1739 Frameworks/libpurple.framework/Versions/0.6.0/Headers/session.h@8b0daad9656c
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
Evan@653
     1
/**
Evan@653
     2
 * @file session.h MSN session functions
Evan@653
     3
 *
Evan@653
     4
 * purple
Evan@653
     5
 *
Evan@653
     6
 * Purple is the legal property of its developers, whose names are too numerous
Evan@653
     7
 * to list here.  Please refer to the COPYRIGHT file distributed with this
Evan@653
     8
 * source distribution.
Evan@653
     9
 *
Evan@653
    10
 * This program is free software; you can redistribute it and/or modify
Evan@653
    11
 * it under the terms of the GNU General Public License as published by
Evan@653
    12
 * the Free Software Foundation; either version 2 of the License, or
Evan@653
    13
 * (at your option) any later version.
Evan@653
    14
 *
Evan@653
    15
 * This program is distributed in the hope that it will be useful,
Evan@653
    16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Evan@653
    17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Evan@653
    18
 * GNU General Public License for more details.
Evan@653
    19
 *
Evan@653
    20
 * You should have received a copy of the GNU General Public License
Evan@653
    21
 * along with this program; if not, write to the Free Software
Evan@653
    22
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
Evan@653
    23
 */
Evan@653
    24
#ifndef _MSN_SESSION_H_
Evan@653
    25
#define _MSN_SESSION_H_
Evan@653
    26
Evan@653
    27
typedef struct _MsnSession MsnSession;
Evan@653
    28
Evan@653
    29
#include "sslconn.h"
Evan@653
    30
Evan@653
    31
#include "user.h"
Evan@653
    32
#include "slpcall.h"
Evan@653
    33
Evan@653
    34
#include "notification.h"
Evan@653
    35
#include "switchboard.h"
Evan@653
    36
#include "group.h"
Evan@653
    37
Evan@653
    38
#include "nexus.h"
Evan@653
    39
#include "httpconn.h"
Evan@653
    40
#include "oim.h"
Evan@653
    41
Evan@653
    42
#include "userlist.h"
Evan@653
    43
#include "sync.h"
Evan@653
    44
Evan@653
    45
/**
Evan@653
    46
 * Types of errors.
Evan@653
    47
 */
Evan@653
    48
typedef enum
Evan@653
    49
{
Evan@653
    50
	MSN_ERROR_SERVCONN,
Evan@653
    51
	MSN_ERROR_UNSUPPORTED_PROTOCOL,
Evan@653
    52
	MSN_ERROR_HTTP_MALFORMED,
Evan@653
    53
	MSN_ERROR_AUTH,
Evan@653
    54
	MSN_ERROR_BAD_BLIST,
Evan@653
    55
	MSN_ERROR_SIGN_OTHER,
Evan@653
    56
	MSN_ERROR_SERV_DOWN,
Evan@653
    57
	MSN_ERROR_SERV_UNAVAILABLE
Evan@653
    58
Evan@653
    59
} MsnErrorType;
Evan@653
    60
Evan@653
    61
/**
Evan@653
    62
 * Login steps.
Evan@653
    63
 */
Evan@653
    64
typedef enum
Evan@653
    65
{
Evan@653
    66
	MSN_LOGIN_STEP_START,
Evan@653
    67
	MSN_LOGIN_STEP_HANDSHAKE,
Evan@653
    68
	MSN_LOGIN_STEP_TRANSFER,
Evan@653
    69
	MSN_LOGIN_STEP_HANDSHAKE2,
Evan@653
    70
	MSN_LOGIN_STEP_AUTH_START,
Evan@653
    71
	MSN_LOGIN_STEP_AUTH,
Evan@653
    72
	MSN_LOGIN_STEP_GET_COOKIE,
Evan@653
    73
	MSN_LOGIN_STEP_AUTH_END,
Evan@653
    74
	MSN_LOGIN_STEP_SYN,
Evan@653
    75
	MSN_LOGIN_STEP_END
Evan@653
    76
Evan@653
    77
} MsnLoginStep;
Evan@653
    78
Evan@653
    79
#define MSN_LOGIN_STEPS MSN_LOGIN_STEP_END
Evan@653
    80
Evan@653
    81
struct _MsnSession
Evan@653
    82
{
Evan@653
    83
	PurpleAccount *account;
Evan@653
    84
	MsnUser *user;
Evan@653
    85
Evan@653
    86
	guint protocol_ver;
Evan@653
    87
Evan@653
    88
	MsnLoginStep login_step; /**< The current step in the login process. */
Evan@653
    89
Evan@653
    90
	gboolean connected;
Evan@653
    91
	gboolean logged_in; /**< A temporal flag to ignore local buddy list adds. */
Evan@1427
    92
	int      adl_fqy; /**< A count of ADL/FQY so status is only changed once. */
Evan@653
    93
	gboolean destroying; /**< A flag that states if the session is being destroyed. */
Evan@653
    94
	gboolean http_method;
Evan@653
    95
Evan@653
    96
	MsnNotification *notification;
Evan@770
    97
	MsnNexus        *nexus;
Evan@770
    98
	MsnOim          *oim;
Evan@770
    99
	MsnSync         *sync;
Evan@770
   100
	MsnUserList     *userlist;
Evan@770
   101
	char            *abch_cachekey;
Evan@653
   102
Evan@653
   103
	int servconns_count; /**< The count of server connections. */
Evan@653
   104
	GList *switches; /**< The list of all the switchboards. */
Evan@653
   105
	GList *slplinks; /**< The list of all the slplinks. */
Evan@653
   106
Evan@653
   107
	/*psm info*/
Evan@653
   108
	char *psm;
Evan@653
   109
Evan@770
   110
#if 0
Evan@653
   111
	char *blocked_text;
Evan@770
   112
#endif
Evan@653
   113
Evan@653
   114
	struct
Evan@653
   115
	{
Evan@653
   116
		char *kv;
Evan@653
   117
		char *sid;
Evan@653
   118
		char *mspauth;
Evan@653
   119
		unsigned long sl;
Evan@653
   120
		char *client_ip;
Evan@653
   121
		int client_port;
Evan@653
   122
		char *mail_url;
Evan@653
   123
		gulong mail_timestamp;
Evan@653
   124
		gboolean email_enabled;
Evan@653
   125
	} passport_info;
Evan@653
   126
Evan@653
   127
	GHashTable *soap_table;
Evan@700
   128
	guint soap_cleanup_handle;
Evan@653
   129
};
Evan@653
   130
Evan@653
   131
/**
Evan@653
   132
 * Creates an MSN session.
Evan@653
   133
 *
Evan@653
   134
 * @param account The account.
Evan@653
   135
 *
Evan@653
   136
 * @return The new MSN session.
Evan@653
   137
 */
Evan@653
   138
MsnSession *msn_session_new(PurpleAccount *account);
Evan@653
   139
Evan@653
   140
/**
Evan@653
   141
 * Destroys an MSN session.
Evan@653
   142
 *
Evan@653
   143
 * @param session The MSN session to destroy.
Evan@653
   144
 */
Evan@653
   145
void msn_session_destroy(MsnSession *session);
Evan@653
   146
Evan@653
   147
/**
Evan@653
   148
 * Connects to and initiates an MSN session.
Evan@653
   149
 *
Evan@653
   150
 * @param session     The MSN session.
Evan@653
   151
 * @param host        The dispatch server host.
Evan@653
   152
 * @param port        The dispatch server port.
Evan@653
   153
 * @param http_method Whether to use or not http_method.
Evan@653
   154
 *
Evan@653
   155
 * @return @c TRUE on success, @c FALSE on failure.
Evan@653
   156
 */
Evan@653
   157
gboolean msn_session_connect(MsnSession *session,
Evan@653
   158
							 const char *host, int port,
Evan@653
   159
							 gboolean http_method);
Evan@653
   160
Evan@653
   161
/**
Evan@653
   162
 * Disconnects from an MSN session.
Evan@653
   163
 *
Evan@653
   164
 * @param session The MSN session.
Evan@653
   165
 */
Evan@653
   166
void msn_session_disconnect(MsnSession *session);
Evan@653
   167
Evan@653
   168
 /**
Evan@653
   169
 * Finds a switchboard with the given username.
Evan@653
   170
 *
Evan@653
   171
 * @param session The MSN session.
Evan@653
   172
 * @param username The username to search for.
Evan@653
   173
 *
Evan@653
   174
 * @return The switchboard, if found.
Evan@653
   175
 */
Evan@653
   176
MsnSwitchBoard *msn_session_find_swboard(MsnSession *session,
Evan@653
   177
										 const char *username);
Evan@653
   178
Evan@653
   179
 /**
Evan@653
   180
 * Finds a switchboard with the given conversation.
Evan@653
   181
 *
Evan@653
   182
 * @param session The MSN session.
Evan@653
   183
 * @param conv    The conversation to search for.
Evan@653
   184
 *
Evan@653
   185
 * @return The switchboard, if found.
Evan@653
   186
 */
Evan@653
   187
MsnSwitchBoard *msn_session_find_swboard_with_conv(MsnSession *session,
Evan@653
   188
												   PurpleConversation *conv);
Evan@653
   189
/**
Evan@653
   190
 * Finds a switchboard with the given chat ID.
Evan@653
   191
 *
Evan@653
   192
 * @param session The MSN session.
Evan@653
   193
 * @param chat_id The chat ID to search for.
Evan@653
   194
 *
Evan@653
   195
 * @return The switchboard, if found.
Evan@653
   196
 */
Evan@653
   197
MsnSwitchBoard *msn_session_find_swboard_with_id(const MsnSession *session,
Evan@653
   198
												 int chat_id);
Evan@653
   199
Evan@653
   200
/**
Evan@653
   201
 * Returns a switchboard to communicate with certain username.
Evan@653
   202
 *
Evan@653
   203
 * @param session The MSN session.
Evan@653
   204
 * @param username The username to search for.
Evan@653
   205
 * @param flag The flag of the switchboard
Evan@653
   206
 *
Evan@653
   207
 * @return The switchboard.
Evan@653
   208
 */
Evan@653
   209
MsnSwitchBoard *msn_session_get_swboard(MsnSession *session,
Evan@653
   210
										const char *username, MsnSBFlag flag);
Evan@653
   211
Evan@653
   212
/**
Evan@653
   213
 * Sets an error for the MSN session.
Evan@653
   214
 *
Evan@653
   215
 * @param session The MSN session.
Evan@653
   216
 * @param error The error.
Evan@653
   217
 * @param info Extra information.
Evan@653
   218
 */
Evan@653
   219
void msn_session_set_error(MsnSession *session, MsnErrorType error,
Evan@653
   220
						   const char *info);
Evan@653
   221
Evan@653
   222
/**
Evan@653
   223
 * Sets the current step in the login proccess.
Evan@653
   224
 *
Evan@653
   225
 * @param session The MSN session.
Evan@653
   226
 * @param step The current step.
Evan@653
   227
 */
Evan@653
   228
void msn_session_set_login_step(MsnSession *session, MsnLoginStep step);
Evan@653
   229
Evan@653
   230
/**
Evan@653
   231
 * Finish the login proccess.
Evan@653
   232
 *
Evan@653
   233
 * @param session The MSN session.
Evan@653
   234
 */
Evan@653
   235
void msn_session_finish_login(MsnSession *session);
Evan@653
   236
Evan@653
   237
/*post message to User*/
Evan@653
   238
void msn_session_report_user(MsnSession *session,const char *passport,
Evan@653
   239
							const char *msg,PurpleMessageFlags flags);
Evan@653
   240
Evan@653
   241
#endif /* _MSN_SESSION_H_ */