1 /*
2  * Copyright 2009-2017 Alibaba Cloud All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 #include <alibabacloud/oss/model/Bucket.h>
19 #include <vector>
20 #include <memory>
21 #include <iostream>
22 #include <alibabacloud/oss/OssResult.h>
23 #include <alibabacloud/oss/model/Owner.h>
24 
25 namespace AlibabaCloud
26 {
27 namespace OSS
28 {
29     class ListObjectVersionsResult;
30     class ALIBABACLOUD_OSS_EXPORT ObjectVersionSummary
31     {
32     public:
33         ObjectVersionSummary() = default;
Key()34         const std::string& Key() const { return key_; }
VersionId()35         const std::string& VersionId() const { return versionid_; }
ETag()36         const std::string& ETag()const { return eTag_; }
LastModified()37         const std::string& LastModified() const { return lastModified_; }
StorageClass()38         const std::string& StorageClass() const { return storageClass_; }
Type()39         const std::string& Type() const { return type_; }
Size()40         int64_t Size() const { return size_; }
IsLatest()41         bool IsLatest() const { return isLatest_; }
Owner()42         const AlibabaCloud::OSS::Owner& Owner() const { return owner_; }
43     private:
44         friend class ListObjectVersionsResult;
45         std::string key_;
46         std::string versionid_;
47         std::string eTag_;
48         std::string lastModified_;
49         std::string storageClass_;
50         std::string type_;
51         int64_t size_;
52         bool isLatest_;
53         AlibabaCloud::OSS::Owner owner_;
54     };
55     using ObjectVersionSummaryList = std::vector<ObjectVersionSummary>;
56 
57     class ALIBABACLOUD_OSS_EXPORT DeleteMarkerSummary
58     {
59     public:
60         DeleteMarkerSummary() = default;
Key()61         const std::string& Key() const { return key_; }
VersionId()62         const std::string& VersionId() const { return versionid_; }
LastModified()63         const std::string& LastModified() const { return lastModified_; }
IsLatest()64         bool IsLatest() const { return isLatest_; }
Owner()65         const AlibabaCloud::OSS::Owner& Owner() const { return owner_; }
66     private:
67         friend class ListObjectVersionsResult;
68         std::string key_;
69         std::string versionid_;
70         std::string lastModified_;
71         bool isLatest_;
72         AlibabaCloud::OSS::Owner owner_;
73     };
74     using DeleteMarkerSummaryList = std::vector<DeleteMarkerSummary>;
75 
76     class ALIBABACLOUD_OSS_EXPORT ListObjectVersionsResult : public OssResult
77     {
78     public:
79         ListObjectVersionsResult();
80         ListObjectVersionsResult(const std::string& data);
81         ListObjectVersionsResult(const std::shared_ptr<std::iostream>& data);
82         ListObjectVersionsResult& operator=(const std::string& data);
Name()83         const std::string& Name() const { return name_; }
Prefix()84         const std::string& Prefix() const { return prefix_; }
KeyMarker()85         const std::string& KeyMarker() const { return keyMarker_; }
NextKeyMarker()86         const std::string& NextKeyMarker() const { return nextKeyMarker_; }
VersionIdMarker()87         const std::string& VersionIdMarker() const { return versionIdMarker_; }
NextVersionIdMarker()88         const std::string& NextVersionIdMarker() const { return nextVersionIdMarker_; }
Delimiter()89         const std::string& Delimiter() const { return delimiter_; }
EncodingType()90         const std::string& EncodingType() const { return encodingType_; }
MaxKeys()91         int MaxKeys() const { return maxKeys_; }
IsTruncated()92         bool IsTruncated() const { return isTruncated_; }
CommonPrefixes()93         const CommonPrefixeList& CommonPrefixes() const { return commonPrefixes_; }
ObjectVersionSummarys()94         const ObjectVersionSummaryList& ObjectVersionSummarys() const { return objectVersionSummarys_; }
DeleteMarkerSummarys()95         const DeleteMarkerSummaryList& DeleteMarkerSummarys() const { return deleteMarkerSummarys_; }
96     private:
97         std::string name_;
98         std::string prefix_;
99         std::string keyMarker_;
100         std::string nextKeyMarker_;
101         std::string versionIdMarker_;
102         std::string nextVersionIdMarker_;
103         std::string delimiter_;
104         std::string encodingType_;
105         bool        isTruncated_;
106         int         maxKeys_;
107         CommonPrefixeList commonPrefixes_;
108         ObjectVersionSummaryList objectVersionSummarys_;
109         DeleteMarkerSummaryList deleteMarkerSummarys_;
110     };
111 }
112 }
113