--- a/Makefile Thu May 04 23:13:55 2017 -0500
+++ b/Makefile Tue May 09 22:50:39 2017 -0500
@@ -6,14 +6,21 @@
PLUGIN_NAME := purple-spasm
- $(shell pkg-config --cflags json-glib-1.0)
- $(shell pkg-config --libs json-glib-1.0)
+ $(shell pkg-config --cflags json-glib-1.0) \ + $(shell pkg-config --cflags libsoup-2.4) + $(shell pkg-config --libs json-glib-1.0) \ + $(shell pkg-config --libs libsoup-2.4)
--- a/spasm-account.h Thu May 04 23:13:55 2017 -0500
+++ b/spasm-account.h Tue May 09 22:50:39 2017 -0500
@@ -22,13 +22,28 @@
+#include <libsoup/soup.h>
- PurpleAccount *account;
- PurpleConnection *connection;
+#define PURPLE_SPASM_ACCOUNT(obj) ((PurpleSpasmAccount *)(obj)) +typedef struct _PurpleSpasmAccount PurpleSpasmAccount; +PurpleSpasmAccount *purple_spasm_account_new(PurpleAccount *account, PurpleConnection *connection); +void purple_spasm_account_free(PurpleSpasmAccount *sa); +PurpleAccount *purple_spasm_account_get_account(const PurpleSpasmAccount *sa); +PurpleConnection *purple_spasm_account_get_connection(const PurpleSpasmAccount *sa); +SoupSession *purple_spasm_account_get_session(const PurpleSpasmAccount *sa); +void purple_spasm_account_set_access_token(PurpleSpasmAccount *sa, const gchar *access_token); +const gchar * purple_spasm_account_get_access_token(const PurpleSpasmAccount *sa); #endif /* PURPLE_SPASM_ACCOUNT_H */
--- a/spasm-auth.c Thu May 04 23:13:55 2017 -0500
+++ b/spasm-auth.c Tue May 09 22:50:39 2017 -0500
@@ -17,35 +17,46 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#include <libsoup/soup.h> #include "spasm-account.h"
/******************************************************************************
*****************************************************************************/
purple_spasm_access_token_input_cb(gpointer data, const gchar *access_token) {
- SpasmAccount *sa = data;
+ PurpleAccount *account = NULL; + PurpleConnection *connection = NULL; + PurpleSpasmAccount *sa = PURPLE_SPASM_ACCOUNT(data); - g_free(sa->access_token);
- sa->access_token = (access_token) ? g_strdup(access_token) : NULL;
+ account = purple_spasm_account_get_account(sa); + purple_account_set_remember_password(account, TRUE); - purple_account_set_remember_password(sa->account, TRUE);
- purple_account_set_password(sa->account, sa->access_token);
+ purple_spasm_account_set_access_token(sa, access_token); + purple_account_set_password(account, access_token); - purple_connection_set_state(sa->connection, PURPLE_CONNECTED);
+ connection = purple_spasm_account_get_connection(sa); + purple_connection_set_state(connection, PURPLE_CONNECTED); + purple_spasm_refresh_user(sa); purple_spasm_access_token_cancel_cb(gpointer data) {
- SpasmAccount *sa = data;
+ PurpleSpasmAccount *sa = PURPLE_SPASM_ACCOUNT(data);
+ purple_spasm_account_get_connection(sa), "User cancelled authorization"
+ purple_spasm_account_free(sa); /******************************************************************************
@@ -54,19 +65,16 @@
purple_spasm_login(PurpleAccount *account) {
PurpleConnection *pc = NULL;
- SpasmAccount *sa = NULL;
+ PurpleSpasmAccount *sa = NULL; gchar *state = NULL, *uri = NULL;
const gchar *username = NULL;
pc = purple_account_get_connection(account);
username = purple_account_get_username(account);
- sa = g_new0(SpasmAccount, 1);
+ sa = purple_spasm_account_new(account, pc); purple_connection_set_protocol_data(pc, sa);
purple_connection_set_state(pc, PURPLE_CONNECTING);
state = g_strdup_printf("%s,%s", PURPLE_SPASM_PLUGIN_ID, username);
@@ -80,7 +88,7 @@
- purple_connection_update_progress(sa->connection, "Authenticating", 1, 2);
+ purple_connection_update_progress(pc, "Authenticating", 1, 2); /* send off the oauth implicit request */
purple_notify_uri(pc, uri);
@@ -97,7 +105,7 @@
"OK", G_CALLBACK(purple_spasm_access_token_input_cb),
"Cancel", G_CALLBACK(purple_spasm_access_token_cancel_cb),
--- a/spasm-const.h Thu May 04 23:13:55 2017 -0500
+++ b/spasm-const.h Tue May 09 22:50:39 2017 -0500
@@ -21,10 +21,12 @@
#define PURPLE_SPASM_CONSTS_H
#define PURPLE_SPASM_PLUGIN_ID "prpl-grim-spasm"
+#define PURPLE_SPASM_BASE_URL "https://api.twitch.tv/kraken/" +#define PURPLE_SPASM_CONTENT_TYPE "application/vnd.twitchtv.v5+json" #define PURPLE_SPASM_OAUTH2_CLIENT_ID "w7le4wyxwbipv6kf5qmqogwkqskl12"
#define PURPLE_SPASM_OAUTH2_SCOPES "user_read chat_login"
#define PURPLE_SPASM_OAUTH2_REDIRECT_URI "https://pidgin.im/oauth.html"
-#define PURPLE_SPASM_OAUTH2_URI "https://api.twitch.tv/kraken/oauth2/authorize?" \
+#define PURPLE_SPASM_OAUTH2_URI PURPLE_SPASM_BASE_URL "oauth2/authorize?" \