diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-07-13 09:58:29 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-07-14 17:53:45 +0200 |
commit | f5e6907d5232ca9c05cb8a0b99d809590ddcde18 (patch) | |
tree | ca196f63279e191890bc0feb5a3ba510ce59cc84 | |
parent | d75e3ab74c91eff67363cba064611d405105a12f (diff) | |
download | curl-f5e6907d5232ca9c05cb8a0b99d809590ddcde18.tar.gz |
curl: add %{method} to the -w variables
Gets the CURLINFO_EFFECTIVE_METHOD from libcurl.
Added test 1197 to verify.
-rw-r--r-- | docs/cmdline-opts/write-out.d | 3 | ||||
-rw-r--r-- | src/tool_writeout.c | 9 | ||||
-rw-r--r-- | src/tool_writeout.h | 1 | ||||
-rw-r--r-- | tests/data/Makefile.inc | 2 | ||||
-rw-r--r-- | tests/data/test1197 | 88 | ||||
-rw-r--r-- | tests/data/test970 | 2 |
6 files changed, 103 insertions, 2 deletions
diff --git a/docs/cmdline-opts/write-out.d b/docs/cmdline-opts/write-out.d index 9786a9af4..686bda6ea 100644 --- a/docs/cmdline-opts/write-out.d +++ b/docs/cmdline-opts/write-out.d @@ -60,6 +60,9 @@ either IPv4 or IPv6 (Added in 7.29.0) .B local_port The local port number of the most recently done connection (Added in 7.29.0) .TP +.B method +The http method used in the most recent HTTP request (Added in 7.72.0) +.TP .B num_connects Number of new connects made in the recent transfer. (Added in 7.12.3) .TP diff --git a/src/tool_writeout.c b/src/tool_writeout.c index d8ccbcbda..41441ff30 100644 --- a/src/tool_writeout.c +++ b/src/tool_writeout.c @@ -32,6 +32,8 @@ static const struct writeoutvar variables[] = { {"url_effective", VAR_EFFECTIVE_URL, 0, CURLINFO_EFFECTIVE_URL, JSON_STRING}, + {"method", VAR_EFFECTIVE_METHOD, 0, + CURLINFO_EFFECTIVE_METHOD, JSON_STRING}, {"http_code", VAR_HTTP_CODE, 0, CURLINFO_RESPONSE_CODE, JSON_LONG}, {"response_code", VAR_HTTP_CODE, 0, @@ -142,6 +144,13 @@ void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo) && stringp) fputs(stringp, stream); break; + case VAR_EFFECTIVE_METHOD: + if((CURLE_OK == curl_easy_getinfo(curl, + CURLINFO_EFFECTIVE_METHOD, + &stringp)) + && stringp) + fputs(stringp, stream); + break; case VAR_HTTP_CODE: if(CURLE_OK == curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &longinfo)) diff --git a/src/tool_writeout.h b/src/tool_writeout.h index a21787ab9..68bacb9d4 100644 --- a/src/tool_writeout.h +++ b/src/tool_writeout.h @@ -39,6 +39,7 @@ typedef enum { VAR_HTTP_CODE_PROXY, VAR_HEADER_SIZE, VAR_REQUEST_SIZE, + VAR_EFFECTIVE_METHOD, VAR_EFFECTIVE_URL, VAR_CONTENT_TYPE, VAR_NUM_CONNECTS, diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index eaf347d91..667d7951a 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -141,7 +141,7 @@ test1168 \ test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 \ test1178 test1179 \ \ -test1190 test1191 test1192 test1193 test1194 test1195 test1196 \ +test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 \ \ test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \ test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \ diff --git a/tests/data/test1197 b/tests/data/test1197 new file mode 100644 index 000000000..96d368f8b --- /dev/null +++ b/tests/data/test1197 @@ -0,0 +1,88 @@ +<testcase> +<info> +<keywords> +HTTP +HTTP GET +followlocation +--write-out +</keywords> +</info> + +# +# Server-side +<reply> +<data nocheck="yes"> +HTTP/1.1 302 OK swsbounce swsclose
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 8
+Connection: close
+Content-Type: text/plain
+Location: ./11970001
+
+monster +</data> +<data1 nocheck="yes"> +HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 15
+Connection: close
+Content-Type: text/plain; charset=us-ascii
+
+bigger monster +</data1> + +</reply> + +# +# Client-side +<client> +<server> +http +</server> + <name> +HTTP POST redirected to GET and --write-out method + </name> + <command> +http://%HOSTIP:%HTTPPORT/1197 -w "%{method}\n" -L -d "twinkle twinkle little star" +</command> +</client> + +# +# Verify data after the test has been "shot" +<verify> +<strip> +^User-Agent:.* +</strip> +<protocol> +POST /1197 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+Content-Length: 27
+Content-Type: application/x-www-form-urlencoded
+
+twinkle twinkle little starGET /11970001 HTTP/1.1
+Host: %HOSTIP:%HTTPPORT
+Accept: */*
+
+</protocol> + +<stdout> +HTTP/1.1 302 OK swsbounce swsclose
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 8
+Connection: close
+Content-Type: text/plain
+Location: ./11970001
+
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Content-Length: 15
+Connection: close
+Content-Type: text/plain; charset=us-ascii
+
+bigger monster +GET +</stdout> + +</verify> +</testcase> diff --git a/tests/data/test970 b/tests/data/test970 index e6d138f49..c0a88a798 100644 --- a/tests/data/test970 +++ b/tests/data/test970 @@ -61,7 +61,7 @@ Accept: */* </protocol> <stdout nonewline="yes"> -{"url_effective":"http://%HOSTIP:%HTTPPORT/970","http_code":200,"response_code":200,"http_connect":0,"time_total":0.000013,"time_namelookup":0.000013,"time_connect":0.000013,"time_appconnect":0.000013,"time_pretransfer":0.000013,"time_starttransfer":0.000013,"size_header":4019,"size_request":4019,"size_download":445,"size_upload":0,"speed_download":13,"speed_upload":13,"content_type":"text/html","num_connects":1,"time_redirect":0.000013,"num_redirects":0,"ssl_verify_result":0,"proxy_ssl_verify_result":0,"filename_effective":"log/out970","remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"local_ip":"127.0.0.1","local_port":13,"http_version":"1.1","scheme":"HTTP","curl_version":"curl-unit-test-fake-version"} +{"url_effective":"http://%HOSTIP:%HTTPPORT/970","method":"GET","http_code":200,"response_code":200,"http_connect":0,"time_total":0.000013,"time_namelookup":0.000013,"time_connect":0.000013,"time_appconnect":0.000013,"time_pretransfer":0.000013,"time_starttransfer":0.000013,"size_header":4019,"size_request":4019,"size_download":445,"size_upload":0,"speed_download":13,"speed_upload":13,"content_type":"text/html","num_connects":1,"time_redirect":0.000013,"num_redirects":0,"ssl_verify_result":0,"proxy_ssl_verify_result":0,"filename_effective":"log/out970","remote_ip":"%HOSTIP","remote_port":%HTTPPORT,"local_ip":"127.0.0.1","local_port":13,"http_version":"1.1","scheme":"HTTP","curl_version":"curl-unit-test-fake-version"} </stdout> </verify> </testcase> |