diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/msn/msn_util.c | 4 | ||||
| -rw-r--r-- | protocols/msn/soap.c | 28 | ||||
| -rw-r--r-- | protocols/msn/soap.h | 71 | 
3 files changed, 39 insertions, 64 deletions
| diff --git a/protocols/msn/msn_util.c b/protocols/msn/msn_util.c index 54bfad7f..b7fdda28 100644 --- a/protocols/msn/msn_util.c +++ b/protocols/msn/msn_util.c @@ -146,6 +146,8 @@ int msn_buddy_list_add( struct im_connection *ic, msn_buddy_flags_t list, const  		return msn_write( ic, buf, strlen( buf ) );  	} +	 +	return 1;  }  int msn_buddy_list_remove( struct im_connection *ic, msn_buddy_flags_t list, const char *who, const char *group ) @@ -187,7 +189,7 @@ int msn_buddy_list_remove( struct im_connection *ic, msn_buddy_flags_t list, con  		return msn_write( ic, buf, strlen( buf ) );  	} -	return( 0 ); +	return 1;  }  struct msn_buddy_ask_data diff --git a/protocols/msn/soap.c b/protocols/msn/soap.c index 93bb37a6..130df840 100644 --- a/protocols/msn/soap.c +++ b/protocols/msn/soap.c @@ -146,6 +146,24 @@ static void msn_soap_handle_response( struct http_request *http_req )  	}  } +static char *msn_soap_abservice_build( const char *body_fmt, const char *scenario, const char *ticket, ... ) +{ +	va_list params; +	char *ret, *format, *body; +	 +	format = g_markup_printf_escaped( SOAP_ABSERVICE_PAYLOAD, scenario, ticket ); +	 +	va_start( params, ticket ); +	body = g_strdup_vprintf( body_fmt, params ); +	va_end( params ); +	 +	ret = g_strdup_printf( format, body ); +	g_free( body ); +	g_free( format ); +	 +	return ret; +} +  /* passport_sso: Authentication MSNP15+ */ @@ -444,7 +462,7 @@ static int msn_soap_memlist_build_request( struct msn_soap_req_data *soap_req )  	soap_req->url = g_strdup( SOAP_MEMLIST_URL );  	soap_req->action = g_strdup( SOAP_MEMLIST_ACTION ); -	soap_req->payload = g_markup_printf_escaped( SOAP_MEMLIST_PAYLOAD, md->tokens[1] ); +	soap_req->payload = msn_soap_abservice_build( SOAP_MEMLIST_PAYLOAD, "Initial", md->tokens[1] );  	return 1;  } @@ -561,7 +579,7 @@ static int msn_soap_memlist_edit_build_request( struct msn_soap_req_data *soap_r  		list = "Pending";  		break;  	} -	soap_req->payload = g_markup_printf_escaped( SOAP_MEMLIST_EDIT_PAYLOAD, +	soap_req->payload = msn_soap_abservice_build( SOAP_MEMLIST_EDIT_PAYLOAD,  		scenario, md->tokens[1], add, list, med->handle, add );  	return 1; @@ -606,7 +624,7 @@ static int msn_soap_addressbook_build_request( struct msn_soap_req_data *soap_re  	soap_req->url = g_strdup( SOAP_ADDRESSBOOK_URL );  	soap_req->action = g_strdup( SOAP_ADDRESSBOOK_ACTION ); -	soap_req->payload = g_markup_printf_escaped( SOAP_ADDRESSBOOK_PAYLOAD, md->tokens[1] ); +	soap_req->payload = msn_soap_abservice_build( SOAP_ADDRESSBOOK_PAYLOAD, "Initial", md->tokens[1] );  	return 1;  } @@ -705,8 +723,8 @@ static int msn_soap_ab_namechange_build_request( struct msn_soap_req_data *soap_  	soap_req->url = g_strdup( SOAP_ADDRESSBOOK_URL );  	soap_req->action = g_strdup( SOAP_AB_NAMECHANGE_ACTION ); -	soap_req->payload = g_markup_printf_escaped( SOAP_AB_NAMECHANGE_PAYLOAD, -		md->tokens[1], (char *) soap_req->data ); +	soap_req->payload = msn_soap_abservice_build( SOAP_AB_NAMECHANGE_PAYLOAD, +		"Initial", md->tokens[1], (char *) soap_req->data );  	return 1;  } diff --git a/protocols/msn/soap.h b/protocols/msn/soap.h index 9ef68df9..8ce893df 100644 --- a/protocols/msn/soap.h +++ b/protocols/msn/soap.h @@ -166,17 +166,14 @@ int msn_soap_oim_send( struct im_connection *ic, const char *to, const char *msg  int msn_soap_oim_send_queue( struct im_connection *ic, GSList **msgq ); -#define SOAP_MEMLIST_URL "http://contacts.msn.com/abservice/SharingService.asmx" -#define SOAP_MEMLIST_ACTION "http://www.msn.com/webservices/AddressBook/FindMembership" - -#define SOAP_MEMLIST_PAYLOAD \ +#define SOAP_ABSERVICE_PAYLOAD \  "<?xml version=\"1.0\" encoding=\"utf-8\"?>" \  "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \    "<soap:Header xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \      "<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \        "<ApplicationId xmlns=\"http://www.msn.com/webservices/AddressBook\">CFE80F9D-180F-4399-82AB-413F33A1FA11</ApplicationId>" \        "<IsMigration xmlns=\"http://www.msn.com/webservices/AddressBook\">false</IsMigration>" \ -      "<PartnerScenario xmlns=\"http://www.msn.com/webservices/AddressBook\">Initial</PartnerScenario>" \ +      "<PartnerScenario xmlns=\"http://www.msn.com/webservices/AddressBook\">%s</PartnerScenario>" \      "</ABApplicationHeader>" \      "<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \        "<ManagedGroupRequest xmlns=\"http://www.msn.com/webservices/AddressBook\">false</ManagedGroupRequest>" \ @@ -184,29 +181,21 @@ int msn_soap_oim_send_queue( struct im_connection *ic, GSList **msgq );      "</ABAuthHeader>" \    "</soap:Header>" \    "<soap:Body xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \ -    "<FindMembership xmlns=\"http://www.msn.com/webservices/AddressBook\"><serviceFilter xmlns=\"http://www.msn.com/webservices/AddressBook\"><Types xmlns=\"http://www.msn.com/webservices/AddressBook\"><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Messenger</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Invitation</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">SocialNetwork</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Space</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Profile</ServiceType></Types></serviceFilter>" \ -    "</FindMembership>" \ +    "%%s" \    "</soap:Body>" \  "</soap:Envelope>" +#define SOAP_MEMLIST_URL "http://contacts.msn.com/abservice/SharingService.asmx" +#define SOAP_MEMLIST_ACTION "http://www.msn.com/webservices/AddressBook/FindMembership" + +#define SOAP_MEMLIST_PAYLOAD \ +    "<FindMembership xmlns=\"http://www.msn.com/webservices/AddressBook\"><serviceFilter xmlns=\"http://www.msn.com/webservices/AddressBook\"><Types xmlns=\"http://www.msn.com/webservices/AddressBook\"><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Messenger</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Invitation</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">SocialNetwork</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Space</ServiceType><ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Profile</ServiceType></Types></serviceFilter>" \ +    "</FindMembership>" +  #define SOAP_MEMLIST_ADD_ACTION "http://www.msn.com/webservices/AddressBook/AddMember"  #define SOAP_MEMLIST_DEL_ACTION "http://www.msn.com/webservices/AddressBook/DeleteMember"  #define SOAP_MEMLIST_EDIT_PAYLOAD \ -"<?xml version=\"1.0\" encoding=\"utf-8\"?>" \ -"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \ -  "<soap:Header xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \ -    "<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \ -      "<ApplicationId xmlns=\"http://www.msn.com/webservices/AddressBook\">CFE80F9D-180F-4399-82AB-413F33A1FA11</ApplicationId>" \ -      "<IsMigration xmlns=\"http://www.msn.com/webservices/AddressBook\">false</IsMigration>" \ -      "<PartnerScenario xmlns=\"http://www.msn.com/webservices/AddressBook\">%s</PartnerScenario>" \ -    "</ABApplicationHeader>" \ -    "<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \ -      "<ManagedGroupRequest xmlns=\"http://www.msn.com/webservices/AddressBook\">false</ManagedGroupRequest>" \ -      "<TicketToken>%s</TicketToken>" \ -    "</ABAuthHeader>" \ -  "</soap:Header>" \ -  "<soap:Body xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" \    "<%sMember xmlns=\"http://www.msn.com/webservices/AddressBook\">" \     "<serviceHandle>" \      "<Id>0</Id>" \ @@ -225,9 +214,7 @@ int msn_soap_oim_send_queue( struct im_connection *ic, GSList **msgq );       "</Members>" \      "</Membership>" \     "</memberships>" \ -  "</%sMember>" \ -  "</soap:Body>" \ -"</soap:Envelope>" +  "</%sMember>"  int msn_soap_memlist_request( struct im_connection *ic );  int msn_soap_memlist_edit( struct im_connection *ic, const char *handle, gboolean add, int list ); @@ -237,46 +224,16 @@ int msn_soap_memlist_edit( struct im_connection *ic, const char *handle, gboolea  #define SOAP_ADDRESSBOOK_ACTION "http://www.msn.com/webservices/AddressBook/ABFindAll"  #define SOAP_ADDRESSBOOK_PAYLOAD \ -"<?xml version=\"1.0\" encoding=\"utf-8\"?>" \ -"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">" \ -  "<soap:Header>" \ -    "<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \ -      "<ApplicationId>CFE80F9D-180F-4399-82AB-413F33A1FA11</ApplicationId>" \ -      "<IsMigration>false</IsMigration>" \ -      "<PartnerScenario>Initial</PartnerScenario>" \ -    "</ABApplicationHeader>" \ -    "<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \ -      "<ManagedGroupRequest>false</ManagedGroupRequest>" \ -      "<TicketToken>%s</TicketToken>" \ -    "</ABAuthHeader>" \ -  "</soap:Header>" \ -  "<soap:Body>" \      "<ABFindAll xmlns=\"http://www.msn.com/webservices/AddressBook\">" \        "<abId>00000000-0000-0000-0000-000000000000</abId>" \        "<abView>Full</abView>" \        "<deltasOnly>false</deltasOnly>" \        "<lastChange>0001-01-01T00:00:00.0000000-08:00</lastChange>" \ -    "</ABFindAll>" \ -  "</soap:Body>" \ -"</soap:Envelope>" +    "</ABFindAll>"  #define SOAP_AB_NAMECHANGE_ACTION "http://www.msn.com/webservices/AddressBook/ABContactUpdate"  #define SOAP_AB_NAMECHANGE_PAYLOAD \ -"<?xml version=\"1.0\" encoding=\"utf-8\"?>" \ -"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">" \ -  "<soap:Header>" \ -    "<ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \ -      "<ApplicationId>CFE80F9D-180F-4399-82AB-413F33A1FA11</ApplicationId>" \ -      "<IsMigration>false</IsMigration>" \ -      "<PartnerScenario>Initial</PartnerScenario>" \ -    "</ABApplicationHeader>" \ -    "<ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\">" \ -      "<ManagedGroupRequest>false</ManagedGroupRequest>" \ -      "<TicketToken>%s</TicketToken>" \ -    "</ABAuthHeader>" \ -  "</soap:Header>" \ -    "<soap:Body>" \          "<ABContactUpdate xmlns=\"http://www.msn.com/webservices/AddressBook\">" \              "<abId>00000000-0000-0000-0000-000000000000</abId>" \              "<contacts>" \ @@ -288,9 +245,7 @@ int msn_soap_memlist_edit( struct im_connection *ic, const char *handle, gboolea                      "<propertiesChanged>DisplayName</propertiesChanged>" \                  "</Contact>" \              "</contacts>" \ -        "</ABContactUpdate>" \ -    "</soap:Body>" \ -"</soap:Envelope>" +        "</ABContactUpdate>"  int msn_soap_addressbook_request( struct im_connection *ic );  int msn_soap_addressbook_set_display_name( struct im_connection *ic, const char *new ); | 
