aboutsummaryrefslogtreecommitdiffstats
path: root/skype
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@frugalware.org>2007-12-16 03:55:55 +0100
committerMiklos Vajna <vmiklos@frugalware.org>2007-12-16 03:55:55 +0100
commit67454bd5fa026e9c71ad1fb462d757e5890ffbe4 (patch)
tree7b0d72e5251fa35ca5ccdd1aac176c78b39b9866 /skype
parent737e9d99ca5afe80214ccacf3d4a3737cb443188 (diff)
initial support for the info command
currently it prints only the full name
Diffstat (limited to 'skype')
-rw-r--r--skype/skype.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/skype/skype.c b/skype/skype.c
index ee9f05f1..66e5e171 100644
--- a/skype/skype.c
+++ b/skype/skype.c
@@ -80,6 +80,22 @@ struct skype_data
char* adder;
/* If we are waiting for a confirmation about we changed the topic. */
int topic_wait;
+ /* These are used by the info command. */
+ char *info_fullname;
+ char *info_phonehome;
+ char *info_phoneoffice;
+ char *info_phonemobile;
+ char *info_nrbuddies;
+ char *info_tz;
+ char *info_seen;
+ char *info_birthday;
+ char *info_sex;
+ char *info_language;
+ char *info_country;
+ char *info_province;
+ char *info_city;
+ char *info_homepage;
+ char *info_about;
};
struct skype_away_state
@@ -266,6 +282,22 @@ static gboolean skype_read_callback( gpointer data, gint fd, b_input_condition c
g_free(buf);
}
}
+ else if(!strncmp(ptr, "FULLNAME ", 9))
+ sd->info_fullname = g_strdup_printf("%s", ptr + 9);
+ else if(!strncmp(ptr, "ABOUT ", 6))
+ {
+ sd->info_about = g_strdup_printf("%s", ptr + 6);
+
+ GString *st = g_string_new("User Info\n");
+ g_string_append_printf(st, "Skype Name: %s\n", user);
+ if(sd->info_fullname)
+ {
+ g_string_append_printf(st, "Full Name: %s\n", sd->info_fullname);
+ g_free(sd->info_fullname);
+ }
+ imcb_log(ic, "%s", st->str);
+ g_string_free(st, TRUE);
+ }
}
else if(!strncmp(line, "CHATMESSAGE ", 12))
{
@@ -749,6 +781,60 @@ struct groupchat *skype_chat_with(struct im_connection *ic, char *who)
return(imcb_chat_new( ic, "" ));
}
+static void skype_get_info(struct im_connection *ic, char *who)
+{
+ char *ptr, *nick, *buf;
+ nick = g_strdup(who);
+ ptr = strchr(nick, '@');
+ if(ptr)
+ *ptr = '\0';
+ buf = g_strdup_printf("GET USER %s FULLNAME\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s PHONE_HOME\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s PHONE_OFFICE\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s PHONE_MOBILE\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s NROF_AUTHED_BUDDIES\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s TIMEZONE\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s LASTONLINETIMESTAMP\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s BIRTHDAY\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s SEX\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s LANGUAGE\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s COUNTRY\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s PROVINCE\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s CITY\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s HOMEPAGE\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+ buf = g_strdup_printf("GET USER %s ABOUT\n", nick);
+ skype_write(ic, buf, strlen(buf));
+ g_free(buf);
+}
+
void init_plugin(void)
{
struct prpl *ret = g_new0( struct prpl, 1 );
@@ -758,6 +844,7 @@ void init_plugin(void)
ret->init = skype_init;
ret->logout = skype_logout;
ret->buddy_msg = skype_buddy_msg;
+ ret->get_info = skype_get_info;
ret->away_states = skype_away_states;
ret->set_away = skype_set_away;
ret->add_buddy = skype_add_buddy;