summaryrefslogtreecommitdiff
path: root/libsoup/soup-proxy-resolver.c
diff options
context:
space:
mode:
Diffstat (limited to 'libsoup/soup-proxy-resolver.c')
-rw-r--r--libsoup/soup-proxy-resolver.c132
1 files changed, 12 insertions, 120 deletions
diff --git a/libsoup/soup-proxy-resolver.c b/libsoup/soup-proxy-resolver.c
index 8092175f..a84c27ab 100644
--- a/libsoup/soup-proxy-resolver.c
+++ b/libsoup/soup-proxy-resolver.c
@@ -13,46 +13,14 @@
#include "soup.h"
static void soup_proxy_resolver_default_init (SoupProxyResolverInterface *iface);
-static void soup_proxy_resolver_uri_resolver_interface_init (SoupProxyURIResolverInterface *uri_resolver_interface);
G_DEFINE_INTERFACE_WITH_CODE (SoupProxyResolver, soup_proxy_resolver, G_TYPE_OBJECT,
g_type_interface_add_prerequisite (g_define_type_id, SOUP_TYPE_SESSION_FEATURE);
)
static void
-proxy_resolver_interface_check (gpointer func_data, gpointer g_iface)
-{
- GTypeInterface *iface = g_iface;
-
- if (iface->g_type != SOUP_TYPE_PROXY_RESOLVER)
- return;
-
- /* If the class hasn't already declared that it implements
- * SoupProxyURIResolver, add our own compat implementation.
- */
- if (!g_type_is_a (iface->g_instance_type, SOUP_TYPE_PROXY_URI_RESOLVER)) {
- const GInterfaceInfo uri_resolver_interface_info = {
- (GInterfaceInitFunc) soup_proxy_resolver_uri_resolver_interface_init, NULL, NULL
- };
- g_type_add_interface_static (iface->g_instance_type,
- SOUP_TYPE_PROXY_URI_RESOLVER,
- &uri_resolver_interface_info);
- }
-}
-
-
-static void
soup_proxy_resolver_default_init (SoupProxyResolverInterface *iface)
{
- /* Add an interface_check where we can kludgily add the
- * SoupProxyURIResolver interface to all SoupProxyResolvers.
- * (SoupProxyResolver can't just implement
- * SoupProxyURIResolver itself because interface types can't
- * implement other interfaces.) This is an ugly hack, but it
- * only gets used if someone actually creates a
- * SoupProxyResolver...
- */
- g_type_add_interface_check (NULL, proxy_resolver_interface_check);
}
void
@@ -63,10 +31,16 @@ soup_proxy_resolver_get_proxy_async (SoupProxyResolver *proxy_resolver,
SoupProxyResolverCallback callback,
gpointer user_data)
{
+#ifdef G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+#endif
SOUP_PROXY_RESOLVER_GET_CLASS (proxy_resolver)->
get_proxy_async (proxy_resolver, msg,
async_context, cancellable,
callback, user_data);
+#ifdef G_GNUC_END_IGNORE_DEPRECATIONS
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
}
guint
@@ -75,94 +49,12 @@ soup_proxy_resolver_get_proxy_sync (SoupProxyResolver *proxy_resolver,
GCancellable *cancellable,
SoupAddress **addr)
{
+#ifdef G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+#endif
return SOUP_PROXY_RESOLVER_GET_CLASS (proxy_resolver)->
get_proxy_sync (proxy_resolver, msg, cancellable, addr);
-}
-
-/* SoupProxyURIResolver implementation */
-
-static SoupURI *
-uri_from_address (SoupAddress *addr)
-{
- SoupURI *proxy_uri;
-
- proxy_uri = soup_uri_new (NULL);
- soup_uri_set_scheme (proxy_uri, SOUP_URI_SCHEME_HTTP);
- soup_uri_set_host (proxy_uri, soup_address_get_name (addr));
- soup_uri_set_port (proxy_uri, soup_address_get_port (addr));
- soup_uri_set_path (proxy_uri, "");
- return proxy_uri;
-}
-
-typedef struct {
- SoupProxyURIResolverCallback callback;
- gpointer user_data;
-} ProxyURIResolverAsyncData;
-
-static void
-compat_got_proxy (SoupProxyResolver *proxy_resolver,
- SoupMessage *msg, guint status, SoupAddress *proxy_addr,
- gpointer user_data)
-{
- ProxyURIResolverAsyncData *purad = user_data;
- SoupURI *proxy_uri;
-
- proxy_uri = proxy_addr ? uri_from_address (proxy_addr) : NULL;
- purad->callback (SOUP_PROXY_URI_RESOLVER (proxy_resolver),
- status, proxy_uri, purad->user_data);
- g_object_unref (msg);
- if (proxy_uri)
- soup_uri_free (proxy_uri);
- g_slice_free (ProxyURIResolverAsyncData, purad);
-}
-
-static void
-compat_get_proxy_uri_async (SoupProxyURIResolver *proxy_uri_resolver,
- SoupURI *uri, GMainContext *async_context,
- GCancellable *cancellable,
- SoupProxyURIResolverCallback callback,
- gpointer user_data)
-{
- SoupMessage *dummy_msg;
- ProxyURIResolverAsyncData *purad;
-
- dummy_msg = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
-
- purad = g_slice_new (ProxyURIResolverAsyncData);
- purad->callback = callback;
- purad->user_data = user_data;
-
- soup_proxy_resolver_get_proxy_async (
- SOUP_PROXY_RESOLVER (proxy_uri_resolver), dummy_msg,
- async_context, cancellable,
- compat_got_proxy, purad);
-}
-
-static guint
-compat_get_proxy_uri_sync (SoupProxyURIResolver *proxy_uri_resolver,
- SoupURI *uri, GCancellable *cancellable,
- SoupURI **proxy_uri)
-{
- SoupMessage *dummy_msg;
- SoupAddress *proxy_addr = NULL;
- guint status;
-
- dummy_msg = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
- status = soup_proxy_resolver_get_proxy_sync (
- SOUP_PROXY_RESOLVER (proxy_uri_resolver), dummy_msg,
- cancellable, &proxy_addr);
- g_object_unref (dummy_msg);
- if (!proxy_addr)
- return status;
-
- *proxy_uri = uri_from_address (proxy_addr);
- g_object_unref (proxy_addr);
- return status;
-}
-
-static void
-soup_proxy_resolver_uri_resolver_interface_init (SoupProxyURIResolverInterface *uri_resolver_interface)
-{
- uri_resolver_interface->get_proxy_uri_async = compat_get_proxy_uri_async;
- uri_resolver_interface->get_proxy_uri_sync = compat_get_proxy_uri_sync;
+#ifdef G_GNUC_END_IGNORE_DEPRECATIONS
+G_GNUC_END_IGNORE_DEPRECATIONS
+#endif
}