#include "TosClientV2.h"
using namespace VolcengineTos;
static void ProgressCallback(std::shared_ptr<DataTransferStatus> datatransferstatus) {
int64_t consumedBytes = datatransferstatus->consumedBytes_;
int64_t totalBytes = datatransferstatus->totalBytes_;
int64_t rwOnceBytes = datatransferstatus->rwOnceBytes_;
DataTransferType type = datatransferstatus->type_;
int64_t rate = 100 * consumedBytes / totalBytes;
std::cout << "rate:" << rate << ","
<< "ConsumedBytes:" << consumedBytes << ","
<< "totalBytes:" << totalBytes << ","
<< "rwOnceBytes:" << rwOnceBytes << ","
<< "DataTransferType:" << type << 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";
TosClientV2 client(region, accessKey, secretKey);
GetObjectV2Input input(bucketName, objectName);
input.setRangeEnd(1000);
DataTransferListener processHandler = {ProgressCallback, nullptr};
input.setDataTransferListener(processHandler);
auto output = client.getObject(input);
if (!output.isSuccess()) {
std::cout << "GetObject failed." << output.error().String() << std::endl;
std::cout << "GetObject success. the object etag:" << output.result().getETags() << std::endl;