aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@vmiklos.hu>2013-02-28 08:15:49 +0100
committerMiklos Vajna <vmiklos@vmiklos.hu>2013-02-28 08:15:49 +0100
commit36f6ab3f1534545ceccd5363962a2967667d48fb (patch)
tree0745da3479d0d1fad8061238ccd0418d935be598
parentc440320f9df04f05ead97bc7a7a016e23e49bb64 (diff)
skype: add support for fetching full names of buddies
-rw-r--r--protocols/skype/skype.c22
-rw-r--r--protocols/skype/t/add-yes-skyped.mock2
-rw-r--r--protocols/skype/t/added-no-skyped.mock2
-rw-r--r--protocols/skype/t/added-yes-skyped.mock2
-rw-r--r--protocols/skype/t/call-failed-skyped.mock4
-rw-r--r--protocols/skype/t/call-skyped.mock4
-rw-r--r--protocols/skype/t/called-no-skyped.mock4
-rw-r--r--protocols/skype/t/called-yes-skyped.mock4
-rw-r--r--protocols/skype/t/ctcp-help-skyped.mock4
-rw-r--r--protocols/skype/t/filetransfer-skyped.mock4
-rw-r--r--protocols/skype/t/group-read-skyped.mock10
-rw-r--r--protocols/skype/t/groupchat-invite-bitlbee.mock1
-rw-r--r--protocols/skype/t/groupchat-invite-skyped.mock6
-rw-r--r--protocols/skype/t/groupchat-invited-skyped.mock6
-rw-r--r--protocols/skype/t/info-skyped.mock4
-rw-r--r--protocols/skype/t/login-skyped.mock4
-rw-r--r--protocols/skype/t/msg-skyped.mock4
-rw-r--r--protocols/skype/t/set-mood-text-skyped.mock2
18 files changed, 85 insertions, 4 deletions
diff --git a/protocols/skype/skype.c b/protocols/skype/skype.c
index 4ae34668..58a1c415 100644
--- a/protocols/skype/skype.c
+++ b/protocols/skype/skype.c
@@ -117,6 +117,8 @@ struct skype_data {
/* Pending user which has to be added to the next group which is
* created. */
char *pending_user;
+ /* If the info command was used, to determine what to do with FULLNAME result. */
+ int is_info;
};
struct skype_away_state {
@@ -319,8 +321,10 @@ static void skype_parse_users(struct im_connection *ic, char *line)
char **i, **nicks;
nicks = g_strsplit(line + 6, ", ", 0);
- for (i = nicks; *i; i++)
+ for (i = nicks; *i; i++) {
skype_printf(ic, "GET USER %s ONLINESTATUS\n", *i);
+ skype_printf(ic, "GET USER %s FULLNAME\n", *i);
+ }
g_strfreev(nicks);
}
@@ -374,9 +378,17 @@ static void skype_parse_user(struct im_connection *ic, char *line)
*buf ? buf : NULL);
if (set_getbool(&ic->acc->set, "show_moods"))
imcb_log(ic, "User `%s' changed mood text to `%s'", user, buf);
- } else if (!strncmp(ptr, "FULLNAME ", 9))
- sd->info_fullname = g_strdup(ptr + 9);
- else if (!strncmp(ptr, "PHONE_HOME ", 11))
+ } else if (!strncmp(ptr, "FULLNAME ", 9)) {
+ char *name = ptr + 9;
+ if (sd->is_info) {
+ sd->is_info = FALSE;
+ sd->info_fullname = g_strdup(name);
+ } else {
+ char *buf = g_strdup_printf("%s@skype.com", user);
+ imcb_rename_buddy(ic, buf, name);
+ g_free(buf);
+ }
+ } else if (!strncmp(ptr, "PHONE_HOME ", 11))
sd->info_phonehome = g_strdup(ptr + 11);
else if (!strncmp(ptr, "PHONE_OFFICE ", 13))
sd->info_phoneoffice = g_strdup(ptr + 13);
@@ -1502,11 +1514,13 @@ struct groupchat *skype_chat_with(struct im_connection *ic, char *who)
static void skype_get_info(struct im_connection *ic, char *who)
{
+ struct skype_data *sd = ic->proto_data;
char *ptr, *nick;
nick = g_strdup(who);
ptr = strchr(nick, '@');
if (ptr)
*ptr = '\0';
+ sd->is_info = TRUE;
skype_printf(ic, "GET USER %s FULLNAME\n", nick);
skype_printf(ic, "GET USER %s PHONE_HOME\n", nick);
skype_printf(ic, "GET USER %s PHONE_OFFICE\n", nick);
diff --git a/protocols/skype/t/add-yes-skyped.mock b/protocols/skype/t/add-yes-skyped.mock
index eed257e5..dea175a3 100644
--- a/protocols/skype/t/add-yes-skyped.mock
+++ b/protocols/skype/t/add-yes-skyped.mock
@@ -8,6 +8,8 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> SET USER bob BUDDYSTATUS 2 Please authorize me
<< USER bob BUDDYSTATUS 2
<< USER bob ISAUTHORIZED TRUE
diff --git a/protocols/skype/t/added-no-skyped.mock b/protocols/skype/t/added-no-skyped.mock
index f7283cbc..0e4bfc8a 100644
--- a/protocols/skype/t/added-no-skyped.mock
+++ b/protocols/skype/t/added-no-skyped.mock
@@ -8,6 +8,8 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
<< USER bob RECEIVEDAUTHREQUEST Please allow me to see when you are online
>> SET USER bob ISAUTHORIZED FALSE
<< USER bob ISAUTHORIZED FALSE
diff --git a/protocols/skype/t/added-yes-skyped.mock b/protocols/skype/t/added-yes-skyped.mock
index e22beb97..fc3d756f 100644
--- a/protocols/skype/t/added-yes-skyped.mock
+++ b/protocols/skype/t/added-yes-skyped.mock
@@ -8,6 +8,8 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
<< USER bob RECEIVEDAUTHREQUEST Please allow me to see when you are online
>> SET USER bob ISAUTHORIZED TRUE
<< USER bob ISAUTHORIZED TRUE
diff --git a/protocols/skype/t/call-failed-skyped.mock b/protocols/skype/t/call-failed-skyped.mock
index 8f6f6007..30699f91 100644
--- a/protocols/skype/t/call-failed-skyped.mock
+++ b/protocols/skype/t/call-failed-skyped.mock
@@ -8,8 +8,12 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS OFFLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
>> CALL bob
<< CALL 216 STATUS UNPLACED
<< CALL 216 STATUS ROUTING
diff --git a/protocols/skype/t/call-skyped.mock b/protocols/skype/t/call-skyped.mock
index c166af96..92947ba9 100644
--- a/protocols/skype/t/call-skyped.mock
+++ b/protocols/skype/t/call-skyped.mock
@@ -8,8 +8,12 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS OFFLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
>> CALL bob
<< CALL 178 STATUS UNPLACED
<< CALL 178 STATUS ROUTING
diff --git a/protocols/skype/t/called-no-skyped.mock b/protocols/skype/t/called-no-skyped.mock
index 6e90e5b9..5152fe9e 100644
--- a/protocols/skype/t/called-no-skyped.mock
+++ b/protocols/skype/t/called-no-skyped.mock
@@ -8,8 +8,12 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
<< CALL 212 CONF_ID 0
<< CALL 212 STATUS RINGING
>> GET CALL 212 PARTNER_HANDLE
diff --git a/protocols/skype/t/called-yes-skyped.mock b/protocols/skype/t/called-yes-skyped.mock
index 08c78275..67cdffe3 100644
--- a/protocols/skype/t/called-yes-skyped.mock
+++ b/protocols/skype/t/called-yes-skyped.mock
@@ -8,8 +8,12 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
<< CALL 208 CONF_ID 0
<< CALL 208 STATUS RINGING
>> GET CALL 208 PARTNER_HANDLE
diff --git a/protocols/skype/t/ctcp-help-skyped.mock b/protocols/skype/t/ctcp-help-skyped.mock
index 322c7c6b..eacff2e6 100644
--- a/protocols/skype/t/ctcp-help-skyped.mock
+++ b/protocols/skype/t/ctcp-help-skyped.mock
@@ -8,5 +8,9 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
diff --git a/protocols/skype/t/filetransfer-skyped.mock b/protocols/skype/t/filetransfer-skyped.mock
index 850c4c31..b24fcc94 100644
--- a/protocols/skype/t/filetransfer-skyped.mock
+++ b/protocols/skype/t/filetransfer-skyped.mock
@@ -8,8 +8,12 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
<< FILETRANSFER 208 TYPE INCOMING
<< FILETRANSFER 208 PARTNER_HANDLE bob
<< FILETRANSFER 208 PARTNER_DISPNAME bob
diff --git a/protocols/skype/t/group-read-skyped.mock b/protocols/skype/t/group-read-skyped.mock
index 4a7a2299..148661a1 100644
--- a/protocols/skype/t/group-read-skyped.mock
+++ b/protocols/skype/t/group-read-skyped.mock
@@ -16,11 +16,21 @@
<< GROUP 71 USERS daniel, emily
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
>> GET USER cecil ONLINESTATUS
<< USER cecil ONLINESTATUS ONLINE
+>> GET USER cecil FULLNAME
+<< USER cecil FULLNAME Cecil
>> GET USER daniel ONLINESTATUS
<< USER daniel ONLINESTATUS ONLINE
+>> GET USER daniel FULLNAME
+<< USER daniel FULLNAME Daniel
>> GET USER emily ONLINESTATUS
<< USER emily ONLINESTATUS OFFLINE
+>> GET USER emily FULLNAME
+<< USER emily FULLNAME Emily
diff --git a/protocols/skype/t/groupchat-invite-bitlbee.mock b/protocols/skype/t/groupchat-invite-bitlbee.mock
index 49e3716f..7b44427f 100644
--- a/protocols/skype/t/groupchat-invite-bitlbee.mock
+++ b/protocols/skype/t/groupchat-invite-bitlbee.mock
@@ -4,6 +4,7 @@
>> PRIVMSG &bitlbee
<< PRIVMSG &bitlbee :account add skype alice foo
<< PRIVMSG &bitlbee :account skype on
+>> :bob!bob@skype.com JOIN :&bitlbee
<< PRIVMSG &bitlbee :chat with bob
>> 353 alice = ##alice/$bob;a7ab206ec780 :@alice bob @root
<< INVITE cecil ##alice/$bob;a7ab206ec780
diff --git a/protocols/skype/t/groupchat-invite-skyped.mock b/protocols/skype/t/groupchat-invite-skyped.mock
index 0f30a28e..214ebec0 100644
--- a/protocols/skype/t/groupchat-invite-skyped.mock
+++ b/protocols/skype/t/groupchat-invite-skyped.mock
@@ -8,10 +8,16 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
>> GET USER cecil ONLINESTATUS
<< USER cecil ONLINESTATUS ONLINE
+>> GET USER cecil FULLNAME
+<< USER cecil FULLNAME Cecil
>> CHAT CREATE bob
<< CHAT #alice/$bob;a7ab206ec78060f1 STATUS DIALOG
>> GET CHAT #alice/$bob;a7ab206ec78060f1 ADDER
diff --git a/protocols/skype/t/groupchat-invited-skyped.mock b/protocols/skype/t/groupchat-invited-skyped.mock
index 7da3be74..a5c754ce 100644
--- a/protocols/skype/t/groupchat-invited-skyped.mock
+++ b/protocols/skype/t/groupchat-invited-skyped.mock
@@ -8,10 +8,16 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS OFFLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
>> GET USER cecil ONLINESTATUS
<< USER cecil ONLINESTATUS OFFLINE
+>> GET USER cecil FULLNAME
+<< USER cecil FULLNAME Cecil
<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9
<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
diff --git a/protocols/skype/t/info-skyped.mock b/protocols/skype/t/info-skyped.mock
index 9b4ffda7..63076b09 100644
--- a/protocols/skype/t/info-skyped.mock
+++ b/protocols/skype/t/info-skyped.mock
@@ -8,10 +8,14 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
>> GET USER bob FULLNAME
<< USER bob FULLNAME Bob
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
>> GET USER bob PHONE_HOME
<< USER bob PHONE_HOME
>> GET USER bob PHONE_OFFICE
diff --git a/protocols/skype/t/login-skyped.mock b/protocols/skype/t/login-skyped.mock
index 322c7c6b..eacff2e6 100644
--- a/protocols/skype/t/login-skyped.mock
+++ b/protocols/skype/t/login-skyped.mock
@@ -8,5 +8,9 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
diff --git a/protocols/skype/t/msg-skyped.mock b/protocols/skype/t/msg-skyped.mock
index 1a49566e..03efb6bc 100644
--- a/protocols/skype/t/msg-skyped.mock
+++ b/protocols/skype/t/msg-skyped.mock
@@ -8,8 +8,12 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> GET USER bob ONLINESTATUS
<< USER bob ONLINESTATUS ONLINE
+>> GET USER bob FULLNAME
+<< USER bob FULLNAME Bob
>> MESSAGE bob foo
<< CHATMESSAGE 290 STATUS SENDING
<< CHAT #alice/$bob;ea753190f0a3e49b NAME #alice/$bob;ea753190f0a3e49b
diff --git a/protocols/skype/t/set-mood-text-skyped.mock b/protocols/skype/t/set-mood-text-skyped.mock
index f2814248..566f4234 100644
--- a/protocols/skype/t/set-mood-text-skyped.mock
+++ b/protocols/skype/t/set-mood-text-skyped.mock
@@ -8,5 +8,7 @@
<< USERSTATUS ONLINE
>> GET USER echo123 ONLINESTATUS
<< USER echo123 ONLINESTATUS ONLINE
+>> GET USER echo123 FULLNAME
+<< USER echo123 FULLNAME Echo / Sound Test Service
>> SET PROFILE MOOD_TEXT foo bar
<< PROFILE MOOD_TEXT foo bar