## GProxyResolver GProxyResolver — Asynchronous and cancellable network proxy resolver |

## Functions

GProxyResolver * | g_proxy_resolver_get_default ()
gboolean | g_proxy_resolver_is_supported ()
gchar ** | g_proxy_resolver_lookup ()
void | g_proxy_resolver_lookup_async ()
gchar ** | g_proxy_resolver_lookup_finish ()

## Types and Values

| GProxyResolver
struct | GProxyResolverInterface
#define | G_PROXY_RESOLVER_EXTENSION_POINT_NAME

## Object Hierarchy

        GInterface
        ╰── GProxyResolver

## Prerequisites

GProxyResolver requires GObject.

## Known Implementations

GProxyResolver is implemented by GSimpleProxyResolver.

## Includes

    #include <gio/gio.h>

## Description

GProxyResolver provides synchronous and asynchronous network proxy resolution. GProxyResolver is used within GSocketClient through the method `g_socket_connectable_proxy_enumerate()`.

Implementations of GProxyResolver based on libproxy and GNOME settings can be found in glib-networking. GIO comes with an implementation for use inside Flatpak portals.

## Functions

### g_proxy_resolver_get_default ()

    GProxyResolver *
    g_proxy_resolver_get_default (void);

Gets the default GProxyResolver for the system.

#### Returns

the default GProxyResolver, which will be a dummy object if no proxy resolver is available.

[not nullable][transfer none]

Since: 2.26

### g_proxy_resolver_is_supported ()

    gboolean
    g_proxy_resolver_is_supported (GProxyResolver *resolver);

Checks if `resolver` can be used on this system. (This is used internally; `g_proxy_resolver_get_default()` will only return a proxy resolver that returns `TRUE` for this method.)

#### Parameters

resolver | a GProxyResolver |

#### Returns

`TRUE` if `resolver` is supported.

Since: 2.26

### g_proxy_resolver_lookup ()

    gchar **
    g_proxy_resolver_lookup (GProxyResolver *resolver,
                             const gchar *uri,
                             GCancellable *cancellable,
                             GError **error);

Looks into the system proxy configuration to determine what proxy, if any, to use to connect to `uri` . The returned proxy URIs are of the form `<protocol>://[user[:password]@]host[:port]` or `direct://`, where <protocol> could be http, rtsp, socks or other proxying protocol.

If you don't know what network protocol is being used on the socket, you should use `none` as the URI protocol. In this case, the resolver might still return a generic proxy type (such as SOCKS), but would not return protocol-specific proxy types (such as http).

`direct://` is used when no proxy is needed. Direct connection should not be attempted unless it is part of the returned array of proxies.

#### Parameters

resolver | a GProxyResolver |
uri | a URI representing the destination to connect to |
cancellable | a GCancellable, or `NULL`. | [nullable]
error | return location for a GError, or `NULL` |

#### Returns

A NULL-terminated array of proxy URIs. Must be freed with `g_strfreev()`.

[transfer full][array zero-terminated=1]

Since: 2.26

### g_proxy_resolver_lookup_async ()

    void
    g_proxy_resolver_lookup_async (GProxyResolver *resolver,
                                   const gchar *uri,
                                   GCancellable *cancellable,
                                   GAsyncReadyCallback callback,
                                   gpointer user_data);

Asynchronous lookup of proxy. See `g_proxy_resolver_lookup()` for more details.

#### Parameters

resolver | a GProxyResolver |
uri | a URI representing the destination to connect to |
cancellable | a GCancellable, or `NULL`. | [nullable]
callback | callback to call after resolution completes. | [scope async]
user_data | data for `callback` . | [closure]

Since: 2.26

### g_proxy_resolver_lookup_finish ()

    gchar **
    g_proxy_resolver_lookup_finish (GProxyResolver *resolver,
                                    GAsyncResult *result,
                                    GError **error);

Call this function to obtain the array of proxy URIs when `g_proxy_resolver_lookup_async()` is complete. See `g_proxy_resolver_lookup()` for more details.

#### Parameters

resolver | a GProxyResolver |
result | the result passed to your GAsyncReadyCallback |
error | return location for a GError, or `NULL` |

#### Returns

A NULL-terminated array of proxy URIs. Must be freed with `g_strfreev()`.

[transfer full][array zero-terminated=1]

Since: 2.26

## Types and Values

### GProxyResolver

    typedef struct _GProxyResolver GProxyResolver;

A helper class to enumerate proxies base on URI.

Since: 2.26

### struct GProxyResolverInterface

    struct GProxyResolverInterface {
      GTypeInterface g_iface;

      /* Virtual Table */
      gboolean (* is_supported)  (GProxyResolver       *resolver);

      gchar ** (* lookup)        (GProxyResolver       *resolver,
    			      const gchar          *uri,
    			      GCancellable         *cancellable,
    			      GError              **error);

      void     (* lookup_async)  (GProxyResolver       *resolver,
    			      const gchar          *uri,
    			      GCancellable         *cancellable,
    			      GAsyncReadyCallback   callback,
    			      gpointer              user_data);

      gchar ** (* lookup_finish) (GProxyResolver       *resolver,
    			      GAsyncResult         *result,
    			      GError              **error);
    };

The virtual function table for GProxyResolver.

#### Members

`is_supported` () | the virtual function pointer for `g_proxy_resolver_is_supported()` |
`lookup` () | the virtual function pointer for `g_proxy_resolver_lookup()` |
`lookup_async` () | the virtual function pointer for `g_proxy_resolver_lookup_async()` |
`lookup_finish` () | the virtual function pointer for `g_proxy_resolver_lookup_finish()` |

### G_PROXY_RESOLVER_EXTENSION_POINT_NAME

    #define G_PROXY_RESOLVER_EXTENSION_POINT_NAME "gio-proxy-resolver"

Extension point for proxy resolving functionality. See Extending GIO.