diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-08-14 20:57:13 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-08-14 20:57:13 +0100 |
commit | 6ddb2236943384d45cacd08e02cb4ef9ed03bba3 (patch) | |
tree | 43dd5985e21b42d691184b9f42240bca505f0374 | |
parent | 193dc742d357bb604fff8921417c74ddf9e8729c (diff) |
Separate boilerplate and body of abservice SOAP requests since the former's
the same all the time (and I have to add some more request types).
-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 ); |