# HG changeset patch # User andrew.victor@mxit.com # Date 1294438818 0 # Node ID 38010f28f939ab1ca9781b61b12c8b30bbb9d34e # Parent b8d9329dda4a39a436e74b4478359b0efc03f118 Defined User Search request packets. diff -r b8d9329dda4a -r 38010f28f939 libpurple/protocols/mxit/protocol.c --- a/libpurple/protocols/mxit/protocol.c Fri Jan 07 21:51:05 2011 +0000 +++ b/libpurple/protocols/mxit/protocol.c Fri Jan 07 22:20:18 2011 +0000 @@ -747,7 +747,7 @@ * @param session The MXit session object * @param username Username who's profile is being requested (NULL = our own) * @param nr_attribs Number of attributes being requested - * @param attributes The names of the attributes + * @param attribute The names of the attributes */ void mxit_send_extprofile_request( struct MXitSession* session, const char* username, unsigned int nr_attrib, const char* attribute[] ) { @@ -757,7 +757,8 @@ datalen = snprintf( data, sizeof( data ), "ms=%s%c%i", /* "ms="mxitid\1nr_attributes */ - (username ? username : ""), CP_FLD_TERM, nr_attrib); + ( username ? username : "" ), CP_FLD_TERM, nr_attrib + ); /* add attributes */ for ( i = 0; i < nr_attrib; i++ ) @@ -805,6 +806,63 @@ /*------------------------------------------------------------------------ + * Send packet to request list of suggested friends. + * + * @param session The MXit session object + * @param max Maximum number of results to return + * @param nr_attribs Number of attributes being requested + * @param attribute The names of the attributes + */ +void mxit_send_suggest_friends( struct MXitSession* session, int max, unsigned int nr_attrib, const char* attribute[] ) +{ + char data[CP_MAX_PACKET]; + int datalen; + unsigned int i; + + /* convert the packet to a byte stream */ + datalen = snprintf( data, sizeof( data ), + "ms=%i%c%s%c%i%c%i", /* inputType \1 input \ 1 maxSuggestions \1 numAttributes \1 name0 ... \1 nameN */ + CP_SUGGEST_FRIENDS, CP_FLD_TERM, "", CP_FLD_TERM, max, CP_FLD_TERM, nr_attrib ); + + /* add attributes */ + for ( i = 0; i < nr_attrib; i++ ) + datalen += sprintf( data + datalen, "%c%s", CP_FLD_TERM, attribute[i] ); + + /* queue packet for transmission */ + mxit_queue_packet( session, data, datalen, CP_CMD_EXTPROFILE_GET ); +} + + +/*------------------------------------------------------------------------ + * Send packet to perform a search for users. + * + * @param session The MXit session object + * @param max Maximum number of results to return + * @param text The search text + * @param nr_attribs Number of attributes being requested + * @param attribute The names of the attributes + */ +void mxit_send_suggest_search( struct MXitSession* session, int max, const char* text, unsigned int nr_attrib, const char* attribute[] ) +{ + char data[CP_MAX_PACKET]; + int datalen; + unsigned int i; + + /* convert the packet to a byte stream */ + datalen = snprintf( data, sizeof( data ), + "ms=%i%c%s%c%i%c%i", /* inputType \1 input \ 1 maxSuggestions \1 numAttributes \1 name0 ... \1 nameN */ + CP_SUGGEST_SEARCH, CP_FLD_TERM, text, CP_FLD_TERM, max, CP_FLD_TERM, nr_attrib ); + + /* add attributes */ + for ( i = 0; i < nr_attrib; i++ ) + datalen += sprintf( data + datalen, "%c%s", CP_FLD_TERM, attribute[i] ); + + /* queue packet for transmission */ + mxit_queue_packet( session, data, datalen, CP_CMD_EXTPROFILE_GET ); +} + + +/*------------------------------------------------------------------------ * Send a presence update packet to the MXit server. * * @param session The MXit session object diff -r b8d9329dda4a -r 38010f28f939 libpurple/protocols/mxit/protocol.h --- a/libpurple/protocols/mxit/protocol.h Fri Jan 07 21:51:05 2011 +0000 +++ b/libpurple/protocols/mxit/protocol.h Fri Jan 07 22:20:18 2011 +0000 @@ -127,6 +127,7 @@ #define CP_CMD_TX_MSG 0x000A /* (10) send new message */ #define CP_CMD_REGISTER 0x000B /* (11) register */ //#define CP_CMD_PROFILE_SET 0x000C /* (12) set profile (DEPRECATED see CP_CMD_EXTPROFILE_SET) */ +#define CP_CMD_SUGGESTCONTACTS 0x000D /* (13) suggest contacts */ #define CP_CMD_POLL 0x0011 /* (17) poll the HTTP server for an update */ //#define CP_CMD_PROFILE_GET 0x001A /* (26) get profile (DEPRECATED see CP_CMD_EXTPROFILE_GET) */ #define CP_CMD_MEDIA 0x001B /* (27) get multimedia message */ @@ -204,6 +205,12 @@ /* profile flags */ #define CP_PROF_DOBLOCKED 0x40 /* date-of-birth cannot be changed */ +/* suggestion types */ +#define CP_SUGGEST_ADDRESSBOOK 0 /* address book search */ +#define CP_SUGGEST_FRIENDS 1 /* suggested friends */ +#define CP_SUGGEST_SEARCH 2 /* free-text search */ +#define CP_SUGGEST_MXITID 4 /* MXitId search */ + /* define this to enable protocol debugging (very verbose logging) */ #define DEBUG_PROTOCOL @@ -295,6 +302,9 @@ void mxit_send_extprofile_update( struct MXitSession* session, const char* password, unsigned int nr_attrib, const char* attributes ); void mxit_send_extprofile_request( struct MXitSession* session, const char* username, unsigned int nr_attrib, const char* attribute[] ); +void mxit_send_suggest_friends( struct MXitSession* session, int max, unsigned int nr_attrib, const char* attribute[] ); +void mxit_send_suggest_search( struct MXitSession* session, int max, const char* text, unsigned int nr_attrib, const char* attribute[] ); + void mxit_send_invite( struct MXitSession* session, const char* username, const char* alias, const char* groupname ); void mxit_send_remove( struct MXitSession* session, const char* username ); void mxit_send_allow_sub( struct MXitSession* session, const char* username, const char* alias );