#pragma once #include #include #include #include "rapidxml/1.13/rapidxml.hpp" #include "rapidxml/1.13/rapidxml_print.hpp" #include "rapidxml/1.13/rapidxml_utils.hpp" #include "request/data_process_req.h" #include "response/object_resp.h" namespace qcloud_cos { class ImageRespBase : virtual public BaseResp { public: ImageRespBase() {} virtual ~ImageRespBase() {} virtual bool ParseFromXmlString(const std::string& body); UploadResult GetUploadResult() const { return m_upload_result; } static bool ParseObject(rapidxml::xml_node<>* root, Object& object); static bool ParseQRcodeInfo(rapidxml::xml_node<>* root, QRcodeInfo& qr_code); protected: bool ParseOriginalInfo(rapidxml::xml_node<>* root); UploadResult m_upload_result; }; class PutImageByFileResp : public ImageRespBase, public PutObjectByFileResp { public: PutImageByFileResp() {} virtual ~PutImageByFileResp() {} }; class CloudImageProcessResp : public ImageRespBase { public: CloudImageProcessResp() {} virtual ~CloudImageProcessResp() {} }; class GetQRcodeResp : public BaseResp { public: GetQRcodeResp() {} virtual ~GetQRcodeResp() {} virtual bool ParseFromXmlString(const std::string& body); GetQRcodeResult GetResult() const { return m_result; } private: GetQRcodeResult m_result; }; class DescribeDocProcessBucketsResp : public BaseResp { public: DescribeDocProcessBucketsResp() {} virtual ~DescribeDocProcessBucketsResp() {} virtual bool ParseFromXmlString(const std::string& body); DocBucketResponse GetResult() const { return m_result; } private: bool ParseDocBucketList(rapidxml::xml_node<>* root, DocBucketList& bucket_list); DocBucketResponse m_result; }; class DocPreviewResp : public GetObjectByFileResp { public: DocPreviewResp() {} virtual ~DocPreviewResp() {} void ParseFromHeaders(const std::map& headers); // 返回文档总页数(表格文件表示当前 sheet 转换后的总图片数),异常时为空 int GetTotalPage() const { return m_x_total_page; } // 当异常时返回错误码 std::string GetErrNo() const { return m_x_errno; } // 返回文档中总表数 int GetTotalSheet() const { return m_x_total_sheet; } // 返回当前 sheet 名 std::string GetSheetName() const { return m_sheet_name; } private: int m_x_total_page; std::string m_x_errno; int m_x_total_sheet; std::string m_sheet_name; }; class DocProcessJobBase : public BaseResp { public: DocProcessJobBase() {} virtual ~DocProcessJobBase() {} virtual bool ParseFromXmlString(const std::string& body); JobsDetail GetJobsDetail() const { return m_jobs_detail; } protected: bool ParseJobsDetail(rapidxml::xml_node<>* root, JobsDetail& jobs_detail); bool ParseOperation(rapidxml::xml_node<>* root, Operation& operation); bool ParseDocProcess(rapidxml::xml_node<>* root, DocProcess& doc_process); bool ParseDocProcessResult(rapidxml::xml_node<>* root, DocProcessResult& doc_process_result); private: JobsDetail m_jobs_detail; }; class CreateDocProcessJobsResp : public DocProcessJobBase { public: CreateDocProcessJobsResp() {} virtual ~CreateDocProcessJobsResp() {} }; class DescribeDocProcessJobResp : public DocProcessJobBase { public: DescribeDocProcessJobResp() {} virtual ~DescribeDocProcessJobResp() {} }; class DescribeDocProcessJobsResp : public DocProcessJobBase { public: DescribeDocProcessJobsResp() {} virtual ~DescribeDocProcessJobsResp() {} virtual bool ParseFromXmlString(const std::string& body); std::vector GetJobsDetails() const { return m_jobs_details; } std::string GetNextToken() const { return m_next_token; } private: std::vector m_jobs_details; std::string m_next_token; }; class DocProcessQueueBase : public BaseResp { public: DocProcessQueueBase() {} virtual ~DocProcessQueueBase() {} protected: bool ParseNonExistPIDs(rapidxml::xml_node<>* root, NonExistPIDs& non_exist_pids); bool ParseQueueList(rapidxml::xml_node<>* root, QueueList& queue_list); }; class DescribeDocProcessQueuesResp : public DocProcessQueueBase { public: DescribeDocProcessQueuesResp() {} virtual ~DescribeDocProcessQueuesResp() {} virtual bool ParseFromXmlString(const std::string& body); int GetTotalCount() const { return m_total_count; } std::string GetRequestId() const { return m_request_id; } int GetPageNumber() const { return m_page_number; } int GetPageSize() const { return m_page_size; } QueueList GetQueueList() const { return m_queue_list; } NonExistPIDs GetNonExistPIDs() const { return m_non_exist_pids; } private: int m_total_count; std::string m_request_id; int m_page_number; int m_page_size; QueueList m_queue_list; NonExistPIDs m_non_exist_pids; }; class UpdateDocProcessQueueResp : public DocProcessQueueBase { public: UpdateDocProcessQueueResp() {} virtual ~UpdateDocProcessQueueResp() {} virtual bool ParseFromXmlString(const std::string& body); std::string GetRequestId() const { return m_request_id; } QueueList GetQueueList() const { return m_queue; } private: std::string m_request_id; QueueList m_queue; }; } // namespace qcloud_cos