#ifndef ROOT_THTTPMessage
#define ROOT_THTTPMessage
#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TString
#include "TString.h"
#endif
enum EHTTP_Verb {
kGET,
kPOST,
kPUT,
kDELETE,
kHEAD,
kCOPY
};
class THTTPMessage : public TObject{
private:
enum EHTTP_Verb fVerb;
TString fPath;
TString fBucket;
TString fHost;
TString fDate;
TString fAuthPrefix;
TString fAccessId;
TString fAccessIdKey;
Bool_t fHasRange;
Long64_t fOffset;
Long64_t *fInitByte;
Int_t *fLen;
Int_t fNumBuf;
Int_t fCurrentBuf;
Int_t fLength;
TString fSignature;
protected:
TString Sign();
public:
THTTPMessage(EHTTP_Verb mverb, TString mpath, TString mbucket, TString mhost,
TString maprefix, TString maid, TString maidkey);
THTTPMessage(EHTTP_Verb mverb, TString mpath, TString mbucket, TString mhost,
TString maprefix, TString maid, TString maidkey, Long64_t offset, Long64_t *pos, Int_t *len, Int_t nbuf);
THTTPMessage() : fInitByte(0), fLen(0) { }
virtual ~THTTPMessage() { }
THTTPMessage &operator=(const THTTPMessage& rhs);
EHTTP_Verb GetHTTPVerb() const { return fVerb; }
TString GetPath() const { return fPath; }
TString GetBucket() const { return fBucket; }
TString GetHost() const { return fHost; }
TString GetDatime() const { return fDate; }
TString GetAuthPrefix() const { return fAuthPrefix; }
TString GetAccessId() const { return fAccessId; }
TString GetAccessIdKey() const { return fAccessIdKey; }
Long64_t GetOffset() const { return fOffset; }
Long64_t* GetInitByte() const { return fInitByte; }
Int_t* GetRangeLength() const { return fLen; }
Int_t GetCurrentBuffer() const { return fCurrentBuf; }
Int_t GetNumBuffers() const { return fNumBuf; }
Int_t GetLength() const { return fLength; }
TString GetSignature() const { return fSignature; }
Bool_t HasRange() const { return fHasRange; }
TString DatimeToTString() const;
TString HTTPVerbToTString() const;
TString CreateHead() const;
TString CreateHost() const;
TString CreateDate() const;
TString CreateAuth() const;
TString GetRequest();
ClassDef(THTTPMessage, 0)
};
#endif