diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-04-27 04:09:08 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-04-27 04:09:08 +0000 |
| commit | 4663902500c3ef94002cc9b646043680c2d2a181 (patch) | |
| tree | 402721ee9fbcb72e74ee35790a488ab4b1a59ffd /src | |
| parent | 1ef99931e131343f069a4b74edfc06196d72d85b (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.cc | 7 | ||||
| -rw-r--r-- | src/HttpRequest.h | 2 | ||||
| -rw-r--r-- | src/Request.cc | 6 | ||||
| -rw-r--r-- | src/Request.h | 3 |
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) { |
