static void get_url_now (GrlNetWc *self, const char *url, GHashTable *headers, GAsyncResult *result, GCancellable *cancellable) { GrlNetWcPrivate *priv = self->priv; struct request_res *rr = g_slice_new0 (struct request_res); g_simple_async_result_set_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result), rr, NULL); #ifdef LIBSOUP_REQUESTER_DEPRECATED SoupURI *uri = soup_uri_new (url); rr->request = soup_session_request_uri (priv->session, uri, NULL); soup_uri_free (uri); #else rr->request = soup_requester_request (priv->requester, url, NULL); #endif if (headers != NULL) { SoupMessage *message; GHashTableIter iter; const char *key, *value; message = soup_request_http_get_message (SOUP_REQUEST_HTTP (rr->request)); if (message) { g_hash_table_iter_init (&iter, headers); while (g_hash_table_iter_next (&iter, (gpointer *) &key, (gpointer *)&value)) { soup_message_headers_append (message->request_headers, key, value); } g_object_unref (message); } } soup_request_send_async (rr->request, cancellable, reply_cb, result); }
static void test_url_new_api (const char *url, int proxy, guint expected, gboolean sync, gboolean close) { SoupSession *session; SoupURI *proxy_uri; SoupMessage *msg; SoupRequester *requester; SoupRequest *request; GInputStream *stream; GError *error = NULL; if (!tls_available && g_str_has_prefix (url, "https:")) return; debug_printf (1, " GET (requester API) %s via %s%s\n", url, proxy_names[proxy], close ? " (with Connection: close)" : ""); if (proxy == UNAUTH_PROXY && expected != SOUP_STATUS_FORBIDDEN) expected = SOUP_STATUS_PROXY_UNAUTHORIZED; /* We create a new session for each request to ensure that * connections/auth aren't cached between tests. */ proxy_uri = soup_uri_new (proxies[proxy]); session = soup_test_session_new (sync ? SOUP_TYPE_SESSION_SYNC : SOUP_TYPE_SESSION_ASYNC, SOUP_SESSION_ADD_FEATURE_BY_TYPE, SOUP_TYPE_REQUESTER, SOUP_SESSION_USE_THREAD_CONTEXT, TRUE, SOUP_SESSION_PROXY_URI, proxy_uri, NULL); soup_uri_free (proxy_uri); g_signal_connect (session, "authenticate", G_CALLBACK (authenticate), NULL); if (close) { g_signal_connect (session, "request-started", G_CALLBACK (set_close_on_connect), NULL); } requester = (SoupRequester *)soup_session_get_feature (session, SOUP_TYPE_REQUESTER); request = soup_requester_request (requester, url, NULL); msg = soup_request_http_get_message (SOUP_REQUEST_HTTP (request)); stream = soup_test_request_send (request, NULL, &error); if (!stream) { debug_printf (1, " Unexpected error on Request: %s\n", error->message); errors++; g_clear_error (&error); } if (stream) { soup_test_request_close_stream (request, stream, NULL, NULL); if (error) { debug_printf (1, " Unexpected error on close: %s\n", error->message); errors++; g_clear_error (&error); } g_object_unref (stream); } debug_printf (1, " %d %s\n", msg->status_code, msg->reason_phrase); if (msg->status_code != expected) { debug_printf (1, " EXPECTED %d!\n", expected); errors++; } g_object_unref (msg); g_object_unref (request); soup_test_session_abort_unref (session); }
static void do_request_to_session (SoupRequester *requester, const char *uri, const char *comment, gboolean expect_timeout) { SoupRequest *req; SoupMessage *msg; GInputStream *stream; GError *error = NULL; gboolean finished = FALSE; debug_printf (1, " req %s\n", comment); req = soup_requester_request (requester, uri, NULL); msg = soup_request_http_get_message (SOUP_REQUEST_HTTP (req)); g_signal_connect (msg, "finished", G_CALLBACK (message_finished), &finished); stream = soup_test_request_send (req, NULL, &error); if (expect_timeout && !error) { debug_printf (1, " FAILED: request did not time out\n"); errors++; } else if (expect_timeout && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_TIMED_OUT)) { debug_printf (1, " FAILED: wrong error: %s\n", error->message); errors++; } else if (!expect_timeout && error) { debug_printf (1, " FAILED: expected success but got error: %s\n", error->message); errors++; } g_clear_error (&error); if (stream) { soup_test_request_close_stream (req, stream, NULL, &error); if (error) { debug_printf (1, " ERROR closing string: %s", error->message); errors++; } g_object_unref (stream); } if (SOUP_STATUS_IS_SUCCESSFUL (msg->status_code) && !soup_message_is_keepalive (msg)) { debug_printf (1, " ERROR: message is not keepalive!\n"); errors++; } if (!finished) { debug_printf (1, " ERROR: 'finished' was not emitted\n"); errors++; } g_signal_handlers_disconnect_by_func (msg, G_CALLBACK (message_finished), &finished); g_object_unref (msg); g_object_unref (req); }