dovecot-2.2: test-http-client: Added POST functionality also.

dovecot at dovecot.org dovecot at dovecot.org
Wed Feb 20 12:24:46 EET 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/07dfd4391d22
changeset: 15857:07dfd4391d22
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Feb 20 12:24:36 2013 +0200
description:
test-http-client: Added POST functionality also.

diffstat:

 src/lib-http/test-http-client.c |  48 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 43 insertions(+), 5 deletions(-)

diffs (79 lines):

diff -r 98c86534d4b7 -r 07dfd4391d22 src/lib-http/test-http-client.c
--- a/src/lib-http/test-http-client.c	Wed Feb 20 11:58:34 2013 +0200
+++ b/src/lib-http/test-http-client.c	Wed Feb 20 12:24:36 2013 +0200
@@ -263,7 +263,11 @@
 	http_client_request_submit(http_req);
 }
 
-static void run_http_get(struct http_client *http_client, const char *url_str)
+static void
+test_http_request_init(struct http_client *http_client,
+		       const char *method, const char *url_str,
+		       struct http_client_request **http_req_r,
+		       struct http_test_request **test_req_r)
 {
 	struct http_client_request *http_req;
 	struct http_test_request *test_req;
@@ -277,13 +281,38 @@
 	test_req = i_new(struct http_test_request, 1);
 	test_req->write_output = TRUE;
 	http_req = http_client_request(http_client,
-		"GET", url->host_name,
+		method, url->host_name,
 		t_strconcat("/", url->path, url->enc_query, NULL),
 		got_request_response, test_req);
 	if (url->have_port)
 		http_client_request_set_port(http_req, url->port);
 	if (url->have_ssl)
 		http_client_request_set_ssl(http_req, TRUE);
+
+	*http_req_r = http_req;
+	*test_req_r = test_req;
+}
+
+static void run_http_get(struct http_client *http_client, const char *url_str)
+{
+	struct http_client_request *http_req;
+	struct http_test_request *test_req;
+
+	test_http_request_init(http_client, "GET", url_str, &http_req, &test_req);
+	http_client_request_submit(http_req);
+}
+
+static void run_http_post(struct http_client *http_client, const char *url_str,
+			  const char *path)
+{
+	struct http_client_request *http_req;
+	struct http_test_request *test_req;
+	struct istream *input;
+
+	test_http_request_init(http_client, "POST", url_str, &http_req, &test_req);
+	input = i_stream_create_file(path, IO_BLOCK_SIZE);
+	http_client_request_set_payload(http_req, input, FALSE);
+	i_stream_unref(&input);
 	http_client_request_submit(http_req);
 }
 
@@ -312,10 +341,19 @@
 
 	http_client = http_client_init(&http_set);
 
-	if (argc > 1)
+	switch (argc) {
+	case 1:
+		run_tests(http_client);
+		break;
+	case 2:
 		run_http_get(http_client, argv[1]);
-	else
-		run_tests(http_client);
+		break;
+	case 3:
+		run_http_post(http_client, argv[1], argv[2]);
+		break;
+	default:
+		i_fatal("Too many parameters");
+	}
 
 	http_client_wait(http_client);
 	http_client_deinit(&http_client);


More information about the dovecot-cvs mailing list