00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00018
00019 #ifndef NET_INSTAWEB_HTTP_PUBLIC_HTTP_DUMP_URL_WRITER_H_
00020 #define NET_INSTAWEB_HTTP_PUBLIC_HTTP_DUMP_URL_WRITER_H_
00021
00022 #include "net/instaweb/http/public/http_dump_url_fetcher.h"
00023 #include "net/instaweb/http/public/url_fetcher.h"
00024 #include "net/instaweb/util/public/basictypes.h"
00025 #include "net/instaweb/util/public/string.h"
00026 #include "net/instaweb/util/public/string_util.h"
00027
00028 namespace net_instaweb {
00029
00030 class FileSystem;
00031 class MessageHandler;
00032 class RequestHeaders;
00033 class ResponseHeaders;
00034 class Timer;
00035 class Writer;
00036
00041 class HttpDumpUrlWriter : public UrlFetcher {
00042 public:
00043 HttpDumpUrlWriter(const StringPiece& root_dir, UrlFetcher* base_fetcher,
00044 FileSystem* file_system, Timer* timer)
00045 : dump_fetcher_(root_dir, file_system, timer),
00046 base_fetcher_(base_fetcher),
00047 file_system_(file_system),
00048 accept_gzip_(true) {
00049 root_dir.CopyToString(&root_dir_);
00050 }
00051 virtual ~HttpDumpUrlWriter();
00052
00054 virtual bool StreamingFetchUrl(const GoogleString& url,
00055 const RequestHeaders& request_headers,
00056 ResponseHeaders* response_headers,
00057 Writer* response_writer,
00058 MessageHandler* message_handler);
00059
00063 void set_accept_gzip(bool x) { accept_gzip_ = x; }
00064
00066 void set_print_urls(bool on) { dump_fetcher_.set_print_urls(on); }
00067
00068 private:
00069 HttpDumpUrlFetcher dump_fetcher_;
00070 UrlFetcher* base_fetcher_;
00071 GoogleString root_dir_;
00072 FileSystem* file_system_;
00073 bool accept_gzip_;
00074
00075 DISALLOW_COPY_AND_ASSIGN(HttpDumpUrlWriter);
00076 };
00077
00078 }
00079
00080 #endif ///< NET_INSTAWEB_HTTP_PUBLIC_HTTP_DUMP_URL_WRITER_H_