/* WebDownloader for X-Window
* Copyright (C) 1999-2002 Koshelev Maxim
* This Program is free but not GPL!!! You can't modify it
* without agreement with author. You can't distribute modified
* program but you can distribute unmodified program.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#ifndef HTTP_DOWNLOADER
#define HTTP_DOWNLOADER
#include "download.h"
#include "http.h"
#include "liststr.h"
struct d4xContentDisposition{
time_t c_date,m_date,r_date;
fsize_t size;
tPStr filename;
d4xContentDisposition();
d4xContentDisposition(char *httpstr);
~d4xContentDisposition();
private:
int get_code(char *name);
char *get_value(char *name);
char *get_name(char *name);
};
class tHttpDownload:public tDownloader{
protected:
tHttpClient *HTTP;
tStringList *answer;
int ReGet,MustNoReget,ETagChanged,Persistent;
d4xContentDisposition *content_disp;
char *content_type;
std::string REQUESTED_URL;
char *ETag,*OldETag,*Auth;
fsize_t analize_answer();
std::string make_name();
virtual void print_error(int error_code);
public:
tHttpDownload();
tHttpDownload(tWriterLoger *log);
void pass_first_segment();
int reconnect();
int init(const d4x::URL &hostinfo,tCfg *cfg,d4x::SocketPtr s=d4x::SocketPtr());
fsize_t get_size();
fsize_t get_size_only();
fsize_t get_readed();
fsize_t another_way_get_size();
int get_child_status();
char *get_new_url();
int reget();
char *get_content_type();
d4xContentDisposition *get_content_disp();
tStringList *dir();
int download(fsize_t len);
void make_full_pathes(const char *path,const char *another_name,char **name,char **guess);
void make_full_pathes(const char *path,char **name,char **guess);
void done();
int persistent();
d4x::SocketPtr export_ctrl_socket();
~tHttpDownload();
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1