comparison libpurple/protocols/msn/notification.c @ 30657:e30865b62859

Initial support for msnp16, based on patch by Masca. References #8247.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Tue, 01 Dec 2009 22:13:30 +0000
parents 23f6f80f45ed
children ed838ad00173
comparison
equal deleted inserted replaced
28688:dbd030780f75 30657:e30865b62859
159 159
160 cmdproc = session->notification->cmdproc; 160 cmdproc = session->notification->cmdproc;
161 161
162 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_END); 162 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_END);
163 163
164 msn_cmdproc_send(cmdproc, "USR", "SSO S %s %s", ticket, response); 164 if (session->protocol_ver >= 16)
165 msn_cmdproc_send(cmdproc, "USR", "SSO S %s %s %s", ticket, response, session->guid);
166 else
167 msn_cmdproc_send(cmdproc, "USR", "SSO S %s %s", ticket, response);
165 } 168 }
166 169
167 static void 170 static void
168 cvr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 171 cvr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
169 { 172 {
1674 purple_debug_misc("msn", "UUX received.\n"); 1677 purple_debug_misc("msn", "UUX received.\n");
1675 cmdproc->last_cmd->payload_cb = uux_cmd_post; 1678 cmdproc->last_cmd->payload_cb = uux_cmd_post;
1676 cmd->payload_len = atoi(cmd->params[1]); 1679 cmd->payload_len = atoi(cmd->params[1]);
1677 } 1680 }
1678 1681
1682 void
1683 msn_notification_send_uux(MsnSession *session, const char *payload)
1684 {
1685 MsnTransaction *trans;
1686 MsnCmdProc *cmdproc;
1687 size_t len = strlen(payload);
1688
1689 cmdproc = session->notification->cmdproc;
1690 purple_debug_misc("msn", "Sending UUX command with payload: %s\n", payload);
1691 trans = msn_transaction_new(cmdproc, "UUX", "%" G_GSIZE_FORMAT, len);
1692 msn_transaction_set_payload(trans, payload, len);
1693 msn_cmdproc_send_trans(cmdproc, trans);
1694 }
1695
1696 void msn_notification_send_uux_endpointdata(MsnSession *session)
1697 {
1698 xmlnode *epDataNode;
1699 xmlnode *capNode;
1700 char *caps;
1701 char *payload;
1702 int length;
1703
1704 epDataNode = xmlnode_new("EndpointData");
1705
1706 capNode = xmlnode_new_child(epDataNode, "Capabilities");
1707 caps = g_strdup_printf("%d:%02d", MSN_CLIENT_ID_CAPABILITIES, MSN_CLIENT_ID_EXT_CAPS);
1708 xmlnode_insert_data(capNode, caps, -1);
1709 g_free(caps);
1710
1711 payload = xmlnode_to_str(epDataNode, &length);
1712
1713 msn_notification_send_uux(session, payload);
1714
1715 xmlnode_free(epDataNode);
1716 g_free(payload);
1717 }
1718
1719 void msn_notification_send_uux_private_endpointdata(MsnSession *session)
1720 {
1721 xmlnode *private;
1722 xmlnode *epname;
1723 xmlnode *idle;
1724 xmlnode *client_type;
1725 xmlnode *state;
1726 char *payload;
1727 int length;
1728
1729 private = xmlnode_new("PrivateEndPointData");
1730
1731 /* TODO: "Pidgin" is a temp EndPointName.. we must use hostid or some.*/
1732 epname = xmlnode_new_child(private, "EpName");
1733 xmlnode_insert_data(epname, "Pidgin", -1);
1734
1735 idle = xmlnode_new_child(private, "Idle");
1736 xmlnode_insert_data(idle, "false", -1);
1737
1738 /* TODO: support different client types */
1739 /* ClientType info (from amsn guys):
1740 0: None
1741 1: Computer
1742 2: Website
1743 3: Mobile / none
1744 4: Xbox / phone /mobile
1745 9: MsnGroup
1746 32: Email member, currently Yahoo!
1747 */
1748 client_type = xmlnode_new_child(private, "ClientType");
1749 xmlnode_insert_data(client_type, "1", -1);
1750
1751 state = xmlnode_new_child(private, "State");
1752 xmlnode_insert_data(state, msn_state_get_text(msn_state_from_account(session->account)), -1);
1753
1754 payload = xmlnode_to_str(private, &length);
1755
1756 msn_notification_send_uux(session, payload);
1757
1758 xmlnode_free(private);
1759 g_free(payload);
1760 }
1761
1679 /************************************************************************** 1762 /**************************************************************************
1680 * Message Types 1763 * Message Types
1681 **************************************************************************/ 1764 **************************************************************************/
1682 1765
1683 static void 1766 static void