summaryrefslogtreecommitdiff
path: root/src/HttpRequest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-06-29 14:29:36 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-06-29 14:29:36 +0000
commitd791807addd686660fd75d721b3cb0cf14d52f67 (patch)
treec882dc44d5456d37fb8738e53cc46618b1b87bab /src/HttpRequest.cc
parent6c4dd16c82fe8dadd7a598cca998b4273436f0bd (diff)
2008-06-29 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added gzip, deflate decoding support in HTTP using libz. If compiled with this feature, aria2 sends "Accept-Encoding: deflate, gzip" header to a HTTP server. If a server returns "Content-Encoding: gzip" or "Content-Encoding: deflate" then, aria2 decodes the response body on the fly and writes decoded data to a local disk. * README * README.html * configure.ac * m4/aria2_arg.m4: Added ARIA2_ARG_WITH and ARIA2_ARG_ENABLE, they are wrapper function for AC_ARG_WITH and AC_ARG_ENABLE respectively. * m4/libz.m4 * src/Decoder.h * src/DownloadCommand.cc * src/DownloadCommand.h * src/Exception.h * src/GZipDecoder.cc * src/GZipDecoder.h * src/HttpHeader.cc * src/HttpHeader.h * src/HttpRequest.cc * src/HttpRequest.h * src/HttpResponse.cc * src/HttpResponse.h * src/HttpResponseCommand.cc * src/Makefile.am * test/GZipDecoderTest.cc * test/HttpRequestTest.cc * test/HttpResponseTest.cc * test/Makefile.am * test/Makefile.in * test/gzip_decode_test.gz
Diffstat (limited to 'src/HttpRequest.cc')
-rw-r--r--src/HttpRequest.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc
index 7940315d..f0b4d89d 100644
--- a/src/HttpRequest.cc
+++ b/src/HttpRequest.cc
@@ -55,6 +55,7 @@ HttpRequest::HttpRequest():entityLength(0),
authEnabled(false),
proxyEnabled(false),
proxyAuthEnabled(false),
+ _contentEncodingEnabled(true),
userAgent(USER_AGENT)
{}
@@ -155,6 +156,16 @@ std::string HttpRequest::createRequest() const
}
requestLine += "\r\n";
+ if(_contentEncodingEnabled) {
+ std::string acceptableEncodings;
+#ifdef HAVE_LIBZ
+ acceptableEncodings += "deflate, gzip";
+#endif // HAVE_LIBZ
+ if(!acceptableEncodings.empty()) {
+ requestLine += "Accept-Encoding: "+acceptableEncodings+"\r\n";
+ }
+ }
+
requestLine +=
"Host: "+getHostText(getHost(), getPort())+"\r\n"+
"Pragma: no-cache\r\n"+
@@ -235,6 +246,16 @@ std::string HttpRequest::getProxyAuthString() const {
Base64::encode(AuthConfigFactorySingleton::instance()->createAuthConfigForHttpProxy(request)->getAuthText())+"\r\n";
}
+void HttpRequest::enableContentEncoding()
+{
+ _contentEncodingEnabled = true;
+}
+
+void HttpRequest::disableContentEncoding()
+{
+ _contentEncodingEnabled = false;
+}
+
void HttpRequest::addHeader(const std::string& headersString)
{
std::deque<std::string> headers;