aboutsummaryrefslogtreecommitdiffstats
path: root/protocols
diff options
context:
space:
mode:
Diffstat (limited to 'protocols')
-rw-r--r--protocols/jabber/sasl.c6
-rw-r--r--protocols/oscar/oscar.c6
-rw-r--r--protocols/skype/README83
-rw-r--r--protocols/skype/skype.c15
-rw-r--r--protocols/skype/skyped.py2
-rw-r--r--protocols/skype/t/away-set-bitlbee.mock10
-rw-r--r--protocols/skype/t/away-set-skyped.mock20
-rw-r--r--protocols/skype/t/group-add-bitlbee.mock14
-rw-r--r--protocols/skype/t/group-add-skyped.mock38
-rw-r--r--protocols/skype/t/groupchat-msg-bitlbee.mock11
-rw-r--r--protocols/skype/t/groupchat-msg-skyped.mock60
-rw-r--r--protocols/skype/t/groupchat-topic-bitlbee.mock10
-rw-r--r--protocols/skype/t/groupchat-topic-skyped.mock60
-rwxr-xr-xprotocols/skype/test.py12
-rw-r--r--protocols/twitter/twitter.c15
-rw-r--r--protocols/twitter/twitter_http.c2
-rw-r--r--protocols/twitter/twitter_lib.h2
17 files changed, 270 insertions, 96 deletions
diff --git a/protocols/jabber/sasl.c b/protocols/jabber/sasl.c
index 450b5b28..12111fc7 100644
--- a/protocols/jabber/sasl.c
+++ b/protocols/jabber/sasl.c
@@ -482,7 +482,7 @@ static gboolean sasl_oauth2_remove_contact( gpointer data, gint fd, b_input_cond
return FALSE;
}
-static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token );
+static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token, const char *error );
int sasl_oauth2_get_refresh_token( struct im_connection *ic, const char *msg )
{
@@ -513,7 +513,7 @@ int sasl_oauth2_refresh( struct im_connection *ic, const char *refresh_token )
refresh_token, sasl_oauth2_got_token, ic );
}
-static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token )
+static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token, const char *error )
{
struct im_connection *ic = data;
struct jabber_data *jd;
@@ -526,7 +526,7 @@ static void sasl_oauth2_got_token( gpointer data, const char *access_token, cons
if( access_token == NULL )
{
- imcb_error( ic, "OAuth failure (missing access token)" );
+ imcb_error( ic, "OAuth failure (%s)", error );
imc_logout( ic, TRUE );
return;
}
diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c
index 05be086d..021792b3 100644
--- a/protocols/oscar/oscar.c
+++ b/protocols/oscar/oscar.c
@@ -980,7 +980,7 @@ static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_
char *src;
if (args->icbmflags & AIM_IMFLAGS_UNICODE)
- src = "UNICODEBIG";
+ src = "UCS-2BE";
else
src = "ISO8859-1";
@@ -1768,7 +1768,7 @@ static int oscar_buddy_msg(struct im_connection *ic, char *name, char *message,
if ((ret = do_iconv("UTF-8", "ISO8859-1", message, s, len, BUF_LONG)) >= 0) {
args.flags |= AIM_IMFLAGS_ISO_8859_1;
len = ret;
- } else if ((ret = do_iconv("UTF-8", "UNICODEBIG", message, s, len, BUF_LONG)) >= 0) {
+ } else if ((ret = do_iconv("UTF-8", "UCS-2BE", message, s, len, BUF_LONG)) >= 0) {
args.flags |= AIM_IMFLAGS_UNICODE;
len = ret;
} else {
@@ -2405,7 +2405,7 @@ void oscar_chat_msg(struct groupchat *c, char *message, int msgflags)
if ((ret = do_iconv("UTF-8", "ISO8859-1", message, s, len, BUF_LONG)) >= 0) {
flags |= AIM_CHATFLAGS_ISO_8859_1;
len = ret;
- } else if ((ret = do_iconv("UTF-8", "UNICODEBIG", message, s, len, BUF_LONG)) >= 0) {
+ } else if ((ret = do_iconv("UTF-8", "UCS-2BE", message, s, len, BUF_LONG)) >= 0) {
flags |= AIM_CHATFLAGS_UNICODE;
len = ret;
} else {
diff --git a/protocols/skype/README b/protocols/skype/README
index b9f22481..f780ca32 100644
--- a/protocols/skype/README
+++ b/protocols/skype/README
@@ -57,90 +57,17 @@ a public server) and/or your IRC client.
NOTE: The order is important. First `skyped` starts Skype. Then `skyped`
connects to Skype, finally BitlBee can connect to `skyped`.
-=== Installing under Frugalware or Debian
+=== Installing
-- Install the necessary packages:
-
-----
-# pacman-g2 -S bitlbee-skype
-----
-
-or
+Either use your package manager to install the Skype plugin, using something
+like:
----
# apt-get install skyped bitlbee-plugin-skype
----
-(the later from the unstable repo)
-
-and you don't have to compile anything manually.
-
-=== Installing under OS X
-
-- Install the necessary packages from ports:
-
-NOTE: You have to edit the Portfile manually to include the install-dev target,
-just append install-dev after install-etc.
-
-----
-# port -v install bitlbee
-----
-
-and you have to install `bitlbee-skype` and `skype4py` from
-source.
-
-=== Installing from source
-
-NOTE: bitlbee-skype by default builds and installs skyped and the
-plugin. In case you just want to install the plugin for a public server
-or you want to use skyped with a public server (like
-`bitlbee1.asnetinc.net`), you don't need both.
-
-- You need the latest stable BitlBee release (unless you want to use a
- public server):
-
-----
-$ wget http://get.bitlbee.org/src/bitlbee-@BITLBEE_VERSION@.tar.gz
-$ tar xf bitlbee-@BITLBEE_VERSION@.tar.gz
-$ cd bitlbee-@BITLBEE_VERSION@
-----
-
-- Now compile and install it:
-
-----
-$ ./configure
-$ make
-# make install install-dev
-----
-
-- To install http://skype4py.sourceforge.net/[Skype4Py] from source
- (unless you want to install the plugin for a public server):
-
-----
-$ tar -zxvf Skype4Py-x.x.x.x.tar.gz
-$ cd Skype4Py-x.x.x.x
-# python setup.py install
-----
-
-- Get the plugin code (in an empty dir, or whereever you want, it does
- not matter):
-
-----
-$ wget http://vmiklos.hu/project/bitlbee-skype/bitlbee-skype-@VERSION@.tar.gz
-$ tar xf bitlbee-skype-@VERSION@.tar.gz
-$ cd bitlbee-skype-@VERSION@
-----
-
-- Compile and install it:
-
-----
-$ ./configure
-$ make
-# make install
-----
-
-This will install the plugin to where BitlBee expects them, which is
-`/usr/local/lib/bitlbee` if you installed BitlBee from source.
+Or install http://sourceforge.net/projects/skype4py/[Skype4Py], and build
+BitlBee with `--skype=1`.
=== Configuring
diff --git a/protocols/skype/skype.c b/protocols/skype/skype.c
index 7ce562d4..714babf4 100644
--- a/protocols/skype/skype.c
+++ b/protocols/skype/skype.c
@@ -343,11 +343,11 @@ static void skype_parse_user(struct im_connection *ic, char *line)
*ptr = '\0';
ptr++;
if (!strncmp(ptr, "ONLINESTATUS ", 13)) {
- if (!strcmp(user, sd->username))
- return;
- if (!set_getbool(&ic->acc->set, "test_join")
+ if (!strlen(user) || !strcmp(user, sd->username))
+ return;
+ if (!set_getbool(&ic->acc->set, "test_join")
&& !strcmp(user, "echo123"))
- return;
+ return;
ptr = g_strdup_printf("%s@skype.com", user);
imcb_add_buddy(ic, ptr, skype_group_by_username(ic, user));
if (strcmp(status, "OFFLINE") && (strcmp(status, "SKYPEOUT") ||
@@ -1015,7 +1015,10 @@ static void skype_parse_chat(struct im_connection *ic, char *line)
sd->adder = NULL;
}
} else if (!strncmp(info, "MEMBERS ", 8) || !strncmp(info, "ACTIVEMEMBERS ", 14) ) {
- info += 8;
+ if (!strncmp(info, "MEMBERS ", 8))
+ info += 8;
+ else
+ info += 14;
gc = bee_chat_by_title(ic->bee, ic, id);
/* Hack! We set ->data to TRUE
* while we're on the channel
@@ -1563,7 +1566,7 @@ static void skype_init(account_t *acc)
s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
s = set_add(&acc->set, "mood_text", NULL, skype_set_mood_text, acc);
- s->flags |= ACC_SET_NOSAVE | ACC_SET_ONLINE_ONLY;
+ s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
s = set_add(&acc->set, "call", NULL, skype_set_call, acc);
s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;
diff --git a/protocols/skype/skyped.py b/protocols/skype/skyped.py
index 86b1e96a..c9bb103b 100644
--- a/protocols/skype/skyped.py
+++ b/protocols/skype/skyped.py
@@ -272,7 +272,7 @@ def dprint(msg):
if options.log:
sock = open(options.log, "a")
- sock.write(prefix + ": " + sanitized)
+ sock.write("%s: %s\n" % (prefix, sanitized))
sock.close()
sys.stdout.flush()
diff --git a/protocols/skype/t/away-set-bitlbee.mock b/protocols/skype/t/away-set-bitlbee.mock
new file mode 100644
index 00000000..bf073400
--- /dev/null
+++ b/protocols/skype/t/away-set-bitlbee.mock
@@ -0,0 +1,10 @@
+>> NOTICE AUTH
+<< NICK alice
+<< USER alice alice localhost :Alice
+>> PRIVMSG &bitlbee
+<< PRIVMSG &bitlbee :account add skype alice foo
+<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
+<< PRIVMSG &bitlbee :account skype on
+>> PRIVMSG &bitlbee :skype - Logging in: Logged in
+<< AWAY :work
+>> PRIVMSG &bitlbee :alice: USERSTATUS AWAY
diff --git a/protocols/skype/t/away-set-skyped.mock b/protocols/skype/t/away-set-skyped.mock
new file mode 100644
index 00000000..0c2cc494
--- /dev/null
+++ b/protocols/skype/t/away-set-skyped.mock
@@ -0,0 +1,20 @@
+>> SEARCH GROUPS CUSTOM
+<< GROUPS 48, 49
+>> SEARCH FRIENDS
+<< USERS echo123, bob
+>> SET USERSTATUS ONLINE
+<< USERSTATUS ONLINE
+>> SET USERSTATUS ONLINE
+<< 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
+>> SET USERSTATUS AWAY
+<< USERSTATUS AWAY
+<< USER alice ONLINESTATUS AWAY
+<< USERSTATUS AWAY
diff --git a/protocols/skype/t/group-add-bitlbee.mock b/protocols/skype/t/group-add-bitlbee.mock
new file mode 100644
index 00000000..05c9f987
--- /dev/null
+++ b/protocols/skype/t/group-add-bitlbee.mock
@@ -0,0 +1,14 @@
+>> NOTICE AUTH
+<< NICK alice
+<< USER alice alice localhost :Alice
+>> PRIVMSG &bitlbee
+<< PRIVMSG &bitlbee :account add skype alice foo
+<< PRIVMSG &bitlbee :account skype set read_groups true
+<< PRIVMSG &bitlbee :account skype on
+>> :bob!bob@skype.com JOIN :&bitlbee
+>> :cecil!cecil@skype.com JOIN :&bitlbee
+>> :daniel!daniel@skype.com JOIN :&bitlbee
+<< JOIN &family
+>> 353 alice = &family :@alice +bob +cecil @root
+<< INVITE daniel &family
+>> :daniel!daniel@skype.com JOIN :&family
diff --git a/protocols/skype/t/group-add-skyped.mock b/protocols/skype/t/group-add-skyped.mock
new file mode 100644
index 00000000..c47f6629
--- /dev/null
+++ b/protocols/skype/t/group-add-skyped.mock
@@ -0,0 +1,38 @@
+>> SEARCH GROUPS CUSTOM
+<< GROUPS 70, 71
+>> SEARCH FRIENDS
+<< USERS echo123, bob, cecil, daniel, emily
+>> SET USERSTATUS ONLINE
+<< USERSTATUS ONLINE
+>> SET USERSTATUS ONLINE
+<< USERSTATUS ONLINE
+>> GET GROUP 70 DISPLAYNAME
+<< GROUP 70 DISPLAYNAME Family
+>> GET GROUP 70 USERS
+<< GROUP 70 USERS bob, cecil
+>> GET GROUP 71 DISPLAYNAME
+<< GROUP 71 DISPLAYNAME Work
+>> GET GROUP 71 USERS
+<< 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
+>> ALTER GROUP 70 ADDUSER daniel
+<< ALTER GROUP 70 ADDUSER daniel
diff --git a/protocols/skype/t/groupchat-msg-bitlbee.mock b/protocols/skype/t/groupchat-msg-bitlbee.mock
new file mode 100644
index 00000000..d6fac10d
--- /dev/null
+++ b/protocols/skype/t/groupchat-msg-bitlbee.mock
@@ -0,0 +1,11 @@
+>> NOTICE AUTH
+<< NICK alice
+<< USER alice alice localhost :Alice
+>> PRIVMSG &bitlbee
+<< PRIVMSG &bitlbee :account add skype alice foo
+<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true
+<< PRIVMSG &bitlbee :account skype on
+>> JOIN :##cecil/$bob;4d8cc9965791
+>> 353 alice = ##cecil/$bob;4d8cc9965791 :@alice bob cecil @root
+<< PRIVMSG ##cecil/$bob;4d8cc9965791 :hello
+>> PRIVMSG &bitlbee :alice: CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVITY_TIMESTAMP
diff --git a/protocols/skype/t/groupchat-msg-skyped.mock b/protocols/skype/t/groupchat-msg-skyped.mock
new file mode 100644
index 00000000..e939585c
--- /dev/null
+++ b/protocols/skype/t/groupchat-msg-skyped.mock
@@ -0,0 +1,60 @@
+>> SEARCH GROUPS CUSTOM
+<< GROUPS 48, 49
+>> SEARCH FRIENDS
+<< USERS echo123, bob, cecil
+>> SET USERSTATUS ONLINE
+<< USERSTATUS ONLINE
+>> SET USERSTATUS ONLINE
+<< 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
+<< CHATMEMBER 186 ROLE USER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
+<< CHATMESSAGE 188 STATUS RECEIVED
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHATMESSAGE 188 FROM_HANDLE
+<< CHATMESSAGE 188 FROM_HANDLE bob
+>> GET CHATMESSAGE 188 BODY
+<< CHATMESSAGE 188 BODY
+>> GET CHATMESSAGE 188 TYPE
+<< CHATMESSAGE 188 TYPE ADDEDMEMBERS
+>> GET CHATMESSAGE 188 CHATNAME
+<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9
+<< CHATMESSAGE 189 STATUS READ
+<< CHATMESSAGE 189 STATUS READ
+<< CHATMEMBER 186 IS_ACTIVE TRUE
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
+<< CHATMESSAGE 190 STATUS SENT
+>> CHATMESSAGE #cecil/$bob;4d8cc9965791c6b9 hello
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVITY_TIMESTAMP 1364652882
diff --git a/protocols/skype/t/groupchat-topic-bitlbee.mock b/protocols/skype/t/groupchat-topic-bitlbee.mock
new file mode 100644
index 00000000..637e4d98
--- /dev/null
+++ b/protocols/skype/t/groupchat-topic-bitlbee.mock
@@ -0,0 +1,10 @@
+>> NOTICE AUTH
+<< NICK alice
+<< USER alice alice localhost :Alice
+>> PRIVMSG &bitlbee
+<< PRIVMSG &bitlbee :account add skype alice foo
+<< PRIVMSG &bitlbee :account skype on
+>> JOIN :##cecil/$bob;4d8cc9965791
+>> 353 alice = ##cecil/$bob;4d8cc9965791 :@alice bob cecil @root
+<< TOPIC ##cecil/$bob;4d8cc9965791 :topic
+>> TOPIC ##cecil/$bob;4d8cc9965791 :topic
diff --git a/protocols/skype/t/groupchat-topic-skyped.mock b/protocols/skype/t/groupchat-topic-skyped.mock
new file mode 100644
index 00000000..26c4b53b
--- /dev/null
+++ b/protocols/skype/t/groupchat-topic-skyped.mock
@@ -0,0 +1,60 @@
+>> SEARCH GROUPS CUSTOM
+<< GROUPS 48, 49
+>> SEARCH FRIENDS
+<< USERS echo123, bob, cecil
+>> SET USERSTATUS ONLINE
+<< USERSTATUS ONLINE
+>> SET USERSTATUS ONLINE
+<< 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
+<< CHATMEMBER 186 ROLE USER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED
+<< CHATMESSAGE 188 STATUS RECEIVED
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob
+>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC
+>> GET CHATMESSAGE 188 FROM_HANDLE
+<< CHATMESSAGE 188 FROM_HANDLE bob
+>> GET CHATMESSAGE 188 BODY
+<< CHATMESSAGE 188 BODY
+>> GET CHATMESSAGE 188 TYPE
+<< CHATMESSAGE 188 TYPE ADDEDMEMBERS
+>> GET CHATMESSAGE 188 CHATNAME
+<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9
+<< CHATMESSAGE 189 STATUS READ
+<< CHATMESSAGE 189 STATUS READ
+<< CHATMEMBER 186 IS_ACTIVE TRUE
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice
+<< CHATMESSAGE 190 STATUS SENT
+>> ALTER CHAT #cecil/$bob;4d8cc9965791c6b9 SETTOPIC topic
+<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC topic
diff --git a/protocols/skype/test.py b/protocols/skype/test.py
index 63652f76..233c41c8 100755
--- a/protocols/skype/test.py
+++ b/protocols/skype/test.py
@@ -112,6 +112,12 @@ class Test(unittest.TestCase):
def testGroupchatLeave(self):
self.mock("groupchat-leave")
+ def testGroupchatMsg(self):
+ self.mock("groupchat-msg")
+
+ def testGroupchatTopic(self):
+ self.mock("groupchat-topic")
+
def testCalledYes(self):
self.mock("called-yes")
@@ -124,11 +130,17 @@ class Test(unittest.TestCase):
def testGroupRead(self):
self.mock("group-read")
+ def testGroupAdd(self):
+ self.mock("group-add")
+
def testCtcpHelp(self):
self.mock("ctcp-help")
def testSetMoodText(self):
self.mock("set-mood-text")
+
+ def testAwaySet(self):
+ self.mock("away-set")
if __name__ == '__main__':
setupSkyped()
diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c
index db61ba7c..4626cf55 100644
--- a/protocols/twitter/twitter.c
+++ b/protocols/twitter/twitter.c
@@ -157,8 +157,13 @@ static const struct oauth_service *get_oauth_service(struct im_connection *ic)
static void twitter_oauth_start(struct im_connection *ic)
{
struct twitter_data *td = ic->proto_data;
+ const char *url = set_getstr(&ic->acc->set, "base_url");
imcb_log(ic, "Requesting OAuth request token");
+
+ if (!strstr(url, "twitter.com") && !strstr(url, "identi.ca"))
+ imcb_log(ic, "Warning: OAuth only works with identi.ca and "
+ "Twitter.");
td->oauth_info = oauth_request_token(get_oauth_service(ic), twitter_oauth_callback, ic);
@@ -177,7 +182,7 @@ static gboolean twitter_oauth_callback(struct oauth_info *info)
td = ic->proto_data;
if (info->stage == OAUTH_REQUEST_TOKEN) {
- char name[strlen(ic->acc->user) + 9], *msg;
+ char *name, *msg;
if (info->request_token == NULL) {
imcb_error(ic, "OAuth error: %s", twitter_parse_error(info->http));
@@ -185,11 +190,12 @@ static gboolean twitter_oauth_callback(struct oauth_info *info)
return FALSE;
}
- sprintf(name, "%s_%s", td->prefix, ic->acc->user);
+ name = g_strdup_printf("%s_%s", td->prefix, ic->acc->user);
msg = g_strdup_printf("To finish OAuth authentication, please visit "
"%s and respond with the resulting PIN code.",
info->auth_url);
imcb_buddy_msg(ic, name, msg, 0, 0);
+ g_free(name);
g_free(msg);
} else if (info->stage == OAUTH_ACCESS_TOKEN) {
const char *sn;
@@ -282,13 +288,16 @@ static void twitter_init(account_t * acc)
set_t *s;
char *def_url;
char *def_tul;
+ char *def_mentions;
if (strcmp(acc->prpl->name, "twitter") == 0) {
def_url = TWITTER_API_URL;
def_tul = "20";
+ def_mentions = "true";
} else { /* if( strcmp( acc->prpl->name, "identica" ) == 0 ) */
def_url = IDENTICA_API_URL;
def_tul = "0";
+ def_mentions = "false";
}
s = set_add(&acc->set, "auto_reply_timeout", "10800", set_eval_int, acc);
@@ -301,7 +310,7 @@ static void twitter_init(account_t * acc)
s = set_add(&acc->set, "fetch_interval", "60", set_eval_int, acc);
s->flags |= ACC_SET_OFFLINE_ONLY;
- s = set_add(&acc->set, "fetch_mentions", "true", set_eval_bool, acc);
+ s = set_add(&acc->set, "fetch_mentions", def_mentions, set_eval_bool, acc);
s = set_add(&acc->set, "message_length", "140", set_eval_int, acc);
diff --git a/protocols/twitter/twitter_http.c b/protocols/twitter/twitter_http.c
index 0f1ab518..f7ab6e18 100644
--- a/protocols/twitter/twitter_http.c
+++ b/protocols/twitter/twitter_http.c
@@ -77,7 +77,7 @@ struct http_request *twitter_http(struct im_connection *ic, char *url_string, ht
}
// Make the request.
- g_string_printf(request, "%s %s%s%s%s HTTP/1.0\r\n"
+ g_string_printf(request, "%s %s%s%s%s HTTP/1.1\r\n"
"Host: %s\r\n"
"User-Agent: BitlBee " BITLBEE_VERSION " " ARCH "/" CPU "\r\n",
is_post ? "POST" : "GET",
diff --git a/protocols/twitter/twitter_lib.h b/protocols/twitter/twitter_lib.h
index f59c81ef..e593d229 100644
--- a/protocols/twitter/twitter_lib.h
+++ b/protocols/twitter/twitter_lib.h
@@ -28,7 +28,7 @@
#include "nogaim.h"
#include "twitter_http.h"
-#define TWITTER_API_URL "http://api.twitter.com/1.1"
+#define TWITTER_API_URL "https://api.twitter.com/1.1"
#define IDENTICA_API_URL "https://identi.ca/api"
/* Status URLs */