summaryrefslogtreecommitdiff
path: root/src/HttpRequest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-05 08:25:41 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-05 08:25:41 +0000
commitf596de9eec5ea01a28b7ee5d632164d8b41221ec (patch)
tree103c6866eea996f9ab9b31cf3b804eaeb9cf849b /src/HttpRequest.cc
parentb892b54e4b5847ca848a4fda555d4f79d86404e2 (diff)
2008-05-05 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Reimplemented transparent metalink using Accept request header. * src/HttpRequest.cc * src/HttpRequest.h * src/HttpRequestCommand.cc * src/Metalink2RequestGroup.cc * src/RequestGroup.cc * src/RequestGroup.h * test/HttpRequestTest.cc
Diffstat (limited to 'src/HttpRequest.cc')
-rw-r--r--src/HttpRequest.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc
index 70e281da..ab260a46 100644
--- a/src/HttpRequest.cc
+++ b/src/HttpRequest.cc
@@ -44,6 +44,7 @@
#include "prefs.h"
#include "AuthConfigFactory.h"
#include "AuthConfig.h"
+#include "a2functional.h"
#include <numeric>
namespace aria2 {
@@ -145,11 +146,17 @@ std::string HttpRequest::createRequest() const
}
requestLine +=
std::string(" HTTP/1.1\r\n")+
- "User-Agent: "+userAgent+"\r\n"+
- "Accept: */*\r\n"+ /* */
+ "User-Agent: "+userAgent+"\r\n";
+
+ requestLine +=
+ std::accumulate(_acceptTypes.begin(), _acceptTypes.end(),
+ std::string("Accept: */*"), Concat(","))+"\r\n"; /* */
+
+ requestLine +=
"Host: "+getHostText(getHost(), getPort())+"\r\n"+
"Pragma: no-cache\r\n"+
"Cache-Control: no-cache\r\n";
+
if(!request->isKeepAliveEnabled() && !request->isPipeliningEnabled()) {
requestLine += "Connection: close\r\n";
}
@@ -232,6 +239,11 @@ void HttpRequest::addHeader(const std::string& headersString)
_headers.insert(_headers.end(), headers.begin(), headers.end());
}
+void HttpRequest::addAcceptType(const std::string& type)
+{
+ _acceptTypes.push_back(type);
+}
+
void HttpRequest::configure(const Option* option)
{
authEnabled = option->get(PREF_HTTP_AUTH_ENABLED) == V_TRUE;