1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
// --------------------------------------------------------------------------
//
// File
// Name: S3Client.h
// Purpose: Amazon S3 client helper implementation class
// Created: 09/01/2009
//
// --------------------------------------------------------------------------
#ifndef S3CLIENT__H
#define S3CLIENT__H
#include <string>
#include <map>
#include "HTTPRequest.h"
#include "SocketStream.h"
class HTTPResponse;
class HTTPServer;
class IOStream;
// --------------------------------------------------------------------------
//
// Class
// Name: S3Client
// Purpose: Amazon S3 client helper implementation class
// Created: 09/01/2009
//
// --------------------------------------------------------------------------
class S3Client
{
public:
S3Client(HTTPServer* pSimulator, const std::string& rHostName,
const std::string& rAccessKey, const std::string& rSecretKey)
: mpSimulator(pSimulator),
mHostName(rHostName),
mAccessKey(rAccessKey),
mSecretKey(rSecretKey),
mNetworkTimeout(30000)
{ }
S3Client(std::string HostName, int Port, const std::string& rAccessKey,
const std::string& rSecretKey)
: mpSimulator(NULL),
mHostName(HostName),
mPort(Port),
mAccessKey(rAccessKey),
mSecretKey(rSecretKey),
mNetworkTimeout(30000)
{ }
HTTPResponse GetObject(const std::string& rObjectURI);
HTTPResponse HeadObject(const std::string& rObjectURI);
HTTPResponse PutObject(const std::string& rObjectURI,
IOStream& rStreamToSend, const char* pContentType = NULL);
void CheckResponse(const HTTPResponse& response, const std::string& message) const;
int GetNetworkTimeout() const { return mNetworkTimeout; }
private:
HTTPServer* mpSimulator;
std::string mHostName;
int mPort;
std::auto_ptr<SocketStream> mapClientSocket;
std::string mAccessKey, mSecretKey;
int mNetworkTimeout; // milliseconds
HTTPResponse FinishAndSendRequest(HTTPRequest::Method Method,
const std::string& rRequestURI,
IOStream* pStreamToSend = NULL,
const char* pStreamContentType = NULL);
HTTPResponse SendRequest(HTTPRequest& rRequest,
IOStream* pStreamToSend = NULL,
const char* pStreamContentType = NULL);
};
#endif // S3CLIENT__H
|