aboutsummaryrefslogtreecommitdiffstats
path: root/protocols
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-08-14 20:57:13 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2010-08-14 20:57:13 +0100
commit6ddb2236943384d45cacd08e02cb4ef9ed03bba3 (patch)
tree43dd5985e21b42d691184b9f42240bca505f0374 /protocols
parent193dc742d357bb604fff8921417c74ddf9e8729c (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).
Diffstat (limited to 'protocols')
-rw-r--r--protocols/msn/msn_util.c4
-rw-r--r--protocols/msn/soap.c28
-rw-r--r--protocols/msn/soap.h71
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 );