*
* oss_operator.h: OSS Operator used by Backup/Restore manager.
*
* Portions Copyright (c) 2020 Huawei Technologies Co.,Ltd.
* Portions Copyright (c) 2009-2013, NIPPON TELEGRAPH AND TELEPHONE CORPORATION
* Portions Copyright (c) 2015-2018, Postgres Professional
*
*-------------------------------------------------------------------------
*/
#ifndef OSS_OPERATOR_H
#define OSS_OPERATOR_H
#include "stddef.h"
#include <iostream>
#include <memory>
#include <vector>
#include "../../parray.h"
#define OSS_MAX_UPLOAD_ID_LEN 256
#define OSS_MAX_FILE_PATH 1024
#define OSS_MAX_ETAG_LEN 256
namespace Oss {
using namespace std;
using SDKOptions = void *;
using S3Client = void *;
class Oss {
public:
Oss(const char* endpoint, const char* access_key, const char* secret_key, const char* region = NULL, bool secure = false);
~Oss();
void GetObject(const char* bucket_name, const char* object_name, const char* file_name, bool errorOk = false);
void GetObject(const char* from_bucket, const char* object_key, void* file);
void PutObject(const char* bucket_name, const char* file_path, const char* file_name);
void RemoveObject(const char* bucket_name, const char* objcet_key);
void ListObjects(char* bucket_name, parray* objects);
void ListObjectsWithPrefix(char* bucket_name, char* prefix, parray* objects);
void MakeBucket(char* bucket_name);
void ListBuckets(parray* buckets);
bool ObjectExists(char* bucket_name, char* object_name);
bool BucketExists(char* bucket_name);
void RemoveBucket(char* bucket_name);
void StartMultipartUpload(char* bucket_name, char* object_name);
void MultipartUpload(char* bucket_name, char* object_name, char* data, size_t data_size);
void CompleteMultipartUploadRequest(char* bucket_name, char* object_name);
private:
const string kEndpoint;
const string kAccessKey;
const string kSecretKey;
const bool kSecure;
string kRegion;
void* completePartVector;
string UploadId;
int partNumber;
SDKOptions options_;
S3Client s3_client_;
};
}
extern void parseBackupControlFilePath(const char* path, char** bucket_name, char** object_name);
extern char* getBucketName();
extern char* getPrefixName(void* backup);
extern Oss::Oss* getOssClient();
#endif