int main(int argc, char **argv) { int i; char url[102400]; // Should be plently long for most URLs char **proxies; /* Create the proxy factory object */ pxProxyFactory *pf = px_proxy_factory_new(); if (!pf) { fprintf(stderr, "An unknown error occurred!\n"); return 1; } /* User entered some arguments on startup. skip interactive */ if (argc > 1) { for (i=1; i < argc ; i++) { /* * Get an array of proxies to use. These should be used * in the order returned. Only move on to the next proxy * if the first one fails (etc). */ proxies = px_proxy_factory_get_proxies(pf, argv[i]); print_proxies(proxies); px_proxy_factory_free_proxies(proxies); } } /* Interactive mode */ else { /* For each URL we read on STDIN, get the proxies to use */ for (url[0] = '\0' ; fgets(url, 102400, stdin) != NULL ; ) { if (url[strlen(url)-1] == '\n') url[strlen(url)-1] = '\0'; /* * Get an array of proxies to use. These should be used * in the order returned. Only move on to the next proxy * if the first one fails (etc). */ proxies = px_proxy_factory_get_proxies(pf, url); print_proxies(proxies); px_proxy_factory_free_proxies(proxies); } } /* Destroy the proxy factory object */ px_proxy_factory_free(pf); return 0; }
static void use_resolver (gboolean synchronous) { GProxyResolver *resolver; resolver = g_proxy_resolver_get_default (); if (synchronous) { GError *error = NULL; gchar **proxies; proxies = g_proxy_resolver_lookup (resolver, info, cancellable, &error); if (error) print_and_free_error (error); else print_proxies (info, proxies); g_strfreev (proxies); } else { GMainLoop *loop = g_main_loop_new (NULL, FALSE); g_proxy_resolver_lookup_async (resolver, info, cancellable, _proxy_lookup_cb, loop); g_main_loop_run (loop); g_main_loop_unref (loop); } }
static void _proxy_lookup_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { GError *error = NULL; gchar **proxies; GMainLoop *loop = user_data; proxies = g_proxy_resolver_lookup_finish (G_PROXY_RESOLVER (source_object), result, &error); if (error) { print_and_free_error (error); } else { print_proxies (info, proxies); g_strfreev (proxies); } g_main_loop_quit (loop); }