00001 #ifndef X_GDSNARFCOMMON_H
00002 #define X_GDSNARFCOMMON_H
00003
00004 #include "garg.h"
00005 #include "gfile.h"
00006 #include "gnet.h"
00007 #include "gtime.h"
00008 #include "gcalendar.h"
00009 #include "gweb.h"
00010 #include "ghttp.h"
00011 #include "gstringext.h"
00012
00013 #include "gHtmlOpt.h"
00014
00015
00016 class gdOptUnweb : public gList {
00017 public:
00018 gdOptUnweb ()
00019 : fDump( stdout ),
00020 fTemp( nil ) {
00021 }
00022 ~gdOptUnweb () {
00023 delete fTemp;
00024 if ( DumpStreamWasOpened() ) fclose( fDump );
00025 }
00026
00027
00028 gHtmlOpt htmlOpt;
00029
00030 FILE* fDump;
00031 gFileTemp* fTemp;
00032
00033
00034 virtual bool DumpStreamWasOpened () {
00035 return fDump!=nil && fDump!=stdout && fDump!=stderr;
00036 }
00037
00038 virtual FILE* DumpStream () ;
00039
00040 private:
00041
00042 gdOptUnweb (gdOptUnweb& ) ;
00043 gdOptUnweb& operator= (gdOptUnweb& ) ;
00044 };
00045
00046 struct sOptProxy {
00047 sOptProxy ()
00048 : port( 0 ) {
00049 }
00050 gString sHost;
00051 t_gPort port;
00052
00053 bool IsValid () {
00054 return sHost.IsEmpty()==false && port>0;
00055 }
00056
00057 void Reset () {
00058 sHost.SetEmpty();
00059 port = 0;
00060 }
00061 };
00062
00063 struct sOptSnarf {
00064 sOptSnarf ()
00065 : isVerbose( false ),
00066 isVeryVerbose( false ),
00067 doDosMode( false ),
00068 doView( false ),
00069 doUnweb( false ),
00070 doShowStats( false ),
00071 doError4NotFound( false ),
00072 myPort( 80 ),
00073 myURI( gURI::e_http ),
00074 myProto( (char*)"1.1" ),
00075 unwebOpt( nil ),
00076 fOut( stdout ),
00077 readOctets( 0 ),
00078 nStat( -1 ),
00079 resultURI( gURI::e_http ) {
00080 }
00081 ~sOptSnarf () ;
00082
00083 bool isVerbose, isVeryVerbose;
00084 bool doDosMode;
00085 bool doView;
00086 bool doUnweb;
00087 bool doShowStats;
00088 bool doError4NotFound;
00089 t_gPort myPort;
00090
00091 gURI myURI;
00092 gString myProto;
00093 gString myProxy;
00094 gString sOutFileName;
00095 gString sFileDumpReply;
00096
00097 gdOptUnweb* unwebOpt;
00098 FILE* fOut;
00099 t_uint32 readOctets;
00100 short nStat;
00101 gUInt vStat[10];
00102
00103 gURI resultURI;
00104
00105
00106 bool HasSpecURI () ;
00107
00108 bool HasProxy () {
00109 return myProxy.IsEmpty()==false;
00110 }
00111 t_uint32 GetInOctets () {
00112 return readOctets;
00113 }
00114 gString& GetProxy () {
00115 return myProxy;
00116 }
00117
00118 char* NewLine () {
00119 return (char*)(doDosMode ? "\r\n" : "\n");
00120 }
00121
00122 FILE* OutStream () ;
00123
00124 bool OutStreamWasOpened () {
00125 return fOut!=nil && fOut!=stdout && fOut!=stderr;
00126 }
00127
00128 gdOptUnweb& UnwebOpt () ;
00129
00130
00131
00132
00133
00134
00135 int ShowStats (FILE* fStat, gTimerTic& tic, t_gTicElapsed cpuTics) ;
00136
00137
00138 int GoCmdHttp (gURI& aURI) ;
00139 };
00140
00141 #endif //X_GDSNARFCOMMON_H
00142