mirror of
https://github.com/aria2/aria2.git
synced 2025-04-05 05:27:38 +03:00
HttpRequest: Store non-owning raw pointer for authConfigFactory_
This commit is contained in:
parent
6bcf33a69e
commit
4803482a51
7 changed files with 105 additions and 98 deletions
|
@ -544,9 +544,14 @@ void DownloadEngine::removeCachedIPAddress
|
||||||
}
|
}
|
||||||
|
|
||||||
void DownloadEngine::setAuthConfigFactory
|
void DownloadEngine::setAuthConfigFactory
|
||||||
(const std::shared_ptr<AuthConfigFactory>& factory)
|
(std::unique_ptr<AuthConfigFactory> factory)
|
||||||
{
|
{
|
||||||
authConfigFactory_ = factory;
|
authConfigFactory_ = std::move(factory);
|
||||||
|
}
|
||||||
|
|
||||||
|
AuthConfigFactory* DownloadEngine::getAuthConfigFactory() const
|
||||||
|
{
|
||||||
|
return authConfigFactory_.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DownloadEngine::setRefreshInterval(int64_t interval)
|
void DownloadEngine::setRefreshInterval(int64_t interval)
|
||||||
|
|
|
@ -147,7 +147,7 @@ private:
|
||||||
|
|
||||||
std::shared_ptr<DNSCache> dnsCache_;
|
std::shared_ptr<DNSCache> dnsCache_;
|
||||||
|
|
||||||
std::shared_ptr<AuthConfigFactory> authConfigFactory_;
|
std::unique_ptr<AuthConfigFactory> authConfigFactory_;
|
||||||
|
|
||||||
#ifdef ENABLE_WEBSOCKET
|
#ifdef ENABLE_WEBSOCKET
|
||||||
std::shared_ptr<rpc::WebSocketSessionMan> webSocketSessionMan_;
|
std::shared_ptr<rpc::WebSocketSessionMan> webSocketSessionMan_;
|
||||||
|
@ -334,12 +334,9 @@ public:
|
||||||
|
|
||||||
void removeCachedIPAddress(const std::string& hostname, uint16_t port);
|
void removeCachedIPAddress(const std::string& hostname, uint16_t port);
|
||||||
|
|
||||||
void setAuthConfigFactory(const std::shared_ptr<AuthConfigFactory>& factory);
|
void setAuthConfigFactory(std::unique_ptr<AuthConfigFactory> factory);
|
||||||
|
|
||||||
const std::shared_ptr<AuthConfigFactory>& getAuthConfigFactory() const
|
AuthConfigFactory* getAuthConfigFactory() const;
|
||||||
{
|
|
||||||
return authConfigFactory_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setRefreshInterval(int64_t interval);
|
void setRefreshInterval(int64_t interval);
|
||||||
|
|
||||||
|
|
|
@ -57,13 +57,15 @@ namespace aria2 {
|
||||||
|
|
||||||
const std::string HttpRequest::USER_AGENT("aria2");
|
const std::string HttpRequest::USER_AGENT("aria2");
|
||||||
|
|
||||||
HttpRequest::HttpRequest():contentEncodingEnabled_(true),
|
HttpRequest::HttpRequest()
|
||||||
userAgent_(USER_AGENT),
|
: contentEncodingEnabled_(true),
|
||||||
acceptMetalink_(false),
|
userAgent_(USER_AGENT),
|
||||||
option_(0),
|
acceptMetalink_(false),
|
||||||
noCache_(true),
|
authConfigFactory_(0),
|
||||||
acceptGzip_(false),
|
option_(0),
|
||||||
endOffsetOverride_(0)
|
noCache_(true),
|
||||||
|
acceptGzip_(false),
|
||||||
|
endOffsetOverride_(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
HttpRequest::~HttpRequest() {}
|
HttpRequest::~HttpRequest() {}
|
||||||
|
@ -333,10 +335,13 @@ void HttpRequest::setCookieStorage
|
||||||
cookieStorage_ = cookieStorage;
|
cookieStorage_ = cookieStorage;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HttpRequest::setAuthConfigFactory
|
void HttpRequest::setAuthConfigFactory(AuthConfigFactory* factory)
|
||||||
(const std::shared_ptr<AuthConfigFactory>& factory, const Option* option)
|
|
||||||
{
|
{
|
||||||
authConfigFactory_ = factory;
|
authConfigFactory_ = factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpRequest::setOption(const Option* option)
|
||||||
|
{
|
||||||
option_ = option;
|
option_ = option;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ private:
|
||||||
|
|
||||||
std::shared_ptr<CookieStorage> cookieStorage_;
|
std::shared_ptr<CookieStorage> cookieStorage_;
|
||||||
|
|
||||||
std::shared_ptr<AuthConfigFactory> authConfigFactory_;
|
AuthConfigFactory* authConfigFactory_;
|
||||||
|
|
||||||
const Option* option_;
|
const Option* option_;
|
||||||
|
|
||||||
|
@ -192,8 +192,8 @@ public:
|
||||||
return cookieStorage_;
|
return cookieStorage_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setAuthConfigFactory
|
void setAuthConfigFactory(AuthConfigFactory* factory);
|
||||||
(const std::shared_ptr<AuthConfigFactory>& factory, const Option* option);
|
void setOption(const Option* option);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To use proxy, pass proxy string to Request::setUri() and set it this
|
* To use proxy, pass proxy string to Request::setUri() and set it this
|
||||||
|
|
|
@ -86,11 +86,9 @@ std::shared_ptr<HttpRequest>
|
||||||
createHttpRequest(const std::shared_ptr<Request>& req,
|
createHttpRequest(const std::shared_ptr<Request>& req,
|
||||||
const std::shared_ptr<FileEntry>& fileEntry,
|
const std::shared_ptr<FileEntry>& fileEntry,
|
||||||
const std::shared_ptr<Segment>& segment,
|
const std::shared_ptr<Segment>& segment,
|
||||||
int64_t totalLength,
|
|
||||||
const std::shared_ptr<Option>& option,
|
const std::shared_ptr<Option>& option,
|
||||||
const RequestGroup* rg,
|
const RequestGroup* rg,
|
||||||
const std::shared_ptr<CookieStorage>& cookieStorage,
|
const DownloadEngine* e,
|
||||||
const std::shared_ptr<AuthConfigFactory>& authConfigFactory,
|
|
||||||
const std::shared_ptr<Request>& proxyRequest,
|
const std::shared_ptr<Request>& proxyRequest,
|
||||||
int64_t endOffset = 0)
|
int64_t endOffset = 0)
|
||||||
{
|
{
|
||||||
|
@ -100,8 +98,9 @@ createHttpRequest(const std::shared_ptr<Request>& req,
|
||||||
httpRequest->setFileEntry(fileEntry);
|
httpRequest->setFileEntry(fileEntry);
|
||||||
httpRequest->setSegment(segment);
|
httpRequest->setSegment(segment);
|
||||||
httpRequest->addHeader(option->get(PREF_HEADER));
|
httpRequest->addHeader(option->get(PREF_HEADER));
|
||||||
httpRequest->setCookieStorage(cookieStorage);
|
httpRequest->setCookieStorage(e->getCookieStorage());
|
||||||
httpRequest->setAuthConfigFactory(authConfigFactory, option.get());
|
httpRequest->setAuthConfigFactory(e->getAuthConfigFactory());
|
||||||
|
httpRequest->setOption(option.get());
|
||||||
httpRequest->setProxyRequest(proxyRequest);
|
httpRequest->setProxyRequest(proxyRequest);
|
||||||
httpRequest->setAcceptMetalink(rg->getDownloadContext()->
|
httpRequest->setAcceptMetalink(rg->getDownloadContext()->
|
||||||
getAcceptMetalink());
|
getAcceptMetalink());
|
||||||
|
@ -140,11 +139,9 @@ bool HttpRequestCommand::executeInternal() {
|
||||||
(createHttpRequest(getRequest(),
|
(createHttpRequest(getRequest(),
|
||||||
getFileEntry(),
|
getFileEntry(),
|
||||||
std::shared_ptr<Segment>(),
|
std::shared_ptr<Segment>(),
|
||||||
getRequestGroup()->getTotalLength(),
|
|
||||||
getOption(),
|
getOption(),
|
||||||
getRequestGroup(),
|
getRequestGroup(),
|
||||||
getDownloadEngine()->getCookieStorage(),
|
getDownloadEngine(),
|
||||||
getDownloadEngine()->getAuthConfigFactory(),
|
|
||||||
proxyRequest_));
|
proxyRequest_));
|
||||||
if(getOption()->getAsBool(PREF_CONDITIONAL_GET) &&
|
if(getOption()->getAsBool(PREF_CONDITIONAL_GET) &&
|
||||||
(getRequest()->getProtocol() == "http" ||
|
(getRequest()->getProtocol() == "http" ||
|
||||||
|
@ -192,11 +189,9 @@ bool HttpRequestCommand::executeInternal() {
|
||||||
(createHttpRequest(getRequest(),
|
(createHttpRequest(getRequest(),
|
||||||
getFileEntry(),
|
getFileEntry(),
|
||||||
segment,
|
segment,
|
||||||
getRequestGroup()->getTotalLength(),
|
|
||||||
getOption(),
|
getOption(),
|
||||||
getRequestGroup(),
|
getRequestGroup(),
|
||||||
getDownloadEngine()->getCookieStorage(),
|
getDownloadEngine(),
|
||||||
getDownloadEngine()->getAuthConfigFactory(),
|
|
||||||
proxyRequest_,
|
proxyRequest_,
|
||||||
endOffset));
|
endOffset));
|
||||||
httpConnection_->sendRequest(httpRequest);
|
httpConnection_->sendRequest(httpRequest);
|
||||||
|
|
|
@ -187,7 +187,7 @@ int MultiUrlRequestInfo::prepare()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<AuthConfigFactory> authConfigFactory(new AuthConfigFactory());
|
auto authConfigFactory = make_unique<AuthConfigFactory>();
|
||||||
File netrccf(option_->get(PREF_NETRC_PATH));
|
File netrccf(option_->get(PREF_NETRC_PATH));
|
||||||
if(!option_->getAsBool(PREF_NO_NETRC) && netrccf.isFile()) {
|
if(!option_->getAsBool(PREF_NO_NETRC) && netrccf.isFile()) {
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
|
@ -205,7 +205,7 @@ int MultiUrlRequestInfo::prepare()
|
||||||
authConfigFactory->setNetrc(netrc);
|
authConfigFactory->setNetrc(netrc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e_->setAuthConfigFactory(authConfigFactory);
|
e_->setAuthConfigFactory(std::move(authConfigFactory));
|
||||||
|
|
||||||
#ifdef ENABLE_SSL
|
#ifdef ENABLE_SSL
|
||||||
std::shared_ptr<TLSContext> clTlsContext(TLSContext::make(TLS_CLIENT));
|
std::shared_ptr<TLSContext> clTlsContext(TLSContext::make(TLS_CLIENT));
|
||||||
|
|
|
@ -40,8 +40,8 @@ class HttpRequestTest : public CppUnit::TestFixture {
|
||||||
CPPUNIT_TEST(testConditionalRequest);
|
CPPUNIT_TEST(testConditionalRequest);
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<Option> option_;
|
std::unique_ptr<Option> option_;
|
||||||
std::shared_ptr<AuthConfigFactory> authConfigFactory_;
|
std::unique_ptr<AuthConfigFactory> authConfigFactory_;
|
||||||
public:
|
public:
|
||||||
void setUp()
|
void setUp()
|
||||||
{
|
{
|
||||||
|
@ -74,9 +74,9 @@ CPPUNIT_TEST_SUITE_REGISTRATION( HttpRequestTest );
|
||||||
void HttpRequestTest::testGetStartByte()
|
void HttpRequestTest::testGetStartByte()
|
||||||
{
|
{
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
std::shared_ptr<Piece> p(new Piece(1, 1024));
|
auto p = std::make_shared<Piece>(1, 1024);
|
||||||
std::shared_ptr<Segment> segment(new PiecedSegment(1024, p));
|
auto segment = std::make_shared<PiecedSegment>(1024, p);
|
||||||
std::shared_ptr<FileEntry> fileEntry(new FileEntry("file", 1024*10, 0));
|
auto fileEntry = std::make_shared<FileEntry>("file", 1024*10, 0);
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL((int64_t)0LL, httpRequest.getStartByte());
|
CPPUNIT_ASSERT_EQUAL((int64_t)0LL, httpRequest.getStartByte());
|
||||||
|
|
||||||
|
@ -93,9 +93,9 @@ void HttpRequestTest::testGetEndByte()
|
||||||
size_t segmentLength = 1024*1024;
|
size_t segmentLength = 1024*1024;
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
std::shared_ptr<Piece> piece(new Piece(index, length));
|
auto piece = std::make_shared<Piece>(index, length);
|
||||||
std::shared_ptr<Segment> segment(new PiecedSegment(segmentLength, piece));
|
auto segment = std::make_shared<PiecedSegment>(segmentLength, piece);
|
||||||
std::shared_ptr<FileEntry> fileEntry(new FileEntry("file", segmentLength*10, 0));
|
auto fileEntry = std::make_shared<FileEntry>("file", segmentLength*10, 0);
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL((int64_t)0LL, httpRequest.getEndByte());
|
CPPUNIT_ASSERT_EQUAL((int64_t)0LL, httpRequest.getEndByte());
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ void HttpRequestTest::testGetEndByte()
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL((int64_t)0LL, httpRequest.getEndByte());
|
CPPUNIT_ASSERT_EQUAL((int64_t)0LL, httpRequest.getEndByte());
|
||||||
|
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->supportsPersistentConnection(true);
|
request->supportsPersistentConnection(true);
|
||||||
request->setPipeliningHint(true);
|
request->setPipeliningHint(true);
|
||||||
|
|
||||||
|
@ -126,23 +126,21 @@ void HttpRequestTest::testGetEndByte()
|
||||||
|
|
||||||
void HttpRequestTest::testCreateRequest()
|
void HttpRequestTest::testCreateRequest()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Piece> p;
|
auto request = std::make_shared<Request>();
|
||||||
|
|
||||||
std::shared_ptr<Request> request(new Request());
|
|
||||||
request->supportsPersistentConnection(true);
|
request->supportsPersistentConnection(true);
|
||||||
|
|
||||||
request->setUri("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
||||||
|
|
||||||
p.reset(new Piece(0, 1024));
|
auto p = std::make_shared<Piece>(0, 1024);
|
||||||
std::shared_ptr<Segment> segment(new PiecedSegment(1024, p));
|
auto segment = std::make_shared<PiecedSegment>(1024, p);
|
||||||
std::shared_ptr<FileEntry> fileEntry(new FileEntry("file", 1024*1024*10, 0));
|
auto fileEntry = std::make_shared<FileEntry>("file", 1024*1024*10, 0);
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.disableContentEncoding();
|
httpRequest.disableContentEncoding();
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setSegment(segment);
|
httpRequest.setSegment(segment);
|
||||||
httpRequest.setFileEntry(fileEntry);
|
httpRequest.setFileEntry(fileEntry);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
|
|
||||||
// remove "Connection: close" and add end byte range
|
// remove "Connection: close" and add end byte range
|
||||||
request->setPipeliningHint(true);
|
request->setPipeliningHint(true);
|
||||||
|
@ -259,7 +257,7 @@ void HttpRequestTest::testCreateRequest()
|
||||||
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
|
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
|
||||||
|
|
||||||
// enable http proxy auth
|
// enable http proxy auth
|
||||||
std::shared_ptr<Request> proxyRequest(new Request());
|
auto proxyRequest = std::make_shared<Request>();
|
||||||
CPPUNIT_ASSERT(proxyRequest->setUri
|
CPPUNIT_ASSERT(proxyRequest->setUri
|
||||||
("http://aria2proxyuser:aria2proxypasswd@localhost:9000"));
|
("http://aria2proxyuser:aria2proxypasswd@localhost:9000"));
|
||||||
httpRequest.setProxyRequest(proxyRequest);
|
httpRequest.setProxyRequest(proxyRequest);
|
||||||
|
@ -316,24 +314,24 @@ void HttpRequestTest::testCreateRequest_ftp()
|
||||||
option_->put(PREF_FTP_USER, "aria2user");
|
option_->put(PREF_FTP_USER, "aria2user");
|
||||||
option_->put(PREF_FTP_PASSWD, "aria2passwd");
|
option_->put(PREF_FTP_PASSWD, "aria2passwd");
|
||||||
|
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("ftp://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("ftp://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
||||||
|
|
||||||
std::shared_ptr<Request> proxyRequest(new Request());
|
auto proxyRequest = std::make_shared<Request>();
|
||||||
CPPUNIT_ASSERT(proxyRequest->setUri
|
CPPUNIT_ASSERT(proxyRequest->setUri
|
||||||
("http://localhost:9000"));
|
("http://localhost:9000"));
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
std::shared_ptr<Piece> p(new Piece(0, 1024*1024));
|
auto p = std::make_shared<Piece>(0, 1024*1024);
|
||||||
std::shared_ptr<Segment> segment
|
auto segment = std::make_shared<PiecedSegment>(1024*1024, p);
|
||||||
(new PiecedSegment(1024*1024, p));
|
auto fileEntry = std::make_shared<FileEntry>("file", 1024*1024*10, 0);
|
||||||
std::shared_ptr<FileEntry> fileEntry(new FileEntry("file", 1024*1024*10, 0));
|
|
||||||
|
|
||||||
httpRequest.disableContentEncoding();
|
httpRequest.disableContentEncoding();
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setSegment(segment);
|
httpRequest.setSegment(segment);
|
||||||
httpRequest.setFileEntry(fileEntry);
|
httpRequest.setFileEntry(fileEntry);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
httpRequest.setProxyRequest(proxyRequest);
|
httpRequest.setProxyRequest(proxyRequest);
|
||||||
|
|
||||||
std::string expectedText =
|
std::string expectedText =
|
||||||
|
@ -372,14 +370,13 @@ void HttpRequestTest::testCreateRequest_ftp()
|
||||||
|
|
||||||
void HttpRequestTest::testCreateRequest_with_cookie()
|
void HttpRequestTest::testCreateRequest_with_cookie()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
||||||
std::shared_ptr<Piece> p(new Piece(0, 1024*1024));
|
auto p = std::make_shared<Piece>(0, 1024*1024);
|
||||||
std::shared_ptr<Segment> segment
|
auto segment = std::make_shared<PiecedSegment>(1024*1024, p);
|
||||||
(new PiecedSegment(1024*1024, p));
|
auto fileEntry = std::make_shared<FileEntry>("file", 1024*1024*10, 0);
|
||||||
std::shared_ptr<FileEntry> fileEntry(new FileEntry("file", 1024*1024*10, 0));
|
|
||||||
|
|
||||||
Cookie cookies[] = {
|
std::vector<Cookie> cookies {
|
||||||
createCookie("name1", "value1", "localhost", true, "/archives", false),
|
createCookie("name1", "value1", "localhost", true, "/archives", false),
|
||||||
createCookie("name2", "value2", "localhost", true,
|
createCookie("name2", "value2", "localhost", true,
|
||||||
"/archives/download", false),
|
"/archives/download", false),
|
||||||
|
@ -388,9 +385,9 @@ void HttpRequestTest::testCreateRequest_with_cookie()
|
||||||
createCookie("name4", "value4", "aria2.org", false, "/archives/", true),
|
createCookie("name4", "value4", "aria2.org", false, "/archives/", true),
|
||||||
createCookie("name5", "value5", "example.org", false, "/", false)
|
createCookie("name5", "value5", "example.org", false, "/", false)
|
||||||
};
|
};
|
||||||
std::shared_ptr<CookieStorage> st(new CookieStorage());
|
auto st = std::make_shared<CookieStorage>();
|
||||||
for(size_t i = 0; i < A2_ARRAY_LEN(cookies); ++i) {
|
for(auto c : cookies) {
|
||||||
CPPUNIT_ASSERT(st->store(cookies[i], 0));
|
CPPUNIT_ASSERT(st->store(c, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
|
@ -400,7 +397,8 @@ void HttpRequestTest::testCreateRequest_with_cookie()
|
||||||
httpRequest.setSegment(segment);
|
httpRequest.setSegment(segment);
|
||||||
httpRequest.setFileEntry(fileEntry);
|
httpRequest.setFileEntry(fileEntry);
|
||||||
httpRequest.setCookieStorage(st);
|
httpRequest.setCookieStorage(st);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
|
|
||||||
std::string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
|
std::string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
|
||||||
"User-Agent: aria2\r\n"
|
"User-Agent: aria2\r\n"
|
||||||
|
@ -489,12 +487,13 @@ void HttpRequestTest::testCreateRequest_with_cookie()
|
||||||
|
|
||||||
void HttpRequestTest::testCreateRequest_query()
|
void HttpRequestTest::testCreateRequest_query()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost/wiki?id=9ad5109a-b8a5-4edf-9373-56a1c34ae138");
|
request->setUri("http://localhost/wiki?id=9ad5109a-b8a5-4edf-9373-56a1c34ae138");
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.disableContentEncoding();
|
httpRequest.disableContentEncoding();
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
|
|
||||||
std::string expectedText =
|
std::string expectedText =
|
||||||
"GET /wiki?id=9ad5109a-b8a5-4edf-9373-56a1c34ae138 HTTP/1.1\r\n"
|
"GET /wiki?id=9ad5109a-b8a5-4edf-9373-56a1c34ae138 HTTP/1.1\r\n"
|
||||||
|
@ -511,13 +510,14 @@ void HttpRequestTest::testCreateRequest_query()
|
||||||
|
|
||||||
void HttpRequestTest::testCreateRequest_head()
|
void HttpRequestTest::testCreateRequest_head()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setMethod(Request::METHOD_HEAD);
|
request->setMethod(Request::METHOD_HEAD);
|
||||||
request->setUri("http://localhost/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost/aria2-1.0.0.tar.bz2");
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
|
|
||||||
std::stringstream result(httpRequest.createRequest());
|
std::stringstream result(httpRequest.createRequest());
|
||||||
std::string line;
|
std::string line;
|
||||||
|
@ -528,18 +528,18 @@ void HttpRequestTest::testCreateRequest_head()
|
||||||
|
|
||||||
void HttpRequestTest::testCreateRequest_endOffsetOverride()
|
void HttpRequestTest::testCreateRequest_endOffsetOverride()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost/myfile");
|
request->setUri("http://localhost/myfile");
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.disableContentEncoding();
|
httpRequest.disableContentEncoding();
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
std::shared_ptr<Piece> p(new Piece(0, 1024*1024));
|
httpRequest.setOption(option_.get());
|
||||||
std::shared_ptr<Segment> segment(new PiecedSegment(1024*1024, p));
|
auto p = std::make_shared<Piece>(0, 1024*1024);
|
||||||
|
auto segment = std::make_shared<PiecedSegment>(1024*1024, p);
|
||||||
httpRequest.setSegment(segment);
|
httpRequest.setSegment(segment);
|
||||||
httpRequest.setEndOffsetOverride(1024*1024*1024);
|
httpRequest.setEndOffsetOverride(1024*1024*1024);
|
||||||
std::shared_ptr<FileEntry> fileEntry
|
auto fileEntry = std::make_shared<FileEntry>("file", 1024*1024*1024*10LL, 0);
|
||||||
(new FileEntry("file", 1024*1024*1024*10LL, 0));
|
|
||||||
httpRequest.setFileEntry(fileEntry);
|
httpRequest.setFileEntry(fileEntry);
|
||||||
// End byte is passed if it is not 0
|
// End byte is passed if it is not 0
|
||||||
std::string expectedText =
|
std::string expectedText =
|
||||||
|
@ -573,12 +573,12 @@ void HttpRequestTest::testCreateRequest_endOffsetOverride()
|
||||||
|
|
||||||
void HttpRequestTest::testCreateProxyRequest()
|
void HttpRequestTest::testCreateProxyRequest()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
||||||
std::shared_ptr<Piece> p(new Piece(0, 1024*1024));
|
auto p = std::make_shared<Piece>(0, 1024*1024);
|
||||||
std::shared_ptr<Segment> segment(new PiecedSegment(1024*1024, p));
|
auto segment = std::make_shared<PiecedSegment>(1024*1024, p);
|
||||||
|
|
||||||
std::shared_ptr<Request> proxyRequest(new Request());
|
auto proxyRequest = std::make_shared<Request>();
|
||||||
CPPUNIT_ASSERT(proxyRequest->setUri("http://localhost:9000"));
|
CPPUNIT_ASSERT(proxyRequest->setUri("http://localhost:9000"));
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
|
@ -636,13 +636,13 @@ void HttpRequestTest::testCreateProxyRequest()
|
||||||
|
|
||||||
void HttpRequestTest::testIsRangeSatisfied()
|
void HttpRequestTest::testIsRangeSatisfied()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->supportsPersistentConnection(true);
|
request->supportsPersistentConnection(true);
|
||||||
request->setUri("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
||||||
request->setPipeliningHint(false); // default: false
|
request->setPipeliningHint(false); // default: false
|
||||||
std::shared_ptr<Piece> p(new Piece(0, 1024*1024));
|
auto p = std::make_shared<Piece>(0, 1024*1024);
|
||||||
std::shared_ptr<Segment> segment(new PiecedSegment(1024*1024, p));
|
auto segment = std::make_shared<PiecedSegment>(1024*1024, p);
|
||||||
std::shared_ptr<FileEntry> fileEntry(new FileEntry("file", 0, 0));
|
auto fileEntry = std::make_shared<FileEntry>("file", 0, 0);
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
|
|
||||||
|
@ -699,7 +699,7 @@ void HttpRequestTest::testIsRangeSatisfied()
|
||||||
|
|
||||||
void HttpRequestTest::testUserAgent()
|
void HttpRequestTest::testUserAgent()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost:8080/archives/aria2-1.0.0.tar.bz2");
|
||||||
|
|
||||||
//std::shared_ptr<Piece> p(new Piece(0, 1024));
|
//std::shared_ptr<Piece> p(new Piece(0, 1024));
|
||||||
|
@ -710,7 +710,8 @@ void HttpRequestTest::testUserAgent()
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
//httpRequest.setSegment(segment);
|
//httpRequest.setSegment(segment);
|
||||||
httpRequest.setUserAgent("aria2 (Linux)");
|
httpRequest.setUserAgent("aria2 (Linux)");
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
|
|
||||||
std::string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
|
std::string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
|
||||||
"User-Agent: aria2 (Linux)\r\n"
|
"User-Agent: aria2 (Linux)\r\n"
|
||||||
|
@ -723,7 +724,7 @@ void HttpRequestTest::testUserAgent()
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
|
CPPUNIT_ASSERT_EQUAL(expectedText, httpRequest.createRequest());
|
||||||
|
|
||||||
std::shared_ptr<Request> proxyRequest(new Request());
|
auto proxyRequest = std::make_shared<Request>();
|
||||||
CPPUNIT_ASSERT(proxyRequest->setUri("http://localhost:9000"));
|
CPPUNIT_ASSERT(proxyRequest->setUri("http://localhost:9000"));
|
||||||
|
|
||||||
httpRequest.setProxyRequest(proxyRequest);
|
httpRequest.setProxyRequest(proxyRequest);
|
||||||
|
@ -739,13 +740,14 @@ void HttpRequestTest::testUserAgent()
|
||||||
|
|
||||||
void HttpRequestTest::testAddHeader()
|
void HttpRequestTest::testAddHeader()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.disableContentEncoding();
|
httpRequest.disableContentEncoding();
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
httpRequest.addHeader("X-ARIA2: v0.13\nX-ARIA2-DISTRIBUTE: enabled\n");
|
httpRequest.addHeader("X-ARIA2: v0.13\nX-ARIA2-DISTRIBUTE: enabled\n");
|
||||||
httpRequest.addHeader("Accept: text/html");
|
httpRequest.addHeader("Accept: text/html");
|
||||||
std::string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
|
std::string expectedText = "GET /archives/aria2-1.0.0.tar.bz2 HTTP/1.1\r\n"
|
||||||
|
@ -764,13 +766,14 @@ void HttpRequestTest::testAddHeader()
|
||||||
|
|
||||||
void HttpRequestTest::testAcceptMetalink()
|
void HttpRequestTest::testAcceptMetalink()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.disableContentEncoding();
|
httpRequest.disableContentEncoding();
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
httpRequest.setAcceptMetalink(true);
|
httpRequest.setAcceptMetalink(true);
|
||||||
|
|
||||||
std::string expectedText =
|
std::string expectedText =
|
||||||
|
@ -788,12 +791,13 @@ void HttpRequestTest::testAcceptMetalink()
|
||||||
|
|
||||||
void HttpRequestTest::testEnableAcceptEncoding()
|
void HttpRequestTest::testEnableAcceptEncoding()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
request->setUri("http://localhost/archives/aria2-1.0.0.tar.bz2");
|
||||||
|
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
|
|
||||||
std::string acceptEncodings;
|
std::string acceptEncodings;
|
||||||
#ifdef HAVE_ZLIB
|
#ifdef HAVE_ZLIB
|
||||||
|
@ -829,16 +833,17 @@ void HttpRequestTest::testEnableAcceptEncoding()
|
||||||
|
|
||||||
void HttpRequestTest::testCreateRequest_ipv6LiteralAddr()
|
void HttpRequestTest::testCreateRequest_ipv6LiteralAddr()
|
||||||
{
|
{
|
||||||
std::shared_ptr<Request> request(new Request());
|
auto request = std::make_shared<Request>();
|
||||||
request->setUri("http://[::1]/path");
|
request->setUri("http://[::1]/path");
|
||||||
HttpRequest httpRequest;
|
HttpRequest httpRequest;
|
||||||
httpRequest.disableContentEncoding();
|
httpRequest.disableContentEncoding();
|
||||||
httpRequest.setRequest(request);
|
httpRequest.setRequest(request);
|
||||||
httpRequest.setAuthConfigFactory(authConfigFactory_, option_.get());
|
httpRequest.setAuthConfigFactory(authConfigFactory_.get());
|
||||||
|
httpRequest.setOption(option_.get());
|
||||||
|
|
||||||
CPPUNIT_ASSERT(httpRequest.createRequest().find("Host: [::1]") != std::string::npos);
|
CPPUNIT_ASSERT(httpRequest.createRequest().find("Host: [::1]") != std::string::npos);
|
||||||
|
|
||||||
std::shared_ptr<Request> proxy(new Request());
|
auto proxy = std::make_shared<Request>();
|
||||||
proxy->setUri("http://proxy");
|
proxy->setUri("http://proxy");
|
||||||
httpRequest.setProxyRequest(proxy);
|
httpRequest.setProxyRequest(proxy);
|
||||||
std::string proxyRequest = httpRequest.createProxyRequest();
|
std::string proxyRequest = httpRequest.createProxyRequest();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue