Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/EionRobb/skype4pidgin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEion Robb <eion@robbmob.com>2015-09-30 02:07:46 +0300
committerEion Robb <eion@robbmob.com>2015-09-30 02:07:46 +0300
commitfb9f2967a0b472a728b8373fd87d8125c5959d85 (patch)
treeb451d8256b3452ea5675b11dd085836ed9ab8d68
parent132ed9b87213c4b36128585086e74a3613570c82 (diff)
SkypeWeb : More purple3 compatibility improvements
-rw-r--r--skypeweb/libskypeweb.c48
-rw-r--r--skypeweb/libskypeweb.h28
-rw-r--r--skypeweb/skypeweb_contacts.c10
3 files changed, 58 insertions, 28 deletions
diff --git a/skypeweb/libskypeweb.c b/skypeweb/libskypeweb.c
index 75c7805..8582fc6 100644
--- a/skypeweb/libskypeweb.c
+++ b/skypeweb/libskypeweb.c
@@ -33,7 +33,7 @@ skypeweb_do_all_the_things(SkypeWebAccount *sa)
purple_timeout_remove(sa->authcheck_timeout);
skypeweb_check_authrequests(sa);
sa->authcheck_timeout = purple_timeout_add_seconds(120, (GSourceFunc)skypeweb_check_authrequests, sa);
- purple_connection_set_state(sa->pc, PURPLE_CONNECTED);
+ purple_connection_set_state(sa->pc, PURPLE_CONNECTION_CONNECTED);
skypeweb_get_friend_list(sa);
skypeweb_poll(sa);
@@ -307,7 +307,9 @@ skypeweb_login(PurpleAccount *account)
flags |= PURPLE_CONNECTION_FLAG_HTML | PURPLE_CONNECTION_FLAG_NO_BGCOLOR | PURPLE_CONNECTION_FLAG_NO_FONTSIZE;
purple_connection_set_flags(pc, flags);
- sa->username = g_strdup(purple_account_get_username(account));
+ if (!SKYPEWEB_BUDDY_IS_MSN(purple_account_get_username(account))) {
+ sa->username = g_ascii_strdown(purple_account_get_username(account), -1);
+ }
sa->account = account;
sa->pc = pc;
sa->cookie_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
@@ -587,47 +589,47 @@ plugin_load(PurplePlugin *plugin
//leave
- purple_cmd_register("leave", "", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
- plugin->info->id, skypeweb_cmd_leave,
+ purple_cmd_register("leave", "", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
+ PURPLE_CMD_FLAG_PROTOCOL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
+ SKYPEWEB_PLUGIN_ID, skypeweb_cmd_leave,
_("leave: Leave the group chat"), NULL);
//kick
- purple_cmd_register("kick", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY,
- plugin->info->id, skypeweb_cmd_kick,
+ purple_cmd_register("kick", "s", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
+ PURPLE_CMD_FLAG_PROTOCOL_ONLY,
+ SKYPEWEB_PLUGIN_ID, skypeweb_cmd_kick,
_("kick &lt;user&gt;: Kick a user from the group chat."),
NULL);
//add
- purple_cmd_register("add", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY,
- plugin->info->id, skypeweb_cmd_invite,
+ purple_cmd_register("add", "s", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
+ PURPLE_CMD_FLAG_PROTOCOL_ONLY,
+ SKYPEWEB_PLUGIN_ID, skypeweb_cmd_invite,
_("add &lt;user&gt;: Add a user to the group chat."),
NULL);
//topic
- purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
- plugin->info->id, skypeweb_cmd_topic,
+ purple_cmd_register("topic", "s", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
+ PURPLE_CMD_FLAG_PROTOCOL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
+ SKYPEWEB_PLUGIN_ID, skypeweb_cmd_topic,
_("topic [&lt;new topic&gt;]: View or change the topic"),
NULL);
/*
//call, as in call person
//kickban
- purple_cmd_register("kickban", "s", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY,
- plugin->info->id, skypeweb_cmd_kickban,
+ purple_cmd_register("kickban", "s", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
+ PURPLE_CMD_FLAG_PROTOCOL_ONLY,
+ SKYPEWEB_PLUGIN_ID, skypeweb_cmd_kickban,
_("kickban &lt;user&gt; [room]: Kick and ban a user from the room."),
NULL);
//setrole
- purple_cmd_register("setrole", "ss", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY,
- plugin->info->id, skypeweb_cmd_setrole,
+ purple_cmd_register("setrole", "ss", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
+ PURPLE_CMD_FLAG_PROTOCOL_ONLY,
+ SKYPEWEB_PLUGIN_ID, skypeweb_cmd_setrole,
_("setrole &lt;user&gt; &lt;MASTER | USER | ADMIN&gt;: Change the role of a user."),
NULL);
*/
- purple_cmd_register("list", "", PURPLE_CMD_P_PRPL, PURPLE_CMD_FLAG_CHAT |
- PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_IM,
- plugin->info->id, skypeweb_cmd_list,
+ purple_cmd_register("list", "", PURPLE_CMD_P_PLUGIN, PURPLE_CMD_FLAG_CHAT |
+ PURPLE_CMD_FLAG_PROTOCOL_ONLY | PURPLE_CMD_FLAG_IM,
+ SKYPEWEB_PLUGIN_ID, skypeweb_cmd_list,
_("list: Display a list of multi-chat group chats you are in."),
NULL);
diff --git a/skypeweb/libskypeweb.h b/skypeweb/libskypeweb.h
index 8ae20ec..921fdf6 100644
--- a/skypeweb/libskypeweb.h
+++ b/skypeweb/libskypeweb.h
@@ -80,6 +80,7 @@
#else
#include "buddylist.h"
#include "plugins.h"
+ #include "http.h"
#endif
#if GLIB_MAJOR_VERSION >= 2 && GLIB_MINOR_VERSION >= 12
@@ -128,6 +129,8 @@
#define PURPLE_CHAT_USER_AWAY PURPLE_CBFLAGS_AWAY
#define PURPLE_CHAT_USER_HALFOP PURPLE_CBFLAGS_HALFOP
#define PURPLE_CHAT_USER_VOICE PURPLE_CBFLAGS_VOICE
+ #define PURPLE_CHAT_USER_TYPING PURPLE_CBFLAGS_TYPING
+ #define purple_chat_user_get_flags(cb) purple_conv_chat_user_get_flags(
#define purple_serv_got_joined_chat(pc, id, name) PURPLE_CONV_CHAT(serv_got_joined_chat(pc, id, name))
#define purple_serv_got_chat_invite serv_got_chat_invite
#define purple_serv_got_chat_in serv_got_chat_in
@@ -169,6 +172,31 @@
#define purple_hash_append purple_cipher_context_append
#define purple_hash_digest(hash, data, len) purple_cipher_context_digest(hash, len, data, NULL)
#define purple_hash_destroy purple_cipher_context_destroy
+ #define PURPLE_CMD_FLAG_PROTOCOL_ONLY PURPLE_CMD_FLAG_PRPL_ONLY
+ #define PURPLE_CMD_P_PLUGIN PURPLE_CMD_P_PRPL
+
+/*typedef struct {
+ PurpleConvChatBuddy cb;
+ PurpleConvChat *chat;
+} PurpleChatUser;*/
+
+typedef struct {
+ gchar *host;
+ gint port;
+ gchar *path;
+ gchar *user;
+ gchar *passwd;
+} PurpleHttpURL;
+
+static inline PurpleHttpURL *purple_http_url_parse(const gchar *url) {
+ PurpleHttpURL *ret = g_new0(PurpleHttpURL, 1);
+ purple_url_parse(url, &(ret->host), &(ret->port), &(ret->path), &(ret->user), &(ret->passwd));
+ return ret;
+}
+ #define purple_http_url_get_host(httpurl) (httpurl->host)
+ #define purple_http_url_get_path(httpurl) (httpurl->path)
+static inline void purple_http_url_free(PurpleHttpURL *phl) { g_free(phl->host); g_free(phl->path); g_free(phl->user); g_free(phl->passwd); g_free(phl); }
+
#else
#define purple_conversation_set_data(conv, key, value) g_object_set_data(G_OBJECT(conv), key, value)
#define purple_conversation_get_data(conv, key) g_object_get_data(G_OBJECT(conv), key)
diff --git a/skypeweb/skypeweb_contacts.c b/skypeweb/skypeweb_contacts.c
index 498af88..e38729f 100644
--- a/skypeweb/skypeweb_contacts.c
+++ b/skypeweb/skypeweb_contacts.c
@@ -124,24 +124,24 @@ void
skypeweb_download_uri_to_conv(SkypeWebAccount *sa, const gchar *uri, PurpleConversation *conv)
{
gchar *headers;
- gchar *path, *host;
PurpleUtilFetchUrlData *requestdata;
+ PurpleHttpURL *httpurl;
- purple_url_parse(uri, &host, NULL, &path, NULL, NULL);
+ httpurl = purple_http_url_parse(uri);
headers = g_strdup_printf("GET /%s HTTP/1.0\r\n"
"Connection: close\r\n"
"Accept: image/*\r\n"
"Cookie: skypetoken_asm=%s\r\n"
"Host: %s\r\n"
"\r\n\r\n",
- path, sa->skype_token, host);
+ purple_http_url_get_path(httpurl), sa->skype_token,
+ purple_http_url_get_host(httpurl));
requestdata = purple_util_fetch_url_request(sa->account, uri, TRUE, NULL, FALSE, headers, FALSE, -1, skypeweb_got_imagemessage, conv);
requestdata->num_times_redirected = 10; /* Prevent following redirects */
g_free(headers);
- g_free(host);
- g_free(path);
+ purple_http_url_free(httpurl);
}