Files
cos-cpp-sdk-v5/include/op/cos_result.h
a158 3cf88acc07 BG
2026-04-05 20:22:11 +08:00

126 lines
3.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Copyright (c) 2017, Tencent Inc.
// All rights reserved.
//
// Author: sevenyou <sevenyou@tencent.com>
// Created: 07/25/17
// Description:
#ifndef COS_RESULT_H
#define COS_RESULT_H
#pragma once
#include <map>
#include <string>
namespace qcloud_cos {
// 封装HTTP状态码3XX4XX5XX 的返回结果
// 详见官网链接: https://www.qcloud.com/document/product/436/7730
class CosResult {
public:
CosResult()
: m_is_succ(false),
m_http_status(-1),
m_err_code(""),
m_err_msg(""),
m_resource_addr(""),
m_x_cos_request_id(""),
m_x_cos_trace_id("") {}
~CosResult() {}
CosResult(const CosResult& other) {
m_is_succ = other.m_is_succ;
m_http_status = other.m_http_status;
m_err_code = other.m_err_code;
m_err_msg = other.m_err_msg;
m_resource_addr = other.m_resource_addr;
m_x_cos_request_id = other.m_x_cos_request_id;
m_x_cos_trace_id = other.m_x_cos_trace_id;
m_real_byte = other.m_real_byte;
}
CosResult& operator=(const CosResult& other) {
if (this != &other) {
m_is_succ = other.m_is_succ;
m_http_status = other.m_http_status;
m_err_code = other.m_err_code;
m_err_msg = other.m_err_msg;
m_resource_addr = other.m_resource_addr;
m_x_cos_request_id = other.m_x_cos_request_id;
m_x_cos_trace_id = other.m_x_cos_trace_id;
m_real_byte = other.m_real_byte;
}
return *this;
}
bool IsSucc() const { return m_is_succ; }
void SetSucc() { m_is_succ = true; }
void SetFail() { m_is_succ = false; }
void Clear() {
m_is_succ = false;
m_http_status = -1;
m_err_code = "";
m_err_msg = "";
m_resource_addr = "";
m_x_cos_request_id = "";
m_x_cos_trace_id = "";
}
// 解析xml string
bool ParseFromHttpResponse(const std::map<std::string, std::string>& headers,
const std::string& body);
// Getter
int GetHttpStatus() const { return m_http_status; }
std::string GetErrorCode() const { return m_err_code; }
std::string GetErrorMsg() const { return m_err_msg; }
std::string GetResourceAddr() const { return m_resource_addr; }
std::string GetXCosRequestId() const { return m_x_cos_request_id; }
std::string GetXCosTraceId() const { return m_x_cos_trace_id; }
std::string GetXCosServerTime() const { return m_x_cos_server_time; }
uint64_t GetRealByte() const { return m_real_byte; }
// Setter
void SetHttpStatus(int http_status) { m_http_status = http_status; }
void SetErrorCode(const std::string& err_code) { m_err_code = err_code; }
void SetErrorMsg(const std::string& err_msg) { m_err_msg = err_msg; }
void SetResourceAddr(const std::string& resource_addr) {
m_resource_addr = resource_addr;
}
void SetXCosRequestId(const std::string& x_cos_request_id) {
m_x_cos_request_id = x_cos_request_id;
}
void SetXCosTraceId(const std::string& x_cos_trace_id) {
m_x_cos_trace_id = x_cos_trace_id;
}
void SetRealByte(uint64_t real_byte) { m_real_byte = real_byte; }
/// \brief 输出Result的具体信息
std::string DebugString() const;
std::string GetInitMpRequestId() const { return m_init_mp_request_id; }
void SetInitMpRequestId(const std::string& request_id) {
m_init_mp_request_id = request_id;
}
private:
bool m_is_succ; // 标识HTTP调用是否成功
int m_http_status; // http状态码
// COS返回的错误信息
std::string m_err_code;
std::string m_err_msg;
std::string m_resource_addr;
std::string m_x_cos_request_id;
std::string m_x_cos_trace_id;
std::string m_x_cos_server_time;
uint64_t m_real_byte;
// MultiUploadObject接口中封装了init mp/upload part/complete该成员保存init
// mp的request id 如果是断点续传则该reqeust id为空
std::string m_init_mp_request_id;
};
} // namespace qcloud_cos
#endif // COS_RESULT_H