--- a/spasm-account.c Mon Sep 30 22:55:04 2019 -0500
+++ b/spasm-account.c Mon Sep 30 23:51:10 2019 -0500
@@ -1,6 +1,6 @@
* PurpleSpasm - A Twitch Protocol Plugin
- * Copyright (C) 2017 Gary Kramlich <grim@reaperworld.com>
+ * Copyright (C) 2017-2019 Gary Kramlich <grim@reaperworld.com> * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -56,7 +56,9 @@
*****************************************************************************/
static PurpleSpasmAccount *
-purple_spasm_account_new(PurpleAccount *account, PurpleConnection *connection) {
+spasm_account_new(PurpleAccount *account, + PurpleConnection *connection) PurpleSpasmAccount *sa = NULL;
sa = g_new0(PurpleSpasmAccount, 1);
@@ -73,19 +75,19 @@
-purple_spasm_account_free(PurpleSpasmAccount *sa) {
+spasm_account_free(PurpleSpasmAccount *sa) { g_free(sa->access_token);
- purple_spasm_chat_service_free(sa->chat);
+ spasm_chat_service_free(sa->chat); -_purple_spasm_account_set_access_token(PurpleSpasmAccount *sa,
- const gchar *access_token)
+spasm_account_set_access_token(PurpleSpasmAccount *sa, + const gchar *access_token) @@ -93,14 +95,14 @@
-_purple_spasm_account_update_profile(PurpleSpasmAccount *sa, JsonParser *parser) {
+spasm_account_update_profile(PurpleSpasmAccount *sa, JsonParser *parser) { const gchar *str_attr = NULL;
@@ -140,11 +142,11 @@
/******************************************************************************
*****************************************************************************/
-static void _purple_spasm_oauth_login(PurpleSpasmAccount *sa);
+static void spasm_oauth_login(PurpleSpasmAccount *sa); -_purple_spasm_login_test_cb(PurpleSpasmAccount *sa, JsonParser *parser,
- GError *error, gpointer data)
+spasm_login_test_cb(PurpleSpasmAccount *sa, JsonParser *parser, + GError *error, gpointer data) PurpleAccount *account = NULL;
PurpleConnection *connection = NULL;
@@ -152,15 +154,15 @@
purple_debug_info("spasm", "oauth token invalid, re-authenticating : %s\n", error->message);
- _purple_spasm_oauth_login(sa);
- account = purple_spasm_account_get_account(sa);
+ account = spasm_account_get_account(sa); connection = purple_account_get_connection(account);
- error = _purple_spasm_account_update_profile(sa, parser);
+ error = spasm_account_update_profile(sa, parser); @@ -182,50 +184,50 @@
- sa->chat = purple_spasm_chat_service_new(sa);
- purple_spasm_chat_service_connect(sa->chat);
+ sa->chat = spasm_chat_service_new(sa); + spasm_chat_service_connect(sa->chat); -_purple_spasm_access_token_input_cb(gpointer data, const gchar *access_token) {
+spasm_access_token_input_cb(gpointer data, const gchar *access_token) { PurpleAccount *account = NULL;
PurpleConnection *connection = NULL;
- PurpleSpasmAccount *sa = PURPLE_SPASM_ACCOUNT(data);
+ PurpleSpasmAccount *sa = SPASM_ACCOUNT(data); - account = purple_spasm_account_get_account(sa);
+ account = spasm_account_get_account(sa); purple_account_set_remember_password(account, TRUE);
- _purple_spasm_account_set_access_token(sa, access_token);
+ spasm_account_set_access_token(sa, access_token); purple_account_set_password(account, access_token, NULL, NULL);
- connection = purple_spasm_account_get_connection(sa);
+ connection = spasm_account_get_connection(sa); purple_connection_update_progress(connection, "Verifying", 2, 3);
- purple_spasm_get_user(sa, _purple_spasm_login_test_cb, NULL);
+ spasm_get_user(sa, spasm_login_test_cb, NULL); -_purple_spasm_access_token_cancel_cb(gpointer data) {
- PurpleSpasmAccount *sa = PURPLE_SPASM_ACCOUNT(data);
+spasm_access_token_cancel_cb(gpointer data) { + PurpleSpasmAccount *sa = SPASM_ACCOUNT(data); - purple_spasm_account_get_connection(sa),
+ spasm_account_get_connection(sa), PURPLE_CONNECTION_ERROR_OTHER_ERROR,
"User cancelled authorization"
- purple_spasm_account_free(sa);
+ spasm_account_free(sa); -_purple_spasm_oauth_login(PurpleSpasmAccount *sa) {
+spasm_oauth_login(PurpleSpasmAccount *sa) { PurpleAccount *account = NULL;
PurpleConnection *connection = NULL;
PurpleRequestCommonParameters *cpar = NULL;
gchar *state = NULL, *uri = NULL;
const gchar *username = NULL;
- account = purple_spasm_account_get_account(sa);
+ account = spasm_account_get_account(sa); connection = purple_account_get_connection(account);
purple_connection_update_progress(
@@ -236,13 +238,13 @@
username = purple_account_get_username(account);
- state = g_strdup_printf("%s,%s", PURPLE_SPASM_PLUGIN_ID, username);
+ state = g_strdup_printf("%s,%s", SPASM_PLUGIN_ID, username); - PURPLE_SPASM_OAUTH2_URI,
- PURPLE_SPASM_OAUTH2_CLIENT_ID,
- PURPLE_SPASM_OAUTH2_REDIRECT_URI,
- PURPLE_SPASM_OAUTH2_SCOPES,
+ SPASM_OAUTH2_CLIENT_ID, + SPASM_OAUTH2_REDIRECT_URI, @@ -262,8 +264,8 @@
- "OK", G_CALLBACK(_purple_spasm_access_token_input_cb),
- "Cancel", G_CALLBACK(_purple_spasm_access_token_cancel_cb),
+ "OK", G_CALLBACK(spasm_access_token_input_cb), + "Cancel", G_CALLBACK(spasm_access_token_cancel_cb), @@ -273,28 +275,28 @@
*****************************************************************************/
-purple_spasm_account_get_account(const PurpleSpasmAccount *sa) {
+spasm_account_get_account(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_connection(const PurpleSpasmAccount *sa) {
+spasm_account_get_connection(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_cancellable(const PurpleSpasmAccount *sa) {
+spasm_account_get_cancellable(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_session(const PurpleSpasmAccount *sa) {
+spasm_account_get_session(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
@@ -305,77 +307,77 @@
-purple_spasm_account_get_access_token(const PurpleSpasmAccount *sa) {
+spasm_account_get_access_token(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_display_name(const PurpleSpasmAccount *sa) {
+spasm_account_get_display_name(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_id(const PurpleSpasmAccount *sa) {
+spasm_account_get_id(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_name(const PurpleSpasmAccount *sa) {
+spasm_account_get_name(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_type(const PurpleSpasmAccount *sa) {
+spasm_account_get_type(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_bio(const PurpleSpasmAccount *sa) {
+spasm_account_get_bio(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_logo(const PurpleSpasmAccount *sa) {
+spasm_account_get_logo(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_email(const PurpleSpasmAccount *sa) {
+spasm_account_get_email(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, NULL);
-purple_spasm_account_get_email_verified(const PurpleSpasmAccount *sa) {
+spasm_account_get_email_verified(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, FALSE);
return sa->email_verified;
-purple_spasm_account_get_partnered(const PurpleSpasmAccount *sa) {
+spasm_account_get_partnered(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, FALSE);
-purple_spasm_account_get_twitter_connected(const PurpleSpasmAccount *sa) {
+spasm_account_get_twitter_connected(const PurpleSpasmAccount *sa) { g_return_val_if_fail(sa, FALSE);
return sa->twitter_connected;
@@ -385,24 +387,24 @@
spasm_account_login_got_password(PurpleAccount *account, const gchar *password,
GError *error, gpointer data)
- PurpleSpasmAccount *sa = PURPLE_SPASM_ACCOUNT(data);
+ PurpleSpasmAccount *sa = SPASM_ACCOUNT(data); - _purple_spasm_account_set_access_token(sa, password);
- purple_spasm_get_user(sa, _purple_spasm_login_test_cb, NULL);
+ spasm_account_set_access_token(sa, password); + spasm_get_user(sa, spasm_login_test_cb, NULL); - _purple_spasm_oauth_login(sa);
-purple_spasm_account_login(PurpleAccount *account) {
+spasm_account_login(PurpleAccount *account) { PurpleConnection *pc = NULL;
PurpleSpasmAccount *sa = NULL;
pc = purple_account_get_connection(account);
- sa = purple_spasm_account_new(account, pc);
+ sa = spasm_account_new(account, pc); purple_connection_set_protocol_data(pc, sa);
purple_connection_set_state(pc, PURPLE_CONNECTION_CONNECTING);
--- a/spasm-chat.c Mon Sep 30 22:55:04 2019 -0500
+++ b/spasm-chat.c Mon Sep 30 23:51:10 2019 -0500
@@ -40,8 +40,8 @@
*****************************************************************************/
-_purple_spasm_chat_service_send(PurpleSpasmChatService *chat,
- const gchar *format, ...)
+spasm_chat_service_real_send(PurpleSpasmChatService *chat, + const gchar *format, ...) GCancellable *cancellable = NULL;
@@ -49,7 +49,7 @@
- cancellable = purple_spasm_account_get_cancellable(chat->sa);
+ cancellable = spasm_account_get_cancellable(chat->sa); buffer = g_strdup_vprintf(format, vargs);
@@ -66,7 +66,7 @@
- PurpleConnection *purple_connection = purple_spasm_account_get_connection(chat->sa);
+ PurpleConnection *purple_connection = spasm_account_get_connection(chat->sa); @@ -93,20 +93,20 @@
*****************************************************************************/
-_purple_spasm_chat_service_parse(PurpleSpasmChatService *chat,
+spasm_chat_service_parse(PurpleSpasmChatService *chat, if(purple_str_has_prefix(buffer, "PING ")) {
purple_debug_misc("spasm", "PING? PONG!\n");
- _purple_spasm_chat_service_send(chat, "PONG %s\r\n", buffer + 5);
+ spasm_chat_service_real_send(chat, "PONG %s\r\n", buffer + 5); -static void _purple_spasm_chat_read(PurpleSpasmChatService *chat);
+static void spasm_chat_read(PurpleSpasmChatService *chat); -_purple_spasm_chat_read_cb(GObject *obj, GAsyncResult *res, gpointer data) {
+spasm_chat_read_cb(GObject *obj, GAsyncResult *res, gpointer data) { @@ -138,7 +138,7 @@
- purple_spasm_account_get_connection(chat->sa),
+ spasm_account_get_connection(chat->sa), PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
@@ -150,20 +150,20 @@
purple_debug_info("spasm", "chat buffer: %s\n", buffer);
- _purple_spasm_chat_service_parse(chat, buffer);
+ spasm_chat_service_parse(chat, buffer); - _purple_spasm_chat_read(chat);
-_purple_spasm_chat_read(PurpleSpasmChatService *chat) {
+spasm_chat_read(PurpleSpasmChatService *chat) { g_data_input_stream_read_line_async(
- purple_spasm_account_get_cancellable(chat->sa),
- _purple_spasm_chat_read_cb,
+ spasm_account_get_cancellable(chat->sa), @@ -172,12 +172,12 @@
*****************************************************************************/
-_purple_spasm_chat_login_cb(GObject *obj, GAsyncResult *res, gpointer data) {
+spasm_chat_login_cb(GObject *obj, GAsyncResult *res, gpointer data) { PurpleConnection *purple_connection = NULL;
PurpleSpasmChatService *chat = (PurpleSpasmChatService *)data;
- purple_connection = purple_spasm_account_get_connection(chat->sa);
+ purple_connection = spasm_account_get_connection(chat->sa); chat->socket_connection = g_socket_client_connect_to_host_finish(
@@ -210,17 +210,17 @@
chat->output_stream = g_io_stream_get_output_stream(G_IO_STREAM(chat->socket_connection));
- _purple_spasm_chat_service_send(
+ spasm_chat_service_real_send( - purple_spasm_account_get_access_token(chat->sa)
+ spasm_account_get_access_token(chat->sa) /* now try to use our nick */
- _purple_spasm_chat_service_send(
+ spasm_chat_service_real_send( - purple_spasm_account_get_name(chat->sa)
+ spasm_account_get_name(chat->sa) purple_connection_set_state(purple_connection, PURPLE_CONNECTION_CONNECTED);
@@ -229,11 +229,11 @@
g_io_stream_get_input_stream(G_IO_STREAM(chat->socket_connection))
- _purple_spasm_chat_read(chat);
-purple_spasm_chat_service_new(PurpleSpasmAccount *sa) {
+spasm_chat_service_new(PurpleSpasmAccount *sa) { PurpleSpasmChatService *chat = NULL;
g_return_val_if_fail(sa, NULL);
@@ -245,7 +245,7 @@
-purple_spasm_chat_service_free(PurpleSpasmChatService *chat) {
+spasm_chat_service_free(PurpleSpasmChatService *chat) { g_object_unref(chat->input_stream);
g_object_unref(chat->output_stream);
g_object_unref(chat->socket_client);
@@ -255,7 +255,7 @@
-purple_spasm_chat_service_connect(PurpleSpasmChatService *chat) {
+spasm_chat_service_connect(PurpleSpasmChatService *chat) { chat->socket_client = g_socket_client_new();
@@ -264,22 +264,21 @@
g_socket_client_connect_to_host_async(
- PURPLE_SPASM_CHAT_HOSTNAME,
- PURPLE_SPASM_CHAT_PORT,
- purple_spasm_account_get_cancellable(chat->sa),
- _purple_spasm_chat_login_cb,
+ spasm_account_get_cancellable(chat->sa),
-purple_spasm_chat_service_info(PurpleConnection *connection) {
+GList *_spasm_chat_service_info(PurpleConnection *connection) { -purple_spasm_chat_service_info_default(PurpleConnection *connection,
+spasm_chat_service_info_default(PurpleConnection *connection, GHashTable *defaults = g_hash_table_new_full(
@@ -296,35 +295,35 @@
-purple_spasm_chat_service_join(PurpleConnection *connection,
- GHashTable *components)
+spasm_chat_service_join(PurpleConnection *connection, + GHashTable *components) -purple_spasm_chat_service_name(GHashTable *components) {
+spasm_chat_service_name(GHashTable *components) { return g_strdup(g_hash_table_lookup(components, "channel"));
-purple_spasm_chat_service_leave(PurpleConnection *connection, gint id) {
+spasm_chat_service_leave(PurpleConnection *connection, gint id) { -purple_spasm_chat_service_send(PurpleConnection *connection,
- PurpleMessageFlags flags)
+spasm_chat_service_send(PurpleConnection *connection, + PurpleMessageFlags flags) -purple_spasm_chat_service_set_topic(PurpleConnection *connection,
+spasm_chat_service_set_topic(PurpleConnection *connection, --- a/spasm-rest.c Mon Sep 30 22:55:04 2019 -0500
+++ b/spasm-rest.c Mon Sep 30 23:51:10 2019 -0500
@@ -1,6 +1,6 @@
* PurpleSpasm - A Twitch Protocol Plugin
- * Copyright (C) 2017 Gary Kramlich <grim@reaperworld.com>
+ * Copyright (C) 2017-2019 Gary Kramlich <grim@reaperworld.com> * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -38,9 +38,7 @@
*****************************************************************************/
-_purple_spasm_request_cb(GObject *obj, GAsyncResult *res,
+spasm_request_cb(GObject *obj, GAsyncResult *res, gpointer data) { GInputStream *istream = NULL;
JsonParser *parser = NULL;
@@ -71,7 +69,7 @@
root = json_parser_get_root(parser);
if(root == NULL || !JSON_NODE_HOLDS_OBJECT(root)) {
@@ -88,7 +86,7 @@
json_obj = json_node_get_object(root);
@@ -105,7 +103,7 @@
if(json_object_has_member(json_obj, "error")) {
purple_debug_info("spasm", "error: %s\n", json_object_get_string_member(json_obj, "error"));
"error : %s : %" G_GINT64_FORMAT,
json_object_get_string_member(json_obj, "message"),
@@ -130,9 +128,9 @@
*****************************************************************************/
-purple_spasm_rest_request(PurpleSpasmAccount *sa, const gchar *method,
- const gchar *path, const gchar *body,
- PurpleSpasmRestCallback callback, gpointer data)
+spasm_rest_request(PurpleSpasmAccount *sa, const gchar *method, + const gchar *path, const gchar *body, + PurpleSpasmRestCallback callback, gpointer data) PurpleSpasmRestCallbackData *cb;
@@ -141,7 +139,7 @@
- url = g_build_filename(PURPLE_SPASM_BASE_URL, path, NULL);
+ url = g_build_filename(SPASM_BASE_URL, path, NULL); msg = soup_message_new(method, url);
@@ -149,18 +147,18 @@
soup_message_headers_replace(
- PURPLE_SPASM_OAUTH2_CLIENT_ID
soup_message_headers_replace(
- PURPLE_SPASM_CONTENT_TYPE
// Set the authorization header to the access token
- auth = g_strdup_printf("OAuth %s", purple_spasm_account_get_access_token(sa));
+ auth = g_strdup_printf("OAuth %s", spasm_account_get_access_token(sa)); soup_message_headers_replace(
@@ -172,12 +170,12 @@
- session = purple_spasm_account_get_session(sa);
+ session = spasm_account_get_session(sa); - purple_spasm_account_get_cancellable(sa),
- _purple_spasm_request_cb,
+ spasm_account_get_cancellable(sa), g_object_unref(G_OBJECT(session));
--- a/spasm-rest.h Mon Sep 30 22:55:04 2019 -0500
+++ b/spasm-rest.h Mon Sep 30 23:51:10 2019 -0500
@@ -1,6 +1,6 @@
* PurpleSpasm - A Twitch Protocol Plugin
- * Copyright (C) 2017 Gary Kramlich <grim@reaperworld.com>
+ * Copyright (C) 2017-2019 Gary Kramlich <grim@reaperworld.com> * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -17,8 +17,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#ifndef PURPLE_SPASM_REST_H
-#define PURPLE_SPASM_REST_H
@@ -30,8 +30,8 @@
typedef void (*PurpleSpasmRestCallback)(PurpleSpasmAccount *sa, JsonParser *parser, GError *error, gpointer data);
-void purple_spasm_rest_request(PurpleSpasmAccount *sa, const gchar *method, const gchar *path, const gchar *body, PurpleSpasmRestCallback callback, gpointer data);
+void spasm_rest_request(PurpleSpasmAccount *sa, const gchar *method, const gchar *path, const gchar *body, PurpleSpasmRestCallback callback, gpointer data); -#endif /* PURPLE_SPASM_USER_H */
+#endif /* SPASM_USER_H */ --- a/spasm.c Mon Sep 30 22:55:04 2019 -0500
+++ b/spasm.c Mon Sep 30 23:51:10 2019 -0500
@@ -1,6 +1,6 @@
* PurpleSpasm - A Twitch Protocol Plugin
- * Copyright (C) 2017 Gary Kramlich <grim@reaperworld.com>
+ * Copyright (C) 2017-2019 Gary Kramlich <grim@reaperworld.com> * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -19,8 +19,6 @@
#include "spasm-account.h"
@@ -71,7 +69,7 @@
const gchar * const authors [] = { "Gary Kramlich <grim@reaperworld.com>", NULL };
return GPLUGIN_PLUGIN_INFO(purple_plugin_info_new(
- "id", PURPLE_SPASM_PLUGIN_ID,
"version", PLUGIN_VERSION,
"abi-version", PURPLE_ABI_VERSION,
--- a/spasm.h Mon Sep 30 22:55:04 2019 -0500
+++ b/spasm.h Mon Sep 30 23:51:10 2019 -0500
@@ -1,6 +1,6 @@
* PurpleSpasm - A Twitch Protocol Plugin
- * Copyright (C) 2017 Gary Kramlich <grim@reaperworld.com>
+ * Copyright (C) 2017-2019 Gary Kramlich <grim@reaperworld.com> * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -17,11 +17,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#define PURPLE_SPASM_DOMAIN (g_quark_from_static_string("purple-spasm"))
+#define SPASM_DOMAIN (g_quark_from_static_string("purple-spasm")) -#endif /* PURPLE_SPASM_H */
\ No newline at end of file