예제 #1
0
파일: notification.c 프로젝트: VoxOx/VoxOx
static void
rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
	MsnSession *session;
	MsnUser *user;
	const char *list;
	const char *passport;
	MsnListId list_id;
	int group_id;

	session = cmdproc->session;
	list = cmd->params[1];
	passport = cmd->params[3];
	user = msn_userlist_find_user(session->userlist, passport);

	g_return_if_fail(user != NULL);

	list_id = msn_get_list_id(list);

	if (cmd->param_count == 5)
		group_id = atoi(cmd->params[4]);
	else
		group_id = -1;

	msn_got_rem_user(session, user, list_id, group_id);
	msn_user_update(user);
}
예제 #2
0
static void
rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
    MsnSession *session;
    PecanContact *user;
    const char *list;
    const gchar *user_id; /* passport or guid */
    MsnListId list_id;
    const gchar *group_guid;

    session = cmdproc->session;
    list = cmd->params[1];
    user_id = cmd->params[2];

    if (strcmp (list, "FL") == 0)
        user = pecan_contactlist_find_contact_by_guid (session->contactlist, user_id);
    else
        user = pecan_contactlist_find_contact (session->contactlist, user_id);

    g_return_if_fail(user != NULL);

    list_id = msn_get_list_id(list);

    if (cmd->param_count == 4)
        group_guid = cmd->params[3];
    else
        group_guid = NULL;

    msn_got_rem_contact(session, user, list_id, group_guid);
    pecan_contact_update(user);
}
예제 #3
0
파일: notification.c 프로젝트: VoxOx/VoxOx
static void
add_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
	MsnSession *session;
	MsnUser *user;
	const char *list;
	const char *passport;
	const char *friendly;
	MsnListId list_id;
	int group_id;

	list     = cmd->params[1];
	passport = cmd->params[3];
	friendly = gaim_url_decode(cmd->params[4]);

	session = cmdproc->session;

	user = msn_userlist_find_user(session->userlist, passport);

	if (user == NULL)
	{
		user = msn_user_new(session->userlist, passport, friendly);
		msn_userlist_add_user(session->userlist, user);
	}
	else
		msn_user_set_friendly_name(user, friendly);

	list_id = msn_get_list_id(list);

	if (cmd->param_count >= 6)
		group_id = atoi(cmd->params[5]);
	else
		group_id = -1;

	msn_got_add_user(session, user, list_id, group_id);
	msn_user_update(user);
}
예제 #4
0
static void
adc_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
{
    MsnSession *session;
    PecanContact *user = NULL;
    const gchar *list = NULL;
    const gchar *passport = NULL;
    gchar *friendly = NULL;
    const gchar *user_guid = NULL;
    const gchar *group_guid = NULL;
    MsnListId list_id;
    guint i = 1;

    list = cmd->params[i++];

    for (; i < cmd->param_count; i++)
    {
        const char *chopped_str;

        chopped_str = cmd->params[i] + 2;

        /* Check for Name/email. */
        if (strncmp (cmd->params[i], "N=", 2) == 0)
            passport = chopped_str;
        /* Check for Friendlyname. */
        else if (strncmp (cmd->params[i], "F=", 2) == 0)
            friendly = pecan_url_decode (chopped_str);
        /* Check for Contact GUID. */
        else if (strncmp (cmd->params[i], "C=", 2) == 0)
            user_guid = chopped_str;
        else
            break;
    }

    group_guid = cmd->params[i++];

    session = cmdproc->session;

    if (passport)
        user = pecan_contactlist_find_contact (session->contactlist, passport);
    else if (user_guid)
        user = pecan_contactlist_find_contact_by_guid (session->contactlist, user_guid);

    if (user == NULL)
    {
        user = pecan_contact_new (session->contactlist);
        pecan_contact_set_passport (user, passport);
    }

    list_id = msn_get_list_id(list);

    if (list_id == MSN_LIST_FL)
        pecan_contact_set_guid (user, user_guid);

    msn_got_add_contact(session, user, list_id, group_guid);

    /* There is a user that must me moved to this group */
    if (cmd->trans && cmd->trans->data)
    {
        MsnAddBuddy *data = cmd->trans->data;

        msn_notification_add_buddy (session->notification, "FL", data->who,
                                    user_guid, friendly, data->group_guid);

        g_free (data->who);
        g_free (data->group_guid);
    }

    pecan_contact_update(user);

    g_free (friendly);
}