162   TPMERegexp rex(
"^([a]?s3|s3http[s]?|gs|gshttp[s]?){1}://([^/]+)/([^/]+)/([^/].*)", 
"i");
 
  165      doMakeZombie = 
kTRUE;
 
  167   else if (!
ParseOptions(options, accessKey, secretKey, token)) {
 
  169      doMakeZombie = 
kTRUE;
 
  174      Error(
"TS3WebFile", 
"%s", (
const char*)errorMsg);
 
  192      (
const char*)rex[2], (
const char*)rex[3], (
const char*)rex[4]));
 
  197   const char* kAccessKeyEnv = 
"S3_ACCESS_KEY";
 
  198   const char* kSecretKeyEnv = 
"S3_SECRET_KEY";
 
  199   const char* kSessionToken = 
"S3_SESSION_TOKEN";
 
  202         accessKey, secretKey, token);
 
  218      if (rex[1].BeginsWith(
"gs"))
 
  236      Error(
"TS3WebFile", 
"could not find authentication info in "\
 
  237         "'options' argument and at least one of the environment variables '%s' or '%s' is not set",
 
  238         kAccessKeyEnv, kSecretKeyEnv);
 
  257   TString optStr = (
const char*)options;
 
  267   TPMERegexp rex_token(
"(^TOKEN=|^.* TOKEN=)([\\S]+)[\\s]*.*$", 
"i");
 
  268   if (rex_token.
Match(optStr) == 3) {
 
  269      token = rex_token[2];
 
  271   TPMERegexp rex(
"(^AUTH=|^.* AUTH=)([a-z0-9]+):([a-z0-9+/]+)[\\s]*.*$", 
"i");
 
  272   if (rex.
Match(optStr) == 4) {
 
  277      Info(
"ParseOptions", 
"using authentication information from 'options' argument");
 
  326         pos[i], pos[i] + 
len[i] - 1);
 
  349   if (rex.
Match(headerLine) != 2)
 
  356   TString serverId = rex[1].ReplaceAll(
"\r", 
"").ReplaceAll(
"\n", 
"");
 
  367                                         const char* tokenEnv, 
TString& outAccessKey,
 
  379      outAccessKey = accKey;
 
  380      outSecretKey = secKey;
 
  382         Info(
"GetCredentialsFromEnv", 
"using authentication information from environmental variables '%s' and '%s'",
 
  383            accessKeyEnv, secretKeyEnv);
 
  392      Warning(
"SetAuthKeys", 
"usage of S3_ACCESS_ID and S3_ACCESS_KEY environmental variables is deprecated.");
 
  393      Warning(
"SetAuthKeys", 
"please use S3_ACCESS_KEY and S3_SECRET_KEY environmental variables.");
 
  394      outAccessKey = accKey;
 
  395      outSecretKey = secKey;
 
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
R__EXTERN TSystem * gSystem
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
R__ALWAYS_INLINE Bool_t IsZombie() const
 
Wrapper for PCRE library (Perl Compatible Regular Expressions).
 
Int_t Match(const TString &s, UInt_t start=0)
Runs a match on s against the regex 'this' was created with.
 
TS3HTTPRequest & SetObjectKey(const TString &objectKey)
 
TString GetRequest(TS3HTTPRequest::EHTTPVerb httpVerb, Bool_t appendCRLF=kTRUE)
Returns the HTTP request ready to be sent to the server.
 
TS3HTTPRequest & SetAuthKeys(const TString &accessKey, const TString &secretKey)
 
TS3HTTPRequest & SetBucket(const TString &bucket)
 
TS3HTTPRequest & SetSessionToken(const TString &token)
 
TS3HTTPRequest & SetAuthType(TS3HTTPRequest::EAuthType authType)
 
TS3HTTPRequest & SetHost(const TString &host)
 
A TS3WebFile is a TWebFile which retrieves the file contents from a web server implementing the REST ...
 
TS3HTTPRequest fS3Request
 
Bool_t ReadBuffers(char *buf, Long64_t *pos, Int_t *len, Int_t nbuf) override
Read the nbuf blocks described in arrays pos and len.
 
Bool_t ParseOptions(Option_t *options, TString &accessKey, TString &secretKey, TString &token)
Extracts the S3 authentication key pair (access key and secret key) from the options.
 
void SetMsgReadBuffer10(const char *redirectLocation=nullptr, Bool_t tempRedirect=kFALSE) override
Overwrites TWebFile::SetMsgReadBuffer10() for setting the HTTP GET request compliant to the authentic...
 
Int_t GetHead() override
Overwrites TWebFile::GetHead() for retrieving the HTTP headers of this file.
 
void ProcessHttpHeader(const TString &headerLine) override
This method is called by the super-class TWebFile when a HTTP header for this file is retrieved.
 
Bool_t GetCredentialsFromEnv(const char *accessKeyEnv, const char *secretKeyEnv, const char *tokenEnv, TString &outAccessKey, TString &outSecretKey, TString &outToken)
Sets the access and secret keys from the environmental variables, if they are both set.
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
virtual const char * Getenv(const char *env)
Get environment variable.
 
void SetUrl(const char *url, Bool_t defaultIsFile=kFALSE)
Parse url character string and split in its different subcomponents.
 
const char * GetHost() const
 
virtual Int_t GetHead()
Get the HTTP header.
 
virtual void CheckProxy()
Check if shell var "http_proxy" has been set and should be used.
 
Bool_t ReadBuffers(char *buf, Long64_t *pos, Int_t *len, Int_t nbuf) override
Read specified byte ranges from remote file via HTTP daemon.
 
void Init(Bool_t readHeadOnly) override
Initialize a TWebFile object.
 
virtual Int_t GetFromWeb10(char *buf, Int_t len, const TString &msg, Int_t nseg=0, Long64_t *seg_pos=nullptr, Int_t *seg_len=nullptr)
Read multiple byte range request from web server.
 
virtual void SetMsgReadBuffer10(const char *redirectLocation=nullptr, Bool_t tempRedirect=kFALSE)
Set GET command for use by ReadBuffer(s)10(), handle redirection if needed.