Skip to content

Commit

Permalink
curl: add %{method} to the -w variables
Browse files Browse the repository at this point in the history
Gets the CURLINFO_EFFECTIVE_METHOD from libcurl.

Added test 1197 to verify.
  • Loading branch information
bagder committed Jul 14, 2020
1 parent d75e3ab commit f5e6907
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 2 deletions.
3 changes: 3 additions & 0 deletions docs/cmdline-opts/write-out.d
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 9 additions & 0 deletions src/tool_writeout.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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))
Expand Down
1 change: 1 addition & 0 deletions src/tool_writeout.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion tests/data/Makefile.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
88 changes: 88 additions & 0 deletions tests/data/test1197
Original file line number Diff line number Diff line change
@@ -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>
2 changes: 1 addition & 1 deletion tests/data/test970
Original file line number Diff line number Diff line change
Expand Up @@ -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>

0 comments on commit f5e6907

Please sign in to comment.