Mercurial > pidgin
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); |