Changeset ffcdf13 for protocols


Ignore:
Timestamp:
2010-07-17T15:06:56Z (14 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
5c18a76
Parents:
0d691ea
Message:

When using non-Twitter Twitter API services, prefix the channel and contact
name with that service name, not always Twitter. This is especially useful
when having multiple accounts on different sites with the same username.

Also adding an "identica" protocol entry for convenience.

Based on a patch from kensanata, bug #648.

Location:
protocols/twitter
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • protocols/twitter/twitter.c

    r0d691ea rffcdf13  
    119119                }
    120120               
    121                 sprintf( name, "twitter_%s", ic->acc->user );
     121                sprintf( name, "%s_%s", td->prefix, ic->acc->user );
    122122                msg = g_strdup_printf( "To finish OAuth authentication, please visit "
    123123                                       "%s and respond with the resulting PIN code.",
     
    172172{
    173173        set_t *s;
    174        
    175         s = set_add( &acc->set, "base_url", TWITTER_API_URL, NULL, acc );
     174        char *def_url;
     175        char *def_oauth;
     176       
     177        if( strcmp( acc->prpl->name, "twitter" ) == 0 )
     178        {
     179                def_url = TWITTER_API_URL;
     180                def_oauth = "true";
     181        }
     182        else /* if( strcmp( acc->prpl->name, "identica" ) == 0 ) */
     183        {
     184                def_url = IDENTICA_API_URL;
     185                def_oauth = "false";
     186        }
     187       
     188        s = set_add( &acc->set, "base_url", def_url, NULL, acc );
    176189        s->flags |= ACC_SET_OFFLINE_ONLY;
    177190       
     
    181194        s->flags |= ACC_SET_OFFLINE_ONLY;
    182195       
    183         s = set_add( &acc->set, "oauth", "true", set_eval_bool, acc );
     196        s = set_add( &acc->set, "oauth", def_oauth, set_eval_bool, acc );
    184197}
    185198
     
    214227        else
    215228                td->url_path = g_strdup( "" );
     229        if( g_str_has_suffix( url.host, ".com" ) )
     230                td->prefix = g_strndup( url.host, strlen( url.host ) - 4 );
     231        else
     232                td->prefix = g_strdup( url.host );
    216233       
    217234        td->user = acc->user;
     
    219236                td->oauth_info = oauth_from_string( acc->pass, &twitter_oauth );
    220237       
    221         sprintf( name, "twitter_%s", acc->user );
     238        sprintf( name, "%s_%s", td->prefix, acc->user );
    222239        imcb_add_buddy( ic, name, NULL );
    223240        imcb_buddy_status( ic, name, OPT_LOGGED_IN, NULL, NULL );
     
    247264        {
    248265                oauth_info_free( td->oauth_info );
     266                g_free( td->prefix );
    249267                g_free( td->url_host );
    250268                g_free( td->url_path );
     
    262280{
    263281        struct twitter_data *td = ic->proto_data;
    264        
    265         if (g_strncasecmp(who, "twitter_", 8) == 0 &&
    266             g_strcasecmp(who + 8, ic->acc->user) == 0)
     282        int plen = strlen( td->prefix );
     283       
     284        if (g_strncasecmp(who, td->prefix, plen) == 0 && who[plen] == '_' &&
     285            g_strcasecmp(who + plen + 1, ic->acc->user) == 0)
    267286        {
    268287                if( set_getbool( &ic->acc->set, "oauth" ) &&
     
    416435        ret->send_typing = twitter_send_typing;
    417436        ret->handle_cmp = g_strcasecmp;
    418 
     437       
     438        register_protocol(ret);
     439
     440        /* And an identi.ca variant: */
     441        ret = g_memdup(ret, sizeof(struct prpl));
     442        ret->name = "identica";
    419443        register_protocol(ret);
    420444
     
    422446        twitter_connections = NULL;
    423447}
    424 
  • protocols/twitter/twitter.h

    r0d691ea rffcdf13  
    5353        char *url_host;
    5454        char *url_path;
     55
     56        char *prefix; /* Used to generate contact + channel name. */
    5557};
    5658
  • protocols/twitter/twitter_lib.c

    r0d691ea rffcdf13  
    459459        td->home_timeline_gc = gc = imcb_chat_new( ic, "home/timeline" );
    460460       
    461         name_hint = g_strdup_printf( "Twitter_%s", ic->acc->user );
     461        name_hint = g_strdup_printf( "%s_%s", td->prefix, ic->acc->user );
    462462        imcb_chat_name_hint( gc, name_hint );
    463463        g_free( name_hint );
     
    519519        if( mode_one )
    520520        {
    521                 g_snprintf( from, sizeof( from ) - 1, "twitter_%s", ic->acc->user );
     521                g_snprintf( from, sizeof( from ) - 1, "%s_%s", td->prefix, ic->acc->user );
    522522                from[MAX_STRING-1] = '\0';
    523523        }
  • protocols/twitter/twitter_lib.h

    r0d691ea rffcdf13  
    3030
    3131#define TWITTER_API_URL "http://twitter.com"
     32#define IDENTICA_API_URL "http://identi.ca/api"
    3233
    3334/* Status URLs */
Note: See TracChangeset for help on using the changeset viewer.