/* purple
*
* Purple is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#ifndef PURPLE_FACEBOOK_HTTP_H
#define PURPLE_FACEBOOK_HTTP_H
/**
* SECTION:http
* @section_id: facebook-http
* @short_description: http.h
* @title: HTTP Utilities
*
* The HTTP utilities.
*/
#include
#include
/**
* FB_HTTP_ERROR:
*
* The #GQuark of the domain of HTTP errors.
*/
#define FB_HTTP_ERROR fb_http_error_quark()
/**
* FbHttpConns:
*
* Represents a set of #PurpleHttpConnection.
*/
typedef struct _FbHttpConns FbHttpConns;
/**
* FbHttpParams:
*
* Represents a set of key/value HTTP parameters.
*/
typedef GHashTable FbHttpParams;
/**
* FbHttpError:
* @FB_HTTP_ERROR_SUCCESS: There is no error.
* @FB_HTTP_ERROR_NOMATCH: The name does not match anything.
*
* The error codes for the #FB_HTTP_ERROR domain.
*/
typedef enum
{
FB_HTTP_ERROR_SUCCESS = 0,
FB_HTTP_ERROR_NOMATCH
} FbHttpError;
/**
* fb_http_error_quark:
*
* Gets the #GQuark of the domain of HTTP errors.
*
* Returns: The #GQuark of the domain.
*/
GQuark
fb_http_error_quark(void);
/**
* fb_http_conns_new:
*
* Creates a new #FbHttpConns. The returned #FbHttpConns should be
* freed with #fb_http_conns_free() when no longer needed.
*
* Returns: The new #FbHttpConns.
*/
FbHttpConns *
fb_http_conns_new(void);
/**
* fb_http_conns_free:
* @cons: The #FbHttpConns.
*
* Frees all memory used by the #FbHttpConns. This will *not* cancel
* the any of the added #PurpleHttpConnection.
*/
void
fb_http_conns_free(FbHttpConns *cons);
/**
* fb_http_conns_cancel_all:
* @cons: The #FbHttpConns.
*
* Cancels each #PurpleHttpConnection in the #FbHttpConns.
*/
void
fb_http_conns_cancel_all(FbHttpConns *cons);
/**
* fb_http_conns_is_canceled:
* @cons: The #FbHttpConns.
*
* Determines if the #FbHttpConns has been canceled.
*
* Returns: #TRUE if it has been canceled, otherwise #FALSE.
*/
gboolean
fb_http_conns_is_canceled(FbHttpConns *cons);
/**
* fb_http_conns_add:
* @cons: The #FbHttpConns.
* @con: The #PurpleHttpConnection.
*
* Adds a #PurpleHttpConnection to the #FbHttpConns.
*/
void
fb_http_conns_add(FbHttpConns *cons, PurpleHttpConnection *con);
/**
* fb_http_conns_remove:
* @cons: The #FbHttpConns.
* @con: The #PurpleHttpConnection.
*
* Removes a #PurpleHttpConnection from the #FbHttpConns.
*/
void
fb_http_conns_remove(FbHttpConns *cons, PurpleHttpConnection *con);
/**
* fb_http_conns_reset:
* @cons: The #FbHttpConns.
*
* Resets the #FbHttpConns. This removes each #PurpleHttpConnection
* from the #FbHttpConns *without* canceling it. This allows the the
* #FbHttpConns to be reused.
*/
void
fb_http_conns_reset(FbHttpConns *cons);
/**
* fb_http_error_chk:
* @res: The #PurpleHttpResponse.
* @error: The return location for the #GError or #NULL.
*
* Checks a #PurpleHttpResponse for success. This optionally assigns an
* appropriate #GError upon failure.
*
* Returns: #TRUE if the request was successful, otherwise #FALSE.
*/
gboolean
fb_http_error_chk(PurpleHttpResponse *res, GError **error);
/**
* fb_http_params_new:
*
* Creates a new #FbHttpParams. The returned #FbHttpParams should be
* freed with #fb_http_params_free() when no longer needed. Optionally,
* instead of freeing, the returned #FbHttpParams can be closed with
* #fb_http_params_close().
*
* Returns: The new #FbHttpParams.
*/
FbHttpParams *
fb_http_params_new(void);
/**
* fb_http_params_new_parse:
* @data: The string containing HTTP parameters.
* @isurl: #TRUE if @data is a URL, otherwise #FALSE.
*
* Creates a new #FbHttpParams. This parses the #FbHttpParams from a
* string, which can be a URL. The returned #FbHttpParams should be
* freed with #fb_http_params_free() when no longer needed. Optionally,
* instead of freeing, the returned #FbHttpParams can be closed with
* #fb_http_params_close().
*
* Returns: The new #FbHttpParams.
*/
FbHttpParams *
fb_http_params_new_parse(const gchar *data, gboolean isurl);
/**
* fb_http_params_free:
* @params: The #FbHttpParams.
*
* Frees all memory used by the #FbHttpParams.
*/
void
fb_http_params_free(FbHttpParams *params);
/**
* fb_http_params_close:
* @params: The #FbHttpParams.
* @url: The URL or #NULL.
*
* Closes the #FbHttpParams by returning a string representing the HTTP
* parameters. If @url is non-#NULL, then the parameters are appended
* to the value of @url. This frees the #FbHttpParams. The returned
* string should be freed with #g_free() when no longer needed.
*
* Returns: The string representation of the HTTP parameters.
*/
gchar *
fb_http_params_close(FbHttpParams *params, const gchar *url);
/**
* fb_http_params_get_bool:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @error: The return location for the #GError or #NULL.
*
* Gets a boolean value from the #FbHttpParams. This optionally assigns
* an appropriate #GError upon failure.
*
* Return: The boolean value.
*/
gboolean
fb_http_params_get_bool(FbHttpParams *params, const gchar *name,
GError **error);
/**
* fb_http_params_get_dbl:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @error: The return location for the #GError or #NULL.
*
* Gets a floating point value from the #FbHttpParams. This optionally
* assigns an appropriate #GError upon failure.
*
* Return: The floating point value.
*/
gdouble
fb_http_params_get_dbl(FbHttpParams *params, const gchar *name,
GError **error);
/**
* fb_http_params_get_int:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @error: The return location for the #GError or #NULL.
*
* Gets an integer value from the #FbHttpParams. This optionally
* assigns an appropriate #GError upon failure.
*
* Return: The integer value.
*/
gint64
fb_http_params_get_int(FbHttpParams *params, const gchar *name,
GError **error);
/**
* fb_http_params_get_str:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @error: The return location for the #GError or #NULL.
*
* Gets a string value from the #FbHttpParams. This optionally assigns
* an appropriate #GError upon failure.
*
* Return: The string value.
*/
const gchar *
fb_http_params_get_str(FbHttpParams *params, const gchar *name,
GError **error);
/**
* fb_http_params_dup_str:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @error: The return location for the #GError or #NULL.
*
* Gets a duplicated string value from the #FbHttpParams. This
* optionally assigns an appropriate #GError upon failure. The returned
* string should be freed with #g_free() when no longer needed.
*
* Return: The duplicated string value.
*/
gchar *
fb_http_params_dup_str(FbHttpParams *params, const gchar *name,
GError **error);
/**
* fb_http_params_set_bool:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @value: The value.
*
* Sets a boolean value to the #FbHttpParams.
*/
void
fb_http_params_set_bool(FbHttpParams *params, const gchar *name,
gboolean value);
/**
* fb_http_params_set_dbl:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @value: The value.
*
* Sets a floating point value to the #FbHttpParams.
*/
void
fb_http_params_set_dbl(FbHttpParams *params, const gchar *name, gdouble value);
/**
* fb_http_params_set_int:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @value: The value.
*
* Sets an integer value to the #FbHttpParams.
*/
void
fb_http_params_set_int(FbHttpParams *params, const gchar *name, gint64 value);
/**
* fb_http_params_set_str:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @value: The value.
*
* Sets a string value to the #FbHttpParams.
*/
void
fb_http_params_set_str(FbHttpParams *params, const gchar *name,
const gchar *value);
/**
* fb_http_params_set_strf:
* @params: The #FbHttpParams.
* @name: The parameter name.
* @format: The format string literal.
* @...: The arguments for @format.
*
* Sets a formatted string value to the #FbHttpParams.
*/
void
fb_http_params_set_strf(FbHttpParams *params, const gchar *name,
const gchar *format, ...)
G_GNUC_PRINTF(3, 4);
/**
* fb_http_urlcmp:
* @url1: The first URL.
* @url2: The second URL.
* @protocol: #TRUE to match the protocols, otherwise #FALSE.
*
* Compares two URLs. This is more reliable than just comparing two URL
* strings, as it avoids casing in some areas, while not in others. It
* can also, optionally, ignore the matching of the URL protocol.
*
* Returns: #TRUE if the URLs match, otherwise #FALSE.
*/
gboolean
fb_http_urlcmp(const gchar *url1, const gchar *url2, gboolean protocol);
#endif /* PURPLE_FACEBOOK_HTTP_H */