Commit eac46d6d authored by Debarshi Ray's avatar Debarshi Ray

Remove Twitter support

It does not work. There are currently no known applications that use
it, and we need to get the terms and conditions reviewed by the SFLC
anyway.

We have been removing it from past stable releases, and it is time to
remove it from master too. Will be restored once the situation changes.

See: https://bugzilla.gnome.org/660273
     https://bugzilla.gnome.org/721061
parent 2644c70b
...@@ -232,30 +232,6 @@ if test "$enable_owncloud" != "no"; then ...@@ -232,30 +232,6 @@ if test "$enable_owncloud" != "no"; then
AC_DEFINE(GOA_OWNCLOUD_ENABLED, 1, [Enable ownCloud data provider]) AC_DEFINE(GOA_OWNCLOUD_ENABLED, 1, [Enable ownCloud data provider])
fi fi
# Twitter
AC_ARG_ENABLE([twitter], [AS_HELP_STRING([--enable-twitter], [Enable Twitter provider])], [], [enable_twitter=no])
AC_ARG_WITH(twitter-consumer-key,
[AS_HELP_STRING([--with-twitter-consumer-key],
[Twitter OAuth 1.0 consumer key])],
[],
[])
AC_ARG_WITH(twitter-consumer-secret,
[AS_HELP_STRING([--with-twitter-consumer-secret],
[Twitter OAuth 1.0 consumer secret])],
[],
[])
if test "$with_twitter_consumer_key" = ""; then
with_twitter_consumer_key=not_set
fi
if test "$with_twitter_consumer_secret" = ""; then
with_twitter_consumer_secret=not_set
fi
AC_DEFINE_UNQUOTED(GOA_TWITTER_CONSUMER_KEY, ["$with_twitter_consumer_key"], [Twitter OAuth 1.0 consumer key])
AC_DEFINE_UNQUOTED(GOA_TWITTER_CONSUMER_SECRET, ["$with_twitter_consumer_secret"], [Twitter OAuth 1.0 consumer secret])
if test "$enable_twitter" != "no"; then
AC_DEFINE(GOA_TWITTER_ENABLED, 1, [Enable Twitter data provider])
fi
# Yahoo # Yahoo
AC_ARG_ENABLE([yahoo], [AS_HELP_STRING([--enable-yahoo], [Enable Yahoo provider])], [], [enable_yahoo=no]) AC_ARG_ENABLE([yahoo], [AS_HELP_STRING([--enable-yahoo], [Enable Yahoo provider])], [], [enable_yahoo=no])
AC_ARG_WITH(yahoo-consumer-key, AC_ARG_WITH(yahoo-consumer-key,
...@@ -537,7 +513,6 @@ echo " ...@@ -537,7 +513,6 @@ echo "
Microsoft Exchange provider: ${enable_exchange} Microsoft Exchange provider: ${enable_exchange}
ownCloud provider: ${enable_owncloud} ownCloud provider: ${enable_owncloud}
Kerberos provider: ${enable_kerberos} Kerberos provider: ${enable_kerberos}
Twitter provider: ${enable_twitter} (OAuth 1.0, key:${with_twitter_consumer_key} secret:${with_twitter_consumer_secret})
Yahoo provider: ${enable_yahoo} (OAuth 1.0, key:${with_yahoo_consumer_key} secret:${with_yahoo_consumer_secret}) Yahoo provider: ${enable_yahoo} (OAuth 1.0, key:${with_yahoo_consumer_key} secret:${with_yahoo_consumer_secret})
Facebook provider: ${enable_facebook} (OAuth 2.0, id:${with_facebook_client_id}) Facebook provider: ${enable_facebook} (OAuth 2.0, id:${with_facebook_client_id})
Windows Live provider: ${enable_windows_live} (OAuth 2.0, id:${with_windows_live_client_id}) Windows Live provider: ${enable_windows_live} (OAuth 2.0, id:${with_windows_live_client_id})
......
...@@ -8,7 +8,6 @@ icon_DATA = \ ...@@ -8,7 +8,6 @@ icon_DATA = \
goa-account-google.png \ goa-account-google.png \
goa-account-owncloud.png \ goa-account-owncloud.png \
goa-account-pocket.png \ goa-account-pocket.png \
goa-account-twitter.png \
goa-account-yahoo.png \ goa-account-yahoo.png \
$(NULL) $(NULL)
......
...@@ -8,7 +8,6 @@ icon_DATA = \ ...@@ -8,7 +8,6 @@ icon_DATA = \
goa-account-google.png \ goa-account-google.png \
goa-account-owncloud.png \ goa-account-owncloud.png \
goa-account-pocket.png \ goa-account-pocket.png \
goa-account-twitter.png \
goa-account-yahoo.png \ goa-account-yahoo.png \
$(NULL) $(NULL)
......
...@@ -7,7 +7,6 @@ icon_DATA = \ ...@@ -7,7 +7,6 @@ icon_DATA = \
goa-account-google.png \ goa-account-google.png \
goa-account-owncloud.png \ goa-account-owncloud.png \
goa-account-pocket.png \ goa-account-pocket.png \
goa-account-twitter.png \
goa-account-flickr.png \ goa-account-flickr.png \
goa-account-yahoo.png \ goa-account-yahoo.png \
$(NULL) $(NULL)
......
...@@ -8,7 +8,6 @@ icon_DATA = \ ...@@ -8,7 +8,6 @@ icon_DATA = \
goa-account-google.png \ goa-account-google.png \
goa-account-owncloud.png \ goa-account-owncloud.png \
goa-account-pocket.png \ goa-account-pocket.png \
goa-account-twitter.png \
goa-account-yahoo.png \ goa-account-yahoo.png \
$(NULL) $(NULL)
......
...@@ -7,7 +7,6 @@ icon_DATA = \ ...@@ -7,7 +7,6 @@ icon_DATA = \
goa-account-google.png \ goa-account-google.png \
goa-account-owncloud.png \ goa-account-owncloud.png \
goa-account-pocket.png \ goa-account-pocket.png \
goa-account-twitter.png \
goa-account-flickr.png \ goa-account-flickr.png \
goa-account-yahoo.png \ goa-account-yahoo.png \
$(NULL) $(NULL)
......
...@@ -171,7 +171,6 @@ ...@@ -171,7 +171,6 @@
<xi:include href="xml/goawindowsliveprovider.xml"/> <xi:include href="xml/goawindowsliveprovider.xml"/>
<xi:include href="xml/goafacebookprovider.xml"/> <xi:include href="xml/goafacebookprovider.xml"/>
<xi:include href="xml/goayahooprovider.xml"/> <xi:include href="xml/goayahooprovider.xml"/>
<xi:include href="xml/goatwitterprovider.xml"/>
<xi:include href="xml/goaflickrprovider.xml"/> <xi:include href="xml/goaflickrprovider.xml"/>
<xi:include href="xml/goatelepathyfactory.xml"/> <xi:include href="xml/goatelepathyfactory.xml"/>
<xi:include href="xml/goatelepathyprovider.xml"/> <xi:include href="xml/goatelepathyprovider.xml"/>
......
...@@ -578,16 +578,6 @@ GOA_TYPE_YAHOO_PROVIDER ...@@ -578,16 +578,6 @@ GOA_TYPE_YAHOO_PROVIDER
goa_yahoo_provider_get_type goa_yahoo_provider_get_type
</SECTION> </SECTION>
<SECTION>
<FILE>goatwitterprovider</FILE>
GoaTwitterProvider
<SUBSECTION Standard>
GOA_TWITTER_PROVIDER
GOA_IS_TWITTER_PROVIDER
GOA_TYPE_TWITTER_PROVIDER
goa_twitter_provider_get_type
</SECTION>
<SECTION> <SECTION>
<FILE>goaflickrprovider</FILE> <FILE>goaflickrprovider</FILE>
GoaFlickrProvider GoaFlickrProvider
......
...@@ -33,6 +33,5 @@ goa_oauth2_provider_get_type ...@@ -33,6 +33,5 @@ goa_oauth2_provider_get_type
goa_google_provider_get_type goa_google_provider_get_type
goa_facebook_provider_get_type goa_facebook_provider_get_type
goa_yahoo_provider_get_type goa_yahoo_provider_get_type
goa_twitter_provider_get_type
goa_flickr_provider_get_type goa_flickr_provider_get_type
goa_windows_live_provider_get_type goa_windows_live_provider_get_type
...@@ -18,7 +18,6 @@ src/goabackend/goapocketprovider.c ...@@ -18,7 +18,6 @@ src/goabackend/goapocketprovider.c
src/goabackend/goaprovider.c src/goabackend/goaprovider.c
src/goabackend/goasmtpauth.c src/goabackend/goasmtpauth.c
src/goabackend/goatelepathyprovider.c src/goabackend/goatelepathyprovider.c
src/goabackend/goatwitterprovider.c
src/goabackend/goautils.c src/goabackend/goautils.c
src/goabackend/goawebview.c src/goabackend/goawebview.c
src/goabackend/goawindowsliveprovider.c src/goabackend/goawindowsliveprovider.c
......
...@@ -15,7 +15,7 @@ INCLUDES = \ ...@@ -15,7 +15,7 @@ INCLUDES = \
$(WARN_CFLAGS) \ $(WARN_CFLAGS) \
$(NULL) $(NULL)
noinst_PROGRAMS = list-providers list-accounts tweet add-pocket noinst_PROGRAMS = list-providers list-accounts add-pocket
list_providers_SOURCES = list-providers.c list_providers_SOURCES = list-providers.c
list_providers_CFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) list_providers_CFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS)
...@@ -25,10 +25,6 @@ list_accounts_SOURCES = list-accounts.c ...@@ -25,10 +25,6 @@ list_accounts_SOURCES = list-accounts.c
list_accounts_CFLAGS = $(GLIB_CFLAGS) list_accounts_CFLAGS = $(GLIB_CFLAGS)
list_accounts_LDADD = $(GLIB_LIBS) ../goa/libgoa-1.0.la list_accounts_LDADD = $(GLIB_LIBS) ../goa/libgoa-1.0.la
tweet_SOURCES = tweet.c
tweet_CFLAGS = $(GLIB_CFLAGS) $(REST_CFLAGS)
tweet_LDADD = $(GLIB_LIBS) $(REST_LIBS) ../goa/libgoa-1.0.la
add_pocket_SOURCES = add-pocket.c add_pocket_SOURCES = add-pocket.c
add_pocket_CFLAGS = $(GLIB_CFLAGS) $(REST_CFLAGS) add_pocket_CFLAGS = $(GLIB_CFLAGS) $(REST_CFLAGS)
add_pocket_LDADD = $(GLIB_LIBS) $(REST_LIBS) ../goa/libgoa-1.0.la add_pocket_LDADD = $(GLIB_LIBS) $(REST_LIBS) ../goa/libgoa-1.0.la
......
/*
* Copyright (C) 2012 Intel Corp
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
*
* Author: Ross Burton <ross.burton@intel.com>
*/
#include <config.h>
#define GOA_API_IS_SUBJECT_TO_CHANGE
#include <goa/goa.h>
#include <rest/oauth-proxy.h>
int
main (int argc, char **argv)
{
GError *error = NULL;
GoaClient *client;
GList *accounts, *l;
GoaAccount *account = NULL;
GoaOAuthBased *oauth = NULL;
char *access_token = NULL, *access_token_secret = NULL;
RestProxy *proxy;
RestProxyCall *call;
client = goa_client_new_sync (NULL, &error);
if (!client) {
g_error ("Could not create GoaClient: %s", error->message);
return 1;
}
accounts = goa_client_get_accounts (client);
/* Find a twitter account */
for (l = accounts; l != NULL; l = l->next) {
GoaObject *object = GOA_OBJECT (l->data);
account = goa_object_peek_account (object);
if (g_strcmp0 (goa_account_get_provider_type (account),
"twitter") == 0) {
g_object_ref (account);
oauth = goa_object_get_oauth_based (object);
break;
}
}
g_list_free_full (accounts, (GDestroyNotify) g_object_unref);
g_assert (account);
g_assert (oauth);
if (!goa_account_call_ensure_credentials_sync (account, NULL, NULL, &error)) {
g_error ("Could not ensure credentials are valid: %s", error->message);
return 1;
}
g_print ("Credentials valid\n");
if (!goa_oauth_based_call_get_access_token_sync (oauth, &access_token, &access_token_secret, NULL, NULL, &error)) {
g_error ("Could not get access token: %s", error->message);
return 1;
}
g_print ("Got access tokens\n");
proxy = oauth_proxy_new_with_token
(goa_oauth_based_get_consumer_key (oauth),
goa_oauth_based_get_consumer_secret (oauth),
access_token, access_token_secret,
"https://api.twitter.com/", FALSE);
call = rest_proxy_new_call (proxy);
rest_proxy_call_set_method (call, "POST");
rest_proxy_call_set_function (call, "1/statuses/update.xml");
rest_proxy_call_add_param (call, "status", "Hello from GOA+rest");
g_print ("Tweeting...\n");
if (!rest_proxy_call_sync (call, &error)) {
g_error ("Cannot tweet: %s", error->message);
return 1;
}
g_print ("Tweeted!\n");
return 0;
}
...@@ -73,7 +73,6 @@ libgoa_backend_1_0_la_SOURCES = \ ...@@ -73,7 +73,6 @@ libgoa_backend_1_0_la_SOURCES = \
goaimapsmtpprovider.h goaimapsmtpprovider.c \ goaimapsmtpprovider.h goaimapsmtpprovider.c \
goaowncloudprovider.h goaowncloudprovider.c \ goaowncloudprovider.h goaowncloudprovider.c \
goayahooprovider.h goayahooprovider.c \ goayahooprovider.h goayahooprovider.c \
goatwitterprovider.h goatwitterprovider.c \
goaflickrprovider.h goaflickrprovider.c \ goaflickrprovider.h goaflickrprovider.c \
goawindowsliveprovider.h goawindowsliveprovider.c \ goawindowsliveprovider.h goawindowsliveprovider.c \
goatelepathyfactory.h goatelepathyfactory.c \ goatelepathyfactory.h goatelepathyfactory.c \
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include "goaimapsmtpprovider.h" #include "goaimapsmtpprovider.h"
#include "goaowncloudprovider.h" #include "goaowncloudprovider.h"
#include "goayahooprovider.h" #include "goayahooprovider.h"
#include "goatwitterprovider.h"
#include "goaflickrprovider.h" #include "goaflickrprovider.h"
#include "goawindowsliveprovider.h" #include "goawindowsliveprovider.h"
#include "goatelepathyfactory.h" #include "goatelepathyfactory.h"
...@@ -800,9 +799,6 @@ ensure_builtins_loaded (void) ...@@ -800,9 +799,6 @@ ensure_builtins_loaded (void)
#ifdef GOA_YAHOO_ENABLED #ifdef GOA_YAHOO_ENABLED
type = GOA_TYPE_YAHOO_PROVIDER; type = GOA_TYPE_YAHOO_PROVIDER;
#endif #endif
#ifdef GOA_TWITTER_ENABLED
type = GOA_TYPE_TWITTER_PROVIDER;
#endif
#ifdef GOA_TELEPATHY_ENABLED #ifdef GOA_TELEPATHY_ENABLED
type = GOA_TYPE_TELEPATHY_FACTORY; type = GOA_TYPE_TELEPATHY_FACTORY;
#endif #endif
......
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2011, 2012, 2013 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#include "config.h"
#include <glib/gi18n-lib.h>
#include <rest/oauth-proxy.h>
#include <json-glib/json-glib.h>
#include "goaprovider.h"
#include "goaprovider-priv.h"
#include "goaoauthprovider.h"
#include "goatwitterprovider.h"
/**
* GoaTwitterProvider:
*
* The #GoaTwitterProvider structure contains only private data and should
* only be accessed using the provided API.
*/
struct _GoaTwitterProvider
{
/*< private >*/
GoaOAuthProvider parent_instance;
};
typedef struct _GoaTwitterProviderClass GoaTwitterProviderClass;
struct _GoaTwitterProviderClass
{
GoaOAuthProviderClass parent_class;
};
/**
* SECTION:goatwitterprovider
* @title: GoaTwitterProvider
* @short_description: A provider for Twitter
*
* #GoaTwitterProvider is used for handling Twitter accounts.
*/
G_DEFINE_TYPE_WITH_CODE (GoaTwitterProvider, goa_twitter_provider, GOA_TYPE_OAUTH_PROVIDER,
goa_provider_ensure_extension_points_registered ();
g_io_extension_point_implement (GOA_PROVIDER_EXTENSION_POINT_NAME,
g_define_type_id,
"twitter",
0));
/* ---------------------------------------------------------------------------------------------------- */
static const gchar *
get_provider_type (GoaProvider *_provider)
{
return "twitter";
}
static gchar *
get_provider_name (GoaProvider *_provider,
GoaObject *object)
{
return g_strdup (_("Twitter"));
}
static const gchar *
get_consumer_key (GoaOAuthProvider *provider)
{
return GOA_TWITTER_CONSUMER_KEY;
}
static const gchar *
get_consumer_secret (GoaOAuthProvider *provider)
{
return GOA_TWITTER_CONSUMER_SECRET;
}
static const gchar *
get_request_uri (GoaOAuthProvider *provider)
{
return "https://api.twitter.com/oauth/request_token";
}
static const gchar *
get_authorization_uri (GoaOAuthProvider *provider)
{
return "https://api.twitter.com/oauth/authorize";
}
static const gchar *
get_token_uri (GoaOAuthProvider *provider)
{
return "https://api.twitter.com/oauth/access_token";
}
static const gchar *
get_callback_uri (GoaOAuthProvider *provider)
{
return "https://www.gnome.org/goa-1.0/oauth";
}
/* ---------------------------------------------------------------------------------------------------- */
static gchar *
get_identity_sync (GoaOAuthProvider *provider,
const gchar *access_token,
const gchar *access_token_secret,
gchar **out_presentation_identity,
GCancellable *cancellable,
GError **error)
{
GError *identity_error;
RestProxy *proxy;
RestProxyCall *call;
JsonParser *parser;
JsonObject *json_object;
gchar *ret;
gchar *id;
gchar *presentation_identity;
ret = NULL;
identity_error = NULL;
proxy = NULL;
call = NULL;
parser = NULL;
id = NULL;
presentation_identity = NULL;
/* TODO: cancellable */
proxy = oauth_proxy_new_with_token (goa_oauth_provider_get_consumer_key (provider),
goa_oauth_provider_get_consumer_secret (provider),
access_token,
access_token_secret,
"https://api.twitter.com/1/account/verify_credentials.json",
FALSE);
call = rest_proxy_new_call (proxy);
rest_proxy_call_add_param (call, "skip_status", "true");
if (!rest_proxy_call_sync (call, error))
goto out;
if (rest_proxy_call_get_status_code (call) != 200)
{
g_set_error (error,
GOA_ERROR,
GOA_ERROR_FAILED,
_("Expected status 200 when requesting your identity, instead got status %d (%s)"),
rest_proxy_call_get_status_code (call),
rest_proxy_call_get_status_message (call));
goto out;
}
parser = json_parser_new ();
if (!json_parser_load_from_data (parser,
rest_proxy_call_get_payload (call),
rest_proxy_call_get_payload_length (call),
&identity_error))
{
g_warning ("json_parser_load_from_data() failed: %s (%s, %d)",
identity_error->message,
g_quark_to_string (identity_error->domain),
identity_error->code);
g_set_error (error,
GOA_ERROR,
GOA_ERROR_FAILED,
_("Could not parse response"));
goto out;
}
json_object = json_node_get_object (json_parser_get_root (parser));
id = g_strdup (json_object_get_string_member (json_object, "id_str"));
if (id == NULL)
{
g_warning ("Did not find id_str in JSON data");
g_set_error (error,
GOA_ERROR,
GOA_ERROR_FAILED,
_("Could not parse response"));
goto out;
}
presentation_identity = g_strdup (json_object_get_string_member (json_object, "screen_name"));
if (presentation_identity == NULL)
{
g_warning ("Did not find screen_name in JSON data");
g_set_error (error,
GOA_ERROR,
GOA_ERROR_FAILED,
_("Could not parse response"));
goto out;
}
ret = id;
id = NULL;
if (out_presentation_identity != NULL)
{
*out_presentation_identity = presentation_identity;
presentation_identity = NULL;
}
out:
g_clear_error (&identity_error);
g_free (id);
g_free (presentation_identity);
if (call != NULL)
g_object_unref (call);
if (proxy != NULL)
g_object_unref (proxy);
return ret;
}
/* ---------------------------------------------------------------------------------------------------- */
static gboolean
build_object (GoaProvider *provider,
GoaObjectSkeleton *object,
GKeyFile *key_file,
const gchar *group,
GDBusConnection *connection,
gboolean just_added,
GError **error)
{
gboolean ret;
ret = FALSE;
/* Chain up */
if (!GOA_PROVIDER_CLASS (goa_twitter_provider_parent_class)->build_object (provider,
object,
key_file,
group,
connection,
just_added,
error))
goto out;
ret = TRUE;
out:
return ret;
}
/* ---------------------------------------------------------------------------------------------------- */
static gboolean
get_use_external_browser (GoaOAuthProvider *provider)
{
/* For some reason this only works in a browser - bad callback URL? TODO: investigate */
return TRUE;
}
/* ---------------------------------------------------------------------------------------------------- */
static void
show_account (GoaProvider *provider,
GoaClient *client,
GoaObject *object,
GtkBox *vbox,
GtkGrid *grid,
G_GNUC_UNUSED GtkGrid *dummy)
{
gint row;
row = 0;
goa_util_add_account_info (grid, row++, object);
}
/* ---------------------------------------------------------------------------------------------------- */
static void
goa_twitter_provider_init (GoaTwitterProvider *client)
{
}
static void
goa_twitter_provider_class_init (GoaTwitterProviderClass *klass)
{
GoaProviderClass *provider_class;
GoaOAuthProviderClass *oauth_class;
provider_class = GOA_PROVIDER_CLASS (klass);
provider_class->get_provider_type = get_provider_type;
provider_class->get_provider_name = get_provider_name;
provider_class->build_object = build_object;
provider_class->show_account = show_account;
oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass);
oauth_class->get_identity_sync = get_identity_sync;
oauth_class->get_consumer_key = get_consumer_key;
oauth_class->get_consumer_secret = get_consumer_secret;
oauth_class->get_request_uri = get_request_uri;
oauth_class->get_authorization_uri = get_authorization_uri;
oauth_class->get_token_uri = get_token_uri;
oauth_class->get_callback_uri = get_callback_uri;
oauth_class->get_use_external_browser = get_use_external_browser;
}
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
* Copyright (C) 2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
*
* Author: David Zeuthen <davidz@redhat.com>
*/
#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION)
#error "Only <goabackend/goabackend.h> can be included directly."
#endif
#ifndef __GOA_TWITTER_PROVIDER_H__
#define __GOA_TWITTER_PROVIDER_H__
#include <glib-object.h>
G_BEGIN_DECLS
#define GOA_TYPE_TWITTER_PROVIDER (goa_twitter_provider_get_type ())
#define GOA_TWITTER_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOA_TYPE_TWITTER_PROVIDER, GoaTwitterProvider))
#define GOA_IS_TWITTER_PROVIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOA_TYPE_TWITTER_PROVIDER))
typedef struct _GoaTwitterProvider GoaTwitterProvider;
GType goa_twitter_provider_get_type (void) G_GNUC_CONST;
G_END_DECLS
#endif /* __GOA_TWITTER_PROVIDER_H__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment