Add a new spdycat option "--method" to support any arbitrary request method
sudheerv opened this issue · 10 comments
Add a new spdycat option "--method" to support any arbitrary request method
Below is the patch (thanks to Bryan Geffon)
--- src/spdylay_ssl.cc 2014/04/17 20:34:04 818
+++ src/spdylay_ssl.cc 2014/07/09 16:05:36 978
@@ -142,6 +142,7 @@
int Spdylay::submit_request(const std::string& scheme,
const std::string& hostport,
const std::string& path,
+ const std::string& method,
const std::map<std::string,std::string>& headers,
uint8_t pri,
const spdylay_data_provider *data_prd,
@@ -174,7 +175,7 @@
}
const char *static_nv[] = {
- ":method", data_prd ? "POST" : "GET",
+ ":method", method.c_str(),
":path", path.c_str(),
":version", "HTTP/1.1",
":scheme", scheme.c_str(),
--- src/spdylay_ssl.h 2014/04/17 20:34:04 818
+++ src/spdylay_ssl.h 2014/07/09 16:05:36 978
@@ -56,7 +56,7 @@
bool finish();
int fd() const;
int submit_request(const std::string& scheme,
- const std::string& hostport, const std::string& path,
+ const std::string& hostport, const std::string& path, const std::string &method,
const std::map<std::string,std::string>& headers,
uint8_t pri,
const spdylay_data_provider *data_prd,
--- src/spdycat.cc 2014/04/17 20:34:04 818
+++ src/spdycat.cc 2014/07/09 16:05:36 978
@@ -73,6 +73,7 @@
std::string keyfile;
std::string datafile;
std::string proxy_host;
+ std::string method;
int proxy_port;
int multiply;
int spdy_version;
@@ -386,7 +387,7 @@
{
std::string path = req->make_reqpath();
int r = sc.submit_request(get_uri_field(req->uri.c_str(), req->u, UF_SCHEMA),
- hostport, path, headers, 3, req->data_prd,
+ hostport, path, !config.method.empty() ? config.method : (req->data_prd ? "POST" : "GET"), headers, 3, req->data_prd,
req->data_length, req, !proxy_host.empty(), proxy_host, proxy_port);
assert(r == 0);
}
@@ -956,6 +957,8 @@
<< " same with the linking resource will be\n"
<< " downloaded.\n"
<< " -s, --stat Print statistics.\n"
+ << " -M, --method=<METHOD>\n"
+ << " Use a arbitrary method.\n"
<< " -H, --header Add a header to the requests.\n"
<< " --cert=<CERT> Use the specified client certificate file.\n"
<< " The file must be in PEM format.\n"
@@ -995,6 +998,7 @@
{"header", required_argument, 0, 'H' },
{"data", required_argument, 0, 'd' },
{"multiply", required_argument, 0, 'm' },
+ {"method", required_argument, 0, 'M' },
{"proxy", required_argument, 0, 'p' },
{"proxyport", required_argument, 0, 'P' },
{"cert", required_argument, &flag, 1 },
@@ -1067,6 +1071,10 @@
config.headers.insert(std::pair<std::string,std::string>(header, value));
break;
}
+ case 'M': {
+ config.method = optarg;
+ break;
+ }
case 'a':
#ifdef HAVE_LIBXML2
config.get_assets = true;
Thank you for the patch.
Changing request method is already possible using -H
option, since in SPDY method is a part of headers:
$ spdycat -nv -H ':method: HEAD' https://nghttp2.org
Unfortunately, -H option doesn’t seem to allow modifying headers that start with “:”
$ spdycat -3 -v https://abc.com -H ":method: HEAD” —> this doesn’t work
-H: invalid header: :method: HEAD
$ spdycat -3 -v https://abc.com -H "method: HEAD” —> this works
Thanks,
Sudheer
From: Tatsuhiro Tsujikawa <notifications@github.commailto:notifications@github.com>
Reply-To: tatsuhiro-t/spdylay <reply@reply.github.commailto:reply@reply.github.com>
Date: Thursday, July 10, 2014 at 5:38 AM
To: tatsuhiro-t/spdylay <spdylay@noreply.github.commailto:spdylay@noreply.github.com>
Cc: Sudheer Vinukonda <sudheerv@yahoo-inc.commailto:sudheerv@yahoo-inc.com>
Subject: Re: [spdylay] Add a new spdycat option "--method" to support any arbitrary request method (#116)
Thank you for the patch.
Changing request method is already possible using -H option, since in SPDY method is a part of headers:
$ spdycat -nv -H ':method: HEAD' https://nghttp2.org
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/116#issuecomment-48598606.
I think you are using old version. Could you try latest source code?
Ah, I see – great to hear this has been fixed!
Please ignore my patch :)
Sudheer
From: Tatsuhiro Tsujikawa <notifications@github.commailto:notifications@github.com>
Reply-To: tatsuhiro-t/spdylay <reply@reply.github.commailto:reply@reply.github.com>
Date: Thursday, July 10, 2014 at 8:09 AM
To: tatsuhiro-t/spdylay <spdylay@noreply.github.commailto:spdylay@noreply.github.com>
Cc: Sudheer Vinukonda <sudheerv@yahoo-inc.commailto:sudheerv@yahoo-inc.com>
Subject: Re: [spdylay] Add a new spdycat option "--method" to support any arbitrary request method (#116)
I think you are using old version. Could you try latest source code?
—
Reply to this email directly or view it on GitHubhttps://github.com//issues/116#issuecomment-48617537.
OK. I'll add some note to help message about this usage.
Oh, I have already referred to this usage in -H help message. I completely forgot about it.
Thanks - btw, could you tell me if there's a better way to submit patches here? I couldn't find an option to attach files, so, I had to paste the entire patch as a comment, but, I was wondering if there are other easier/convenient options.
Github pull request works, which is easiest and Github documents how to do it.
If you don't want to use it, send me a patch formatted by git format-patch command.
cool - thanks!