HttpRequest: Store non-owning raw pointer for authConfigFactory_

This commit is contained in:
Tatsuhiro Tsujikawa 2013-06-25 22:06:29 +09:00
parent 6bcf33a69e
commit 4803482a51
7 changed files with 105 additions and 98 deletions

View file

@ -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)

View file

@ -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);

View file

@ -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;
} }

View file

@ -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

View file

@ -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);

View file

@ -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));

View file

@ -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();