diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-06-29 14:29:36 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-06-29 14:29:36 +0000 |
| commit | d791807addd686660fd75d721b3cb0cf14d52f67 (patch) | |
| tree | c882dc44d5456d37fb8738e53cc46618b1b87bab /src/HttpRequest.cc | |
| parent | 6c4dd16c82fe8dadd7a598cca998b4273436f0bd (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.cc | 21 |
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; |
