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