1
0
mirror of https://github.com/moparisthebest/curl synced 2024-11-14 05:25:06 -05:00

curl: add %{method} to the -w variables

Gets the CURLINFO_EFFECTIVE_METHOD from libcurl.

Added test 1197 to verify.
This commit is contained in:
Daniel Stenberg 2020-07-13 09:58:29 +02:00
parent d75e3ab74c
commit f5e6907d52
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
6 changed files with 103 additions and 2 deletions

View File

@ -60,6 +60,9 @@ either IPv4 or IPv6 (Added in 7.29.0)
.B local_port .B local_port
The local port number of the most recently done connection (Added in 7.29.0) The local port number of the most recently done connection (Added in 7.29.0)
.TP .TP
.B method
The http method used in the most recent HTTP request (Added in 7.72.0)
.TP
.B num_connects .B num_connects
Number of new connects made in the recent transfer. (Added in 7.12.3) Number of new connects made in the recent transfer. (Added in 7.12.3)
.TP .TP

View File

@ -32,6 +32,8 @@
static const struct writeoutvar variables[] = { static const struct writeoutvar variables[] = {
{"url_effective", VAR_EFFECTIVE_URL, 0, {"url_effective", VAR_EFFECTIVE_URL, 0,
CURLINFO_EFFECTIVE_URL, JSON_STRING}, CURLINFO_EFFECTIVE_URL, JSON_STRING},
{"method", VAR_EFFECTIVE_METHOD, 0,
CURLINFO_EFFECTIVE_METHOD, JSON_STRING},
{"http_code", VAR_HTTP_CODE, 0, {"http_code", VAR_HTTP_CODE, 0,
CURLINFO_RESPONSE_CODE, JSON_LONG}, CURLINFO_RESPONSE_CODE, JSON_LONG},
{"response_code", VAR_HTTP_CODE, 0, {"response_code", VAR_HTTP_CODE, 0,
@ -142,6 +144,13 @@ void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo)
&& stringp) && stringp)
fputs(stringp, stream); fputs(stringp, stream);
break; 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: case VAR_HTTP_CODE:
if(CURLE_OK == if(CURLE_OK ==
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &longinfo)) curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &longinfo))

View File

@ -39,6 +39,7 @@ typedef enum {
VAR_HTTP_CODE_PROXY, VAR_HTTP_CODE_PROXY,
VAR_HEADER_SIZE, VAR_HEADER_SIZE,
VAR_REQUEST_SIZE, VAR_REQUEST_SIZE,
VAR_EFFECTIVE_METHOD,
VAR_EFFECTIVE_URL, VAR_EFFECTIVE_URL,
VAR_CONTENT_TYPE, VAR_CONTENT_TYPE,
VAR_NUM_CONNECTS, VAR_NUM_CONNECTS,

View File

@ -141,7 +141,7 @@ test1168 \
test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 \ test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 \
test1178 test1179 \ 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 \ test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \ test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \

88
tests/data/test1197 Normal file
View File

@ -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>

View File

@ -61,7 +61,7 @@ Accept: */*
</protocol> </protocol>
<stdout nonewline="yes"> <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> </stdout>
</verify> </verify>
</testcase> </testcase>