Frameworks/libpurple.framework/Versions/0.6.2/Headers/contact.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 2539 Frameworks/libpurple.framework/Versions/0.6.0/Headers/contact.h@2c9881ea8cdf
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
     1 /**
     2  * @file contact.h			Header file for contact.c
     3  *	Author
     4  * 		MaYuan<mayuan2006@gmail.com>
     5  * purple
     6  *
     7  * Purple is the legal property of its developers, whose names are too numerous
     8  * to list here.  Please refer to the COPYRIGHT file distributed with this
     9  * source distribution.
    10  *
    11  * This program is free software; you can redistribute it and/or modify
    12  * it under the terms of the GNU General Public License as published by
    13  * the Free Software Foundation; either version 2 of the License, or
    14  * (at your option) any later version.
    15  *
    16  * This program is distributed in the hope that it will be useful,
    17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    19  * GNU General Public License for more details.
    20  *
    21  * You should have received a copy of the GNU General Public License
    22  * along with this program; if not, write to the Free Software
    23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    24  */
    25 #ifndef _MSN_CONTACT_H_
    26 #define _MSN_CONTACT_H_
    27 
    28 #include "session.h"
    29 #include "soap.h"
    30 
    31 #define MSN_APPLICATION_ID "CFE80F9D-180F-4399-82AB-413F33A1FA11"
    32 
    33 #define MSN_CONTACT_SERVER	"omega.contacts.msn.com"
    34 
    35 /* Get Contact List */
    36 
    37 #define MSN_GET_CONTACT_POST_URL	"/abservice/SharingService.asmx"
    38 #define MSN_GET_CONTACT_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/FindMembership"
    39 
    40 #define MSN_GET_CONTACT_UPDATE_XML \
    41 	"<View>Full</View>"\
    42 	"<deltasOnly>true</deltasOnly>"\
    43 	"<lastChange>%s</lastChange>"
    44 
    45 #define MSN_GET_CONTACT_TEMPLATE	"<?xml version='1.0' encoding='utf-8'?>"\
    46 "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
    47 	"<soap:Header xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
    48 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
    49 			"<ApplicationId xmlns=\"http://www.msn.com/webservices/AddressBook\">" MSN_APPLICATION_ID "</ApplicationId>"\
    50 			"<IsMigration xmlns=\"http://www.msn.com/webservices/AddressBook\">false</IsMigration>"\
    51 			"<PartnerScenario xmlns=\"http://www.msn.com/webservices/AddressBook\">%s</PartnerScenario>"\
    52 		 "</ABApplicationHeader>"\
    53 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
    54 			"<ManagedGroupRequest xmlns=\"http://www.msn.com/webservices/AddressBook\">false</ManagedGroupRequest>"\
    55 			"<TicketToken>EMPTY</TicketToken>"\
    56 		"</ABAuthHeader>"\
    57 	"</soap:Header>"\
    58 	"<soap:Body xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\
    59 		"<FindMembership xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
    60 			"<serviceFilter xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
    61 				"<Types xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
    62 					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Messenger</ServiceType>"\
    63 					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Invitation</ServiceType>"\
    64 					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">SocialNetwork</ServiceType>"\
    65 					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Space</ServiceType>"\
    66 					"<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Profile</ServiceType>"\
    67 				"</Types>"\
    68 			"</serviceFilter>"\
    69 			"%s"\
    70 		"</FindMembership>"\
    71 	"</soap:Body>"\
    72 "</soap:Envelope>"
    73 
    74 /************************************************
    75  * Address Book SOAP
    76  * *********************************************/
    77 
    78 #define MSN_ADDRESS_BOOK_POST_URL	"/abservice/abservice.asmx"
    79 
    80 /* Create AddressBook template */
    81 #define MSN_ADD_ADDRESSBOOK_SOAP_ACTION     "http://www.msn.com/webservices/AddressBook/ABAdd"
    82 
    83 #define MSN_ADD_ADDRESSBOOK_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
    84 "<soap:Envelope"\
    85 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
    86 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
    87 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
    88 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
    89 	"<soap:Header>"\
    90 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
    91 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
    92 			"<IsMigration>false</IsMigration>"\
    93 			"<PartnerScenario>Initial</PartnerScenario>"\
    94 		"</ABApplicationHeader>"\
    95 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
    96 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
    97 			"<TicketToken>EMPTY</TicketToken>"\
    98 		"</ABAuthHeader>"\
    99 	"</soap:Header>"\
   100 	"<soap:Body>"\
   101 		"<ABAdd xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   102 			"<abInfo>"\
   103 				"<name/>"\
   104 				"<ownerPuid>0</ownerPuid>"\
   105 				"<ownerEmail>%s</ownerEmail>"\
   106 				"<fDefault>true</fDefault>"\
   107 			"</abInfo>"\
   108 		"</ABAdd>"\
   109 	"</soap:Body>"\
   110 "</soap:Envelope>"
   111 
   112 /* Get AddressBook */
   113 #define MSN_GET_ADDRESS_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABFindAll"
   114 #define MSN_GET_ADDRESS_FULL_TIME	"0001-01-01T00:00:00.0000000-08:00"
   115 #define MSN_GET_ADDRESS_UPDATE_XML \
   116 	"<deltasOnly>true</deltasOnly>"\
   117 	"<lastChange>%s</lastChange>"
   118 
   119 #define MSN_GET_GLEAM_UPDATE_XML \
   120 	"%s"\
   121 	"<dynamicItemView>Gleam</dynamicItemView>"\
   122 	"<dynamicItemLastChange>%s</dynamicItemLastChange>"
   123 
   124 #define MSN_GET_ADDRESS_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   125 "<soap:Envelope"\
   126 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   127 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   128 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   129 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   130 	"<soap:Header>"\
   131 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   132 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   133 			"<IsMigration>false</IsMigration>"\
   134 			"<PartnerScenario>%s</PartnerScenario>"\
   135 		"</ABApplicationHeader>"\
   136 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   137 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   138 			"<TicketToken>EMPTY</TicketToken>"\
   139 		"</ABAuthHeader>"\
   140 	"</soap:Header>"\
   141 	"<soap:Body>"\
   142 		"<ABFindAll xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   143 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   144 			"<abView>Full</abView>"\
   145 			"%s"\
   146 		"</ABFindAll>"\
   147 	"</soap:Body>"\
   148 "</soap:Envelope>"
   149 
   150 
   151 /*Gleams SOAP request template*/
   152 #define MSN_GET_GLEAMS_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABFindAll"
   153 #define MSN_GLEAMS_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   154 "<soap:Envelope"\
   155 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   156 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   157 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   158 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   159 	"<soap:Header>"\
   160 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   161 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   162 			"<IsMigration>false</IsMigration>"\
   163 			"<PartnerScenario>Initial</PartnerScenario>"\
   164 		"</ABApplicationHeader>"\
   165 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   166 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   167 			"<TicketToken>EMPTY</TicketToken>"\
   168 		"</ABAuthHeader>"\
   169 	"</soap:Header>"\
   170 	"<soap:Body>"\
   171 		"<ABFindAll xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   172 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   173 			"<abView>Full</abView>"\
   174 			"<dynamicItemView>Gleam</dynamicItemView>"\
   175 			"<dynamicItemLastChange>0001-01-01T00:00:00.0000000-08:00</dynamicItemLastChange>"\
   176 		"</ABFindAll>"\
   177 	"</soap:Body>"\
   178 "</soap:Envelope>"
   179 
   180 
   181 /*******************************************************
   182  * Contact Management SOAP actions
   183  *******************************************************/
   184 
   185 /* Add a new contact */
   186 #define MSN_CONTACT_ADD_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABContactAdd"
   187 #define MSN_CONTACT_LIVE_PENDING_XML \
   188 	"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   189 		"<contactInfo>"\
   190 			"<contactType>LivePending</contactType>"\
   191 			"<passportName>%s</passportName>"\
   192 			"<isMessengerUser>true</isMessengerUser>"\
   193 		"</contactInfo>"\
   194 	"</Contact>"
   195 
   196 #define MSN_CONTACT_XML	\
   197 	"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   198 		"<contactInfo>"\
   199 			"<passportName>%s</passportName>"\
   200 			"<isSmtp>false</isSmtp>"\
   201 			"<isMessengerUser>true</isMessengerUser>"\
   202 		"</contactInfo>"\
   203 	"</Contact>"
   204 
   205 #define MSN_CONTACT_DISPLAYNAME_XML	\
   206 	"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   207 		"<contactInfo>"\
   208 			"<displayName>%s</displayName>"\
   209 			"<passportName>%s</passportName>"\
   210 			"<isMessengerUser>true</isMessengerUser>"\
   211 		"</contactInfo>"\
   212 	"</Contact>"
   213 
   214 #define MSN_CONTACT_ID_XML \
   215 	"<Contact>"\
   216 		"<contactId>%s</contactId>"\
   217 	"</Contact>"
   218 
   219 #define MSN_CONTACT_EMAIL_XML \
   220 	"<Contact>"\
   221 		"<contactInfo>"\
   222 			"<emails>"\
   223 				"<ContactEmail>"\
   224 					"<contactEmailType>%s</contactEmailType>"\
   225 					"<email>%s</email>"\
   226 					"<isMessengerEnabled>true</isMessengerEnabled>"\
   227 					"<Capability>%d</Capability>"\
   228 					"<MessengerEnabledExternally>false</MessengerEnabledExternally>"\
   229 					"<propertiesChanged/>"\
   230 				"</ContactEmail>"\
   231 			"</emails>"\
   232 		"</contactInfo>"\
   233 	"</Contact>"
   234 
   235 #define MSN_CONTACT_INVITE_MESSAGE_XML \
   236 	"<MessengerMemberInfo>"\
   237 		"<PendingAnnotations>"\
   238 			"<Annotation>"\
   239 				"<Name>MSN.IM.InviteMessage</Name>"\
   240 				"<Value>%s</Value>"\
   241 			"</Annotation>"\
   242 		"</PendingAnnotations>"\
   243 		"<DisplayName>%s</DisplayName>"\
   244 	"</MessengerMemberInfo>"
   245 
   246 #define MSN_ADD_CONTACT_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   247 "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   248 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   249 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   250 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   251 	"<soap:Header>"\
   252 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   253 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   254 			"<IsMigration>false</IsMigration>"\
   255 			"<PartnerScenario>ContactSave</PartnerScenario>"\
   256 		"</ABApplicationHeader>"\
   257 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   258 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   259 			"<TicketToken>EMPTY</TicketToken>"\
   260 		"</ABAuthHeader>"\
   261 	"</soap:Header>"\
   262 	"<soap:Body>"\
   263 		"<ABContactAdd xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   264 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   265 			"<contacts>%s</contacts>"\
   266 			"<options>"\
   267 				"<EnableAllowListManagement>true</EnableAllowListManagement>"\
   268 			"</options>"\
   269 		"</ABContactAdd>"\
   270 	"</soap:Body>"\
   271 "</soap:Envelope>"
   272 
   273 /* Add a contact to a group */
   274 #define MSN_ADD_CONTACT_GROUP_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupContactAdd"
   275 #define MSN_ADD_CONTACT_GROUP_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   276 "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   277 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   278 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   279 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   280 	"<soap:Header>"\
   281 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   282 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   283 			"<IsMigration>false</IsMigration>"\
   284 			"<PartnerScenario>ContactSave</PartnerScenario>"\
   285 		"</ABApplicationHeader>"\
   286 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   287 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   288 			"<TicketToken>EMPTY</TicketToken>"\
   289 		"</ABAuthHeader>"\
   290 	"</soap:Header>"\
   291 	"<soap:Body>"\
   292 		"<ABGroupContactAdd xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   293 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   294 			"<groupFilter>"\
   295 				"<groupIds>"\
   296 					"<guid>%s</guid>"\
   297 				"</groupIds>"\
   298 			"</groupFilter>"\
   299 			"<contacts>%s</contacts>"\
   300 			"<groupContactAddOptions>"\
   301 				"<fGenerateMissingQuickName>true</fGenerateMissingQuickName>"\
   302 				"<EnableAllowListManagement>true</EnableAllowListManagement>"\
   303 			"</groupContactAddOptions>"\
   304 			"%s"\
   305 		"</ABGroupContactAdd>"\
   306 	"</soap:Body>"\
   307 "</soap:Envelope>"
   308 
   309 /* Delete a contact from the Contact List */
   310 #define MSN_CONTACT_DEL_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABContactDelete"
   311 #define MSN_DEL_CONTACT_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   312 "<soap:Envelope"\
   313 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   314 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   315 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   316 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   317 	"<soap:Header>"\
   318 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   319 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   320 			"<IsMigration>false</IsMigration>"\
   321 			"<PartnerScenario>Timer</PartnerScenario>"\
   322 		"</ABApplicationHeader>"\
   323 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   324 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   325 			"<TicketToken>EMPTY</TicketToken>"\
   326 		"</ABAuthHeader>"\
   327 	"</soap:Header>"\
   328 	"<soap:Body>"\
   329 		"<ABContactDelete xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   330 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   331 			"<contacts>%s</contacts>"\
   332 		"</ABContactDelete>"\
   333 	"</soap:Body>"\
   334 "</soap:Envelope>"
   335 
   336 /* Remove a contact from a group */
   337 #define MSN_CONTACT_DEL_GROUP_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupContactDelete"
   338 #define MSN_CONTACT_DEL_GROUP_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   339 "<soap:Envelope"\
   340 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   341 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   342 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   343 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   344 	"<soap:Header>"\
   345 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   346 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   347 			"<IsMigration>false</IsMigration>"\
   348 			"<PartnerScenario>Timer</PartnerScenario>"\
   349 		"</ABApplicationHeader>"\
   350 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   351 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   352 			"<TicketToken>EMPTY</TicketToken>"\
   353 		"</ABAuthHeader>"\
   354 	"</soap:Header>"\
   355 	"<soap:Body>"\
   356 		"<ABGroupContactDelete xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   357 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   358 			"<contacts>%s</contacts>"\
   359 			"<groupFilter>"\
   360 				"<groupIds>"\
   361 					"<guid>%s</guid>"\
   362 				"</groupIds>"\
   363 			"</groupFilter>"\
   364 		"</ABGroupContactDelete>"\
   365 	"</soap:Body>"\
   366 "</soap:Envelope>"
   367 
   368 
   369 /* Update Contact Information */
   370 #define MSN_CONTACT_UPDATE_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABContactUpdate"
   371 #define MSN_CONTACT_UPDATE_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   372 "<soap:Envelope"\
   373 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   374 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   375 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   376 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   377 	"<soap:Header>"\
   378 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   379 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   380 			"<IsMigration>false</IsMigration>"\
   381 			"<PartnerScenario>Timer</PartnerScenario>"\
   382 		"</ABApplicationHeader>"\
   383 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   384 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   385 			"<TicketToken>EMPTY</TicketToken>"\
   386 		"</ABAuthHeader>"\
   387 	"</soap:Header>"\
   388 	"<soap:Body>"\
   389 		"<ABContactUpdate xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   390 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   391 			"<contacts>"\
   392 				"<Contact xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   393 					""\
   394 				"</Contact>"\
   395 			"</contacts>"\
   396 		"</ABContactUpdate>"\
   397 	"</soap:Body>"\
   398 "</soap:Envelope>"
   399 
   400 /*******************************************************
   401  * Add/Delete contact from lists SOAP actions
   402  *******************************************************/
   403 
   404 /* block means delete from allow list and add contact to block list */
   405 #define MSN_SHARE_POST_URL		"/abservice/SharingService.asmx"
   406 
   407 #define MSN_ADD_MEMBER_TO_LIST_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/AddMember"
   408 #define MSN_DELETE_MEMBER_FROM_LIST_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/DeleteMember"
   409 
   410 #define MSN_MEMBER_PASSPORT_XML	\
   411 	"<Member xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"%s\">"\
   412 		"<Type>%s</Type>"\
   413 		"<State>Accepted</State>"\
   414 		"<%s>%s</%s>"\
   415 	"</Member>"
   416 
   417 #define MSN_MEMBER_MEMBERSHIPID_XML	\
   418 	"<Member xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"%s\">"\
   419 		"<Type>%s</Type>"\
   420 		"<MembershipId>%u</MembershipId>"\
   421 		"<State>Accepted</State>"\
   422 	"</Member>"
   423 
   424 /* first delete contact from allow list */
   425 
   426 #define MSN_CONTACT_DELETE_FROM_LIST_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   427 "<soap:Envelope"\
   428 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   429 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   430 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   431 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   432 	"<soap:Header>"\
   433 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   434 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   435 			"<IsMigration>false</IsMigration>"\
   436 			"<PartnerScenario>%s</PartnerScenario>"\
   437 		"</ABApplicationHeader>"\
   438 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   439 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   440 			"<TicketToken>EMPTY</TicketToken>"\
   441 		"</ABAuthHeader>"\
   442 	"</soap:Header>"\
   443 	"<soap:Body>"\
   444 		"<DeleteMember xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   445 			"<serviceHandle>"\
   446 				"<Id>0</Id>"\
   447 				"<Type>Messenger</Type>"\
   448 				"<ForeignId></ForeignId>"\
   449 			"</serviceHandle>"\
   450 			"<memberships>"\
   451 				"<Membership>"\
   452 					"<MemberRole>%s</MemberRole>"\
   453 					"<Members>"\
   454 						"%s"\
   455 					"</Members>"\
   456 				"</Membership>"\
   457 			"</memberships>"\
   458 		"</DeleteMember>"\
   459 	"</soap:Body>"\
   460 "</soap:Envelope>"
   461 
   462 #define MSN_CONTACT_ADD_TO_LIST_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   463 "<soap:Envelope"\
   464 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   465 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   466 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   467 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   468 	"<soap:Header>"\
   469 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   470 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   471 			"<IsMigration>false</IsMigration>"\
   472 			"<PartnerScenario>%s</PartnerScenario>"\
   473 		"</ABApplicationHeader>"\
   474 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   475 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   476 			"<TicketToken>EMPTY</TicketToken>"\
   477 		"</ABAuthHeader>"\
   478 	"</soap:Header>"\
   479 	"<soap:Body>"\
   480 		"<AddMember xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   481 			"<serviceHandle>"\
   482 				"<Id>0</Id>"\
   483 				"<Type>Messenger</Type>"\
   484 				"<ForeignId></ForeignId>"\
   485 			"</serviceHandle>"\
   486 			"<memberships>"\
   487 				"<Membership>"\
   488 					"<MemberRole>%s</MemberRole>"\
   489 					"<Members>"\
   490 						"%s"\
   491 					"</Members>"\
   492 				"</Membership>"\
   493 			"</memberships>"\
   494 		"</AddMember>"\
   495 	"</soap:Body>"\
   496 "</soap:Envelope>"
   497 
   498 
   499 
   500 /*******************************************************
   501  * Group management SOAP actions
   502  *******************************************************/
   503 
   504 /* add a group */
   505 #define MSN_GROUP_ADD_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupAdd"
   506 #define MSN_GROUP_ADD_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   507 "<soap:Envelope"\
   508 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   509 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   510 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   511 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   512 	"<soap:Header>"\
   513 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   514 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   515 			"<IsMigration>false</IsMigration>"\
   516 			"<PartnerScenario>GroupSave</PartnerScenario>"\
   517 		"</ABApplicationHeader>"\
   518 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   519 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   520 			"<TicketToken>EMPTY</TicketToken>"\
   521 		"</ABAuthHeader>"\
   522 	"</soap:Header>"\
   523 	"<soap:Body>"\
   524 		"<ABGroupAdd xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   525 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   526 			"<groupAddOptions>"\
   527 				"<fRenameOnMsgrConflict>false</fRenameOnMsgrConflict>"\
   528 			"</groupAddOptions>"\
   529 			"<groupInfo>"\
   530 				"<GroupInfo>"\
   531 					"<name>%s</name>"\
   532 					"<groupType>C8529CE2-6EAD-434d-881F-341E17DB3FF8</groupType>"\
   533 					"<fMessenger>false</fMessenger>"\
   534 					"<annotations>"\
   535 						"<Annotation>"\
   536 							"<Name>MSN.IM.Display</Name>"\
   537 							"<Value>1</Value>"\
   538 						"</Annotation>"\
   539 					"</annotations>"\
   540 				"</GroupInfo>"\
   541 			"</groupInfo>"\
   542 		"</ABGroupAdd>"\
   543 	"</soap:Body>"\
   544 "</soap:Envelope>"
   545 
   546 /* delete a group */
   547 #define MSN_GROUP_DEL_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupDelete"
   548 #define MSN_GROUP_DEL_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   549 "<soap:Envelope"\
   550 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   551 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   552 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   553 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   554 	"<soap:Header>"\
   555 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   556 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   557 			"<IsMigration>false</IsMigration>"\
   558 			"<PartnerScenario>Timer</PartnerScenario>"\
   559 		"</ABApplicationHeader>"\
   560 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   561 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   562 			"<TicketToken>EMPTY</TicketToken>"\
   563 		"</ABAuthHeader>"\
   564 	"</soap:Header>"\
   565 	"<soap:Body>"\
   566 		"<ABGroupDelete xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   567 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   568 			"<groupFilter>"\
   569 				"<groupIds>"\
   570 					"<guid>%s</guid>"\
   571 				"</groupIds>"\
   572 			"</groupFilter>"\
   573 		"</ABGroupDelete>"\
   574 	"</soap:Body>"\
   575 "</soap:Envelope>"
   576 
   577 /* change a group's name */
   578 #define MSN_GROUP_RENAME_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupUpdate"
   579 #define MSN_GROUP_RENAME_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?>"\
   580 "<soap:Envelope"\
   581 	" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""\
   582 	" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""\
   583 	" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""\
   584 	" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\
   585 	"<soap:Header>"\
   586 		"<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   587 			"<ApplicationId>" MSN_APPLICATION_ID "</ApplicationId>"\
   588 			"<IsMigration>false</IsMigration>"\
   589 			"<PartnerScenario>Timer</PartnerScenario>"\
   590 		"</ABApplicationHeader>"\
   591 		"<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   592 			"<ManagedGroupRequest>false</ManagedGroupRequest>"\
   593 			"<TicketToken>EMPTY</TicketToken>"\
   594 		"</ABAuthHeader>"\
   595 	"</soap:Header>"\
   596 	"<soap:Body>"\
   597 		"<ABGroupUpdate xmlns=\"http://www.msn.com/webservices/AddressBook\">"\
   598 			"<abId>00000000-0000-0000-0000-000000000000</abId>"\
   599 			"<groups>"\
   600 				"<Group>"\
   601 					"<groupId>%s</groupId>"\
   602 					"<groupInfo>"\
   603 						"<name>%s</name>"\
   604 					"</groupInfo>"\
   605 					"<propertiesChanged>GroupName </propertiesChanged>"\
   606 				"</Group>"\
   607 			"</groups>"\
   608 		"</ABGroupUpdate>"\
   609 	"</soap:Body>"\
   610 "</soap:Envelope>"
   611 
   612 typedef enum
   613 {
   614 	MSN_ADD_BUDDY       = 0x01,
   615 	MSN_MOVE_BUDDY      = 0x02,
   616 	MSN_ACCEPTED_BUDDY  = 0x04,
   617 	MSN_DENIED_BUDDY    = 0x08,
   618 	MSN_ADD_GROUP       = 0x10,
   619 	MSN_DEL_GROUP       = 0x20,
   620 	MSN_RENAME_GROUP    = 0x40,
   621 	MSN_UPDATE_INFO     = 0x80
   622 } MsnCallbackAction;
   623 
   624 typedef enum
   625 {
   626 	MSN_PS_INITIAL,
   627 	MSN_PS_SAVE_CONTACT,
   628 	MSN_PS_PENDING_LIST,
   629 	MSN_PS_CONTACT_API,
   630 	MSN_PS_BLOCK_UNBLOCK
   631 } MsnSoapPartnerScenario;
   632 
   633 typedef struct _MsnCallbackState MsnCallbackState;
   634 
   635 struct _MsnCallbackState
   636 {
   637 	gchar * who;
   638 	gchar * uid;
   639 	gchar * old_group_name;
   640 	gchar * new_group_name;
   641 	gchar * guid;
   642 	MsnListId list_id;
   643 	MsnCallbackAction action;
   644 	MsnSession *session;
   645 	xmlnode *body;
   646 	xmlnode *token;
   647 	const gchar *post_action;
   648 	const gchar *post_url;
   649 	MsnSoapCallback cb;
   650 	/* For msn_get_contact_list only */
   651 	MsnSoapPartnerScenario partner_scenario;
   652 };
   653 
   654 typedef enum
   655 {
   656 	MSN_UPDATE_DISPLAY,	/* Real display name */
   657 	MSN_UPDATE_ALIAS,	/* Aliased display name */
   658 	MSN_UPDATE_COMMENT
   659 } MsnContactUpdateType;
   660 
   661 /************************************************
   662  * function prototype
   663  ************************************************/
   664 MsnCallbackState * msn_callback_state_new(MsnSession *session);
   665 MsnCallbackState * msn_callback_state_dup(MsnCallbackState *state);
   666 void msn_callback_state_free(MsnCallbackState *state);
   667 void msn_callback_state_set_who(MsnCallbackState *state, const gchar *who);
   668 void msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid);
   669 void msn_callback_state_set_old_group_name(MsnCallbackState *state,
   670 					   const gchar *old_group_name);
   671 void msn_callback_state_set_new_group_name(MsnCallbackState *state,
   672 					   const gchar *new_group_name);
   673 void msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid);
   674 void msn_callback_state_set_list_id(MsnCallbackState *state, MsnListId list_id);
   675 void msn_callback_state_set_action(MsnCallbackState *state,
   676 				   MsnCallbackAction action);
   677 
   678 void msn_contact_connect(MsnSession *session);
   679 void msn_get_contact_list(MsnSession *session,
   680 			  const MsnSoapPartnerScenario partner_scenario,
   681 			  const char *update);
   682 void msn_get_address_book(MsnSession *session,
   683 			  const MsnSoapPartnerScenario partner_scenario,
   684 			  const char * update, const char * gupdate);
   685 
   686 /* contact SOAP operations */
   687 void msn_update_contact(MsnSession *session, const char *passport, MsnContactUpdateType type, const char* value);
   688 
   689 void msn_add_contact(MsnSession *session, MsnCallbackState *state,
   690 		     const char *passport);
   691 void msn_delete_contact(MsnSession *session, MsnUser *user);
   692 
   693 void msn_add_contact_to_group(MsnSession *session, MsnCallbackState *state,
   694 			      const char *passport, const char *groupId);
   695 void msn_del_contact_from_group(MsnSession *session, const char *passport,
   696 				const char *group_name);
   697 /* group operations */
   698 void msn_add_group(MsnSession *session, MsnCallbackState *state,
   699 					const char* group_name);
   700 void msn_del_group(MsnSession *session, const gchar *group_name);
   701 void msn_contact_rename_group(MsnSession *session, const char *old_group_name,
   702 						   const char *new_group_name);
   703 
   704 /* lists operations */
   705 void msn_add_contact_to_list(MsnSession *session, MsnCallbackState *state,
   706 			     const gchar *passport, const MsnListId list);
   707 void msn_del_contact_from_list(MsnSession *session, MsnCallbackState *state,
   708 			       const gchar *passport, const MsnListId list);
   709 
   710 #endif /* _MSN_CONTACT_H_ */
   711