#include "TosClientV2.h"
using namespace VolcengineTos;
static void UploadCallBack(std::shared_ptr<UploadEvent> event) {
UploadEventType type_ = event->type_;
bool error_ = event->error_;
std::string bucket_ = event->bucket_;
std::string key_ = event->key_;
std::string fileInfo = bucket_ + key_;
std::shared_ptr<std::string> uploadId_ = event->uploadId_;
std::shared_ptr<std::string> checkpointFile_ = event->checkpointFile_;
std::shared_ptr<UploadPartInfo> uploadPartInfo_ = event->uploadPartInfo_;
std::string uploadPartInfo = "";
if (uploadPartInfo_ != nullptr) {
uploadPartInfo = std::to_string(uploadPartInfo_->partSize_) + "," + std::to_string(uploadPartInfo_->offset_) +
"," + std::to_string(uploadPartInfo_->partNumber_) + "," + *(uploadPartInfo_->eTag_) + "," +
std::to_string(*(uploadPartInfo_->hashCrc64ecma_));
std::cout << "type:" << type_ << ","
<< "error:"<< error_ << ","
<< "fileInfo:" << fileInfo << ","
<< "checkpointFile:" << *checkpointFile_ << ","
<< "uploadId:" << *uploadId_ << ","
<< "uploadPartInf:" << uploadPartInfo << std::endl;
std::string region = "Your Region";
std::string accessKey = std::getenv("TOS_ACCESS_KEY");
std::string secretKey = std::getenv("TOS_SECRET_KEY");
std::string bucketName = "examplebucket";
std::string objectName = "exampledir/exampleobject.txt";
std::string filePath = "/localpath/examplefile.txt";
std::string CheckpointFilePath = "yourCheckpointFilepath";
TosClientV2 client(region, accessKey, secretKey);
UploadFileV2Input input(bucketName, objectName);
input.setEnableCheckpoint(true);
input.setPartSize(20 * 1024 * 1024);
input.setFilePath(filePath);
UploadEventListener uploadHandler = {UploadCallBack};
input.setUploadEventListener(uploadHandler);
auto output = client.uploadFile(input);
if (!output.isSuccess()) {
std::cout << "UploadFile failed." << output.error().String() << std::endl;
std::cout << "UploadFile success. object etag is: " << output.result().getETag() << std::endl;