comparison libpurple/protocols/msn/notification.c @ 25237:401f548e3544

propagate from branch 'im.pidgin.pidgin' (head df6eba32e5b6b34d7483cbfb7e9f2e4c836ac35f) to branch 'org.darkrain42.pidgin.buddy-add' (head 6831808999a270f8c1a128c7430a73d3dc0bfae2)
author Paul Aurich <paul@darkrain42.org>
date Sun, 21 Dec 2008 18:32:37 +0000
parents d6de4f9de12d
children f5188d4d84e3
comparison
equal deleted inserted replaced
25172:125cac3e24ee 25237:401f548e3544
847 847
848 static void 848 static void
849 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, 849 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
850 size_t len) 850 size_t len)
851 { 851 {
852 purple_debug_info("msn", "FQY payload:\n%s\n", payload); 852 MsnUserList *userlist;
853 g_return_if_fail(cmdproc->session != NULL); 853 xmlnode *ml, *d, *c;
854 /* msn_notification_post_adl(cmdproc, payload, len); */ 854 const char *domain;
855 /* msn_get_address_book(cmdproc->session, MSN_AB_SAVE_CONTACT, NULL, NULL); */ 855 const char *local;
856 const char *type;
857 char *passport;
858 MsnNetwork network = MSN_NETWORK_PASSPORT;
859
860 userlist = cmdproc->session->userlist;
861
862 /* FQY response:
863 <ml><d n="domain.com"><c n="local-node" t="network" /></d></ml> */
864 ml = xmlnode_from_str(payload, len);
865 d = xmlnode_get_child(ml, "d");
866 c = xmlnode_get_child(d, "c");
867 domain = xmlnode_get_attrib(d, "n");
868 local = xmlnode_get_attrib(c, "n");
869 type = xmlnode_get_attrib(c, "t");
870
871 passport = g_strdup_printf("%s@%s", local, domain);
872
873 if (type != NULL)
874 network = (MsnNetwork)strtoul(type, NULL, 10);
875 purple_debug_info("msn", "FQY response says %s is from network %d\n",
876 passport, network);
877 msn_userlist_add_pending_buddy(userlist, passport, network);
878
879 g_free(passport);
880 xmlnode_free(ml);
856 } 881 }
857 882
858 static void 883 static void
859 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 884 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
860 { 885 {
1576 MsnSession *session; 1601 MsnSession *session;
1577 PurpleAccount *account; 1602 PurpleAccount *account;
1578 MsnUser *user; 1603 MsnUser *user;
1579 const char *passport; 1604 const char *passport;
1580 char *psm_str, *str; 1605 char *psm_str, *str;
1581 CurrentMedia media = {NULL, NULL, NULL}; 1606 CurrentMedia media = {CURRENT_MEDIA_UNKNOWN, NULL, NULL, NULL};
1582 1607
1583 session = cmdproc->session; 1608 session = cmdproc->session;
1584 account = session->account; 1609 account = session->account;
1585 1610
1586 passport = cmd->params[0]; 1611 passport = cmd->params[0];
1931 g_hash_table_destroy(table); 1956 g_hash_table_destroy(table);
1932 } 1957 }
1933 1958
1934 void 1959 void
1935 msn_notification_add_buddy_to_list(MsnNotification *notification, MsnListId list_id, 1960 msn_notification_add_buddy_to_list(MsnNotification *notification, MsnListId list_id,
1936 const char *who) 1961 MsnUser *user)
1937 { 1962 {
1938 MsnCmdProc *cmdproc; 1963 MsnCmdProc *cmdproc;
1939 MsnListOp list_op = 1 << list_id; 1964 MsnListOp list_op = 1 << list_id;
1940 xmlnode *adl_node; 1965 xmlnode *adl_node;
1941 char *payload; 1966 char *payload;
1944 cmdproc = notification->servconn->cmdproc; 1969 cmdproc = notification->servconn->cmdproc;
1945 1970
1946 adl_node = xmlnode_new("ml"); 1971 adl_node = xmlnode_new("ml");
1947 adl_node->child = NULL; 1972 adl_node->child = NULL;
1948 1973
1949 msn_add_contact_xml(notification->session, adl_node, who, list_op, 1974 msn_add_contact_xml(notification->session, adl_node, user->passport,
1950 MSN_NETWORK_PASSPORT); 1975 list_op, user->networkid);
1951 1976
1952 payload = xmlnode_to_str(adl_node,&payload_len); 1977 payload = xmlnode_to_str(adl_node,&payload_len);
1953 xmlnode_free(adl_node); 1978 xmlnode_free(adl_node);
1954 1979
1955 msn_notification_post_adl(notification->servconn->cmdproc, 1980 msn_notification_post_adl(notification->servconn->cmdproc,
1957 g_free(payload); 1982 g_free(payload);
1958 } 1983 }
1959 1984
1960 void 1985 void
1961 msn_notification_rem_buddy_from_list(MsnNotification *notification, MsnListId list_id, 1986 msn_notification_rem_buddy_from_list(MsnNotification *notification, MsnListId list_id,
1962 const char *who) 1987 MsnUser *user)
1963 { 1988 {
1964 MsnCmdProc *cmdproc; 1989 MsnCmdProc *cmdproc;
1965 MsnTransaction *trans; 1990 MsnTransaction *trans;
1966 MsnListOp list_op = 1 << list_id; 1991 MsnListOp list_op = 1 << list_id;
1967 xmlnode *rml_node; 1992 xmlnode *rml_node;
1971 cmdproc = notification->servconn->cmdproc; 1996 cmdproc = notification->servconn->cmdproc;
1972 1997
1973 rml_node = xmlnode_new("ml"); 1998 rml_node = xmlnode_new("ml");
1974 rml_node->child = NULL; 1999 rml_node->child = NULL;
1975 2000
1976 msn_add_contact_xml(notification->session, rml_node, who, list_op, MSN_NETWORK_PASSPORT); 2001 msn_add_contact_xml(notification->session, rml_node, user->passport,
2002 list_op, user->networkid);
1977 2003
1978 payload = xmlnode_to_str(rml_node, &payload_len); 2004 payload = xmlnode_to_str(rml_node, &payload_len);
1979 xmlnode_free(rml_node); 2005 xmlnode_free(rml_node);
1980 2006
1981 purple_debug_info("msn", "Send RML with payload:\n%s\n", payload); 2007 purple_debug_info("msn", "Send RML with payload:\n%s\n", payload);