summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-04-27 04:09:08 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-04-27 04:09:08 +0000
commit4663902500c3ef94002cc9b646043680c2d2a181 (patch)
tree402721ee9fbcb72e74ee35790a488ab4b1a59ffd /src
parent1ef99931e131343f069a4b74edfc06196d72d85b (diff)
2008-04-27 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Removed query part from filename in HTTP download. The query part means the substring after "?" in URL. Firefox seems do the same thing. A query part is sometimes very long and not suitable to filename, so I think it is better to remove it from filename. * src/HttpRequest.cc * src/HttpRequest.h * src/Request.cc * src/Request.h * test/HttpRequestTest.cc * test/RequestTest.cc
Diffstat (limited to 'src')
-rw-r--r--src/HttpRequest.cc7
-rw-r--r--src/HttpRequest.h2
-rw-r--r--src/Request.cc6
-rw-r--r--src/Request.h3
4 files changed, 15 insertions, 3 deletions
diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc
index d303e9fc..70e281da 100644
--- a/src/HttpRequest.cc
+++ b/src/HttpRequest.cc
@@ -141,7 +141,7 @@ std::string HttpRequest::createRequest() const
} else {
requestLine += getDir()+"/";
}
- requestLine += getFile();
+ requestLine += getFile()+getQuery();
}
requestLine +=
std::string(" HTTP/1.1\r\n")+
@@ -281,4 +281,9 @@ std::string HttpRequest::getFile() const
return request->getFile();
}
+std::string HttpRequest::getQuery() const
+{
+ return request->getQuery();
+}
+
} // namespace aria2
diff --git a/src/HttpRequest.h b/src/HttpRequest.h
index 6a1cc124..ddf0ecfe 100644
--- a/src/HttpRequest.h
+++ b/src/HttpRequest.h
@@ -108,6 +108,8 @@ public:
std::string getFile() const;
+ std::string getQuery() const;
+
std::string getPreviousURI() const;
SharedHandle<Range> getRange() const;
diff --git a/src/Request.cc b/src/Request.cc
index 8cf46c76..cc9c7c94 100644
--- a/src/Request.cc
+++ b/src/Request.cc
@@ -88,12 +88,14 @@ bool Request::parseUrl(const std::string& url) {
port = 0;
dir = "";
file = "";
+ _query = "";
_username = "";
_password = "";
// find query part
+ std::string queryTemp;
std::string::size_type startQueryIndex = tempUrl.find("?");
if(startQueryIndex != std::string::npos) {
- query = tempUrl.substr(startQueryIndex);
+ queryTemp = tempUrl.substr(startQueryIndex);
tempUrl.erase(startQueryIndex);
}
// find protocol
@@ -154,7 +156,7 @@ bool Request::parseUrl(const std::string& url) {
if(tempUrl.size() > direp+1) {
file = tempUrl.substr(direp+1);
}
- file += query;
+ _query = queryTemp;
return true;
}
diff --git a/src/Request.h b/src/Request.h
index 9319b8da..1bd1f0d6 100644
--- a/src/Request.h
+++ b/src/Request.h
@@ -69,6 +69,8 @@ private:
uint16_t port;
std::string dir;
std::string file;
+ /* after ? mark(includes '?' itself) */
+ std::string _query;
unsigned int tryCount;
// whether or not the server supports persistent connection
@@ -119,6 +121,7 @@ public:
uint16_t getPort() const { return port; }
std::string getDir() const { return dir; }
std::string getFile() const { return file;}
+ std::string getQuery() const { return _query; }
void supportsPersistentConnection(bool f)
{