/* */ #ifndef _D_HTTP_RESPONSE_H_ #define _D_HTTP_RESPONSE_H_ #include "common.h" #include "HttpRequest.h" #include "HttpHeader.h" #include "TransferEncoding.h" #include "LogFactory.h" #include "DlAbortEx.h" #include "DlRetryEx.h" class HttpResponse { private: int32_t cuid; int32_t status; HttpRequestHandle httpRequest; HttpHeaderHandle httpHeader; const Logger* logger; public: HttpResponse():cuid(0), status(0), httpRequest(0), httpHeader(0), logger(LogFactory::getInstance()) {} ~HttpResponse() {} void validateResponse() const throw(DlAbortEx*, DlRetryEx*); /** * Returns filename. * If content-disposition header is privided in response header, * this function returns the filename from it. * If it is not there, returns the part of filename from the request URL. */ string determinFilename() const; void retrieveCookie(); /** * Returns true if the response header indicates redirection. */ bool isRedirect() const; void processRedirect(); string getRedirectURI() const; bool isTransferEncodingSpecified() const; string getTransferEncoding() const; TransferEncodingHandle getTransferDecoder() const; int64_t getContentLength() const; int64_t getEntityLength() const; void setHttpHeader(const HttpHeaderHandle& httpHeader) { this->httpHeader = httpHeader; } HttpHeaderHandle getHttpHeader() const { return httpHeader; } void setStatus(int32_t status) { this->status = status; } int32_t getStatus() const { return status; } void setHttpRequest(const HttpRequestHandle& httpRequest) { this->httpRequest = httpRequest; } HttpRequestHandle getHttpRequest() const { return httpRequest; } void setCuid(int32_t cuid) { this->cuid = cuid; } }; typedef SharedHandle HttpResponseHandle; #endif // _D_HTTP_RESPONSE_H_