首次推送
This commit is contained in:
135
COSXML/Model/Tag/AccessControlPolicy.cs
Normal file
135
COSXML/Model/Tag/AccessControlPolicy.cs
Normal file
@@ -0,0 +1,135 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/2/2018 9:48:29 PM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/7733"/>
|
||||
/// </summary>
|
||||
public sealed class AccessControlPolicy
|
||||
{
|
||||
/// <summary>
|
||||
/// Bucket 持有者信息
|
||||
/// <see cref="Owner"/>
|
||||
/// </summary>
|
||||
public Owner owner;
|
||||
/// <summary>
|
||||
/// 被授权者信息与权限信息
|
||||
/// <see cref="AccessControlList"/>
|
||||
/// </summary>
|
||||
public AccessControlList accessControlList;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{AccessControlPolicy:\n");
|
||||
if (owner != null) stringBuilder.Append(owner.GetInfo()).Append("\n");
|
||||
if (accessControlList != null) stringBuilder.Append(accessControlList.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Owner
|
||||
{
|
||||
/// <summary>
|
||||
/// Bucket 持有者 ID
|
||||
/// 格式:qcs::cam::uin/<OwnerUin>:uin/<SubUin> 如果是根帐号,<OwnerUin> 和 <SubUin> 是同一个值
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// Bucket 持有者的名称
|
||||
/// </summary>
|
||||
public string displayName;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Owner:\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
stringBuilder.Append("DisplayName:").Append(displayName).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public sealed class AccessControlList
|
||||
{
|
||||
/// <summary>
|
||||
/// 单个 Bucket 的授权信息。一个 AccessControlList 可以拥有 100 条 Grant
|
||||
/// <see cref="Grant"/>
|
||||
/// </summary>
|
||||
public List<Grant> grants;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{AccessControlList:\n");
|
||||
if (grants != null)
|
||||
{
|
||||
foreach (Grant grant in grants)
|
||||
{
|
||||
if (grant != null) stringBuilder.Append(grant.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Grant
|
||||
{
|
||||
/// <summary>
|
||||
/// 说明被授权者的信息,
|
||||
/// <see cref="Grantee"/>
|
||||
/// </summary>
|
||||
public Grantee grantee;
|
||||
/// <summary>
|
||||
/// 指明授予被授权者的权限信息
|
||||
/// <see cref="COSXML.Common.CosGrantPermission"/>
|
||||
/// </summary>
|
||||
public string permission;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Grant:\n");
|
||||
if (grantee != null) stringBuilder.Append(grantee.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("Permission:").Append(permission).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Grantee
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户的 ID,如果是根帐号,格式为:qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>
|
||||
/// 如果是子帐号,格式为: qcs::cam::uin/<OwnerUin>:uin/<SubUin>
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// 用户的名称
|
||||
/// </summary>
|
||||
public string displayName;
|
||||
/// <summary>
|
||||
/// 或 qcs::cam::anyone:anyone (指代所有用户).
|
||||
/// </summary>
|
||||
public string uri;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Grantee:\n");
|
||||
if (uri != null) stringBuilder.Append("URI:").Append(uri).Append("\n");
|
||||
if(id != null) stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
if(displayName != null) stringBuilder.Append("DisplayName:").Append(displayName).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
34
COSXML/Model/Tag/BucketLoggingStatus.cs
Normal file
34
COSXML/Model/Tag/BucketLoggingStatus.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class BucketLoggingStatus
|
||||
{
|
||||
public LoggingEnabled loggingEnabled;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{BucketLoggingStatus:\n");
|
||||
if (loggingEnabled != null) stringBuilder.Append(loggingEnabled.ToString()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class LoggingEnabled
|
||||
{
|
||||
public string targetBucket;
|
||||
public string targetPrefix;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{LoggingEnabled:\n");
|
||||
stringBuilder.Append("TargetBucket:").Append(targetBucket).Append("\n");
|
||||
stringBuilder.Append("TargetPrefix:").Append(targetPrefix).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
85
COSXML/Model/Tag/CORSConfiguration.cs
Normal file
85
COSXML/Model/Tag/CORSConfiguration.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/8274"/>
|
||||
/// </summary>
|
||||
public sealed class CORSConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// 跨域资源共享配置的信息,最多可以包含100条 CORSRule
|
||||
/// <see cref="CORSRule"/>
|
||||
/// </summary>
|
||||
public List<CORSRule> corsRules;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CORSConfiguration:\n");
|
||||
if(corsRules != null){
|
||||
foreach(CORSRule corsRule in corsRules){
|
||||
if(corsRule != null) stringBuilder.Append(corsRule.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
|
||||
public sealed class CORSRule
|
||||
{
|
||||
/// <summary>
|
||||
/// 配置规则的 ID,可选填
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// 允许的访问来源,支持通配符 *, 格式为:协议://域名[:端口]如:http://www.qq.com
|
||||
/// </summary>
|
||||
public string allowedOrigin;
|
||||
/// <summary>
|
||||
/// 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE
|
||||
/// </summary>
|
||||
public List<string> allowedMethods;
|
||||
/// <summary>
|
||||
/// 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 *
|
||||
/// </summary>
|
||||
public List<string> allowedHeaders;
|
||||
/// <summary>
|
||||
/// 设置浏览器可以接收到的来自服务器端的自定义头部信息
|
||||
/// </summary>
|
||||
public List<string> exposeHeaders;
|
||||
/// <summary>
|
||||
/// 设置 OPTIONS 请求得到结果的有效期
|
||||
/// </summary>
|
||||
public int maxAgeSeconds;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CORSRule:\n");
|
||||
stringBuilder.Append("ID:").Append(id).Append("\n");
|
||||
stringBuilder.Append("AllowedOrigin:").Append(allowedOrigin).Append("\n");
|
||||
if(allowedMethods != null){
|
||||
foreach (string method in allowedMethods){
|
||||
if(method != null)stringBuilder.Append("AllowedMethod:").Append(method).Append("\n");
|
||||
}
|
||||
}
|
||||
if(allowedHeaders != null){
|
||||
foreach (string header in allowedHeaders){
|
||||
if(header != null)stringBuilder.Append("AllowedHeader:").Append(header).Append("\n");
|
||||
}
|
||||
}
|
||||
if(exposeHeaders != null){
|
||||
foreach (string exposeHeader in exposeHeaders){
|
||||
if (exposeHeader != null) stringBuilder.Append("ExposeHeader:").Append(exposeHeader).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("MaxAgeSeconds:").Append(maxAgeSeconds).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
63
COSXML/Model/Tag/CompleteMultipartUpload.cs
Normal file
63
COSXML/Model/Tag/CompleteMultipartUpload.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 11:51:33 AM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 本次分块上传的所有信息
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/7742"/>
|
||||
/// </summary>
|
||||
public sealed class CompleteMultipartUpload
|
||||
{
|
||||
/// <summary>
|
||||
/// 本次分块上传中每个块的信息
|
||||
/// <see cref="Part"/>
|
||||
/// </summary>
|
||||
public List<Part> parts;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CompleteMultipartUpload:\n");
|
||||
if (parts != null)
|
||||
{
|
||||
foreach (Part part in parts)
|
||||
{
|
||||
stringBuilder.Append(part.GetInfo());
|
||||
}
|
||||
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 本块编号 和 eTag值
|
||||
*/
|
||||
public sealed class Part
|
||||
{
|
||||
/// <summary>
|
||||
/// 块编号
|
||||
/// </summary>
|
||||
public int partNumber;
|
||||
/// <summary>
|
||||
/// 每个块文件的 eTag 值
|
||||
/// </summary>
|
||||
public string eTag;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Part:\n");
|
||||
stringBuilder.Append("PartNumber:").Append(partNumber).Append("\n");
|
||||
stringBuilder.Append("ETag:").Append(eTag).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
46
COSXML/Model/Tag/CompleteResult.cs
Normal file
46
COSXML/Model/Tag/CompleteResult.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 11:55:28 AM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/7742"/>
|
||||
/// </summary>
|
||||
public sealed class CompleteResult
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建的Object的外网访问域名
|
||||
/// </summary>
|
||||
public string location;
|
||||
/// <summary>
|
||||
/// 分块上传的目标Bucket
|
||||
/// </summary>
|
||||
public string bucket;
|
||||
/// <summary>
|
||||
/// Object的名称
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// 合并后对象的唯一标签值,该值不是对象内容的 MD5 校验值,仅能用于检查对象唯一性
|
||||
/// </summary>
|
||||
public string eTag;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CompleteMultipartUploadResult:\n");
|
||||
stringBuilder.Append("Location:").Append(location).Append("\n");
|
||||
stringBuilder.Append("Bucket:").Append(bucket).Append("\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("ETag:").Append(eTag).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
COSXML/Model/Tag/CopyObject.cs
Normal file
42
COSXML/Model/Tag/CopyObject.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 11:59:32 AM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 复制结果返回信息
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/10881"/>
|
||||
/// </summary>
|
||||
public sealed class CopyObject
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回文件的 MD5 算法校验值。ETag 的值可以用于检查 Object 的内容是否发生变化
|
||||
/// </summary>
|
||||
public string eTag;
|
||||
/// <summary>
|
||||
/// 返回文件最后修改时间,GMT 格式
|
||||
/// </summary>
|
||||
public string lastModified;
|
||||
/// <summary>
|
||||
/// key 的 versionId
|
||||
/// </summary>
|
||||
public string versionId;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CopyObject:\n");
|
||||
stringBuilder.Append("ETag:").Append(eTag).Append("\n");
|
||||
stringBuilder.Append("LastModified:").Append(lastModified).Append("\n");
|
||||
stringBuilder.Append("VersionId:").Append(versionId).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
118
COSXML/Model/Tag/CopySourceStruct.cs
Normal file
118
COSXML/Model/Tag/CopySourceStruct.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
using COSXML.CosException;
|
||||
using COSXML.Common;
|
||||
using COSXML.Utils;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 7:54:35 PM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class CopySourceStruct
|
||||
{
|
||||
/// <summary>
|
||||
/// cos 服务的appid
|
||||
/// </summary>
|
||||
public string appid;
|
||||
/// <summary>
|
||||
/// 存储桶名称
|
||||
/// </summary>
|
||||
public string bucket;
|
||||
/// <summary>
|
||||
/// Bucket所属地域
|
||||
/// </summary>
|
||||
public string region;
|
||||
/// <summary>
|
||||
/// 对象键
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// 对象的版本ID
|
||||
/// </summary>
|
||||
public string versionId;
|
||||
|
||||
/// <summary>
|
||||
/// copy source with versionId
|
||||
/// </summary>
|
||||
/// <param name="appid"></param>
|
||||
/// <param name="bucket"></param>
|
||||
/// <param name="region"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="versionId"></param>
|
||||
public CopySourceStruct(string appid, string bucket, string region, string key, string versionId)
|
||||
{
|
||||
this.appid = appid;
|
||||
this.bucket = bucket;
|
||||
this.region = region;
|
||||
this.key = key;
|
||||
this.versionId = versionId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// copy source
|
||||
/// </summary>
|
||||
/// <param name="appid"></param>
|
||||
/// <param name="bucket"></param>
|
||||
/// <param name="region"></param>
|
||||
/// <param name="key"></param>
|
||||
public CopySourceStruct(string appid, string bucket, string region, string key)
|
||||
: this(appid, bucket, region, key, null) { }
|
||||
|
||||
/// <summary>
|
||||
/// check parameter
|
||||
/// </summary>
|
||||
public void CheckParameters()
|
||||
{
|
||||
if (bucket == null)
|
||||
{
|
||||
throw new CosClientException((int)CosClientError.INVALID_ARGUMENT, "copy source bucket = null");
|
||||
}
|
||||
if (key == null)
|
||||
{
|
||||
throw new CosClientException((int)CosClientError.INVALID_ARGUMENT, "copy source cosPath = null");
|
||||
}
|
||||
// if (appid == null)
|
||||
// {
|
||||
// throw new CosClientException((int)CosClientError.INVALID_ARGUMENT, "copy source appid = null");
|
||||
// }
|
||||
if (region == null)
|
||||
{
|
||||
throw new CosClientException((int)CosClientError.INVALID_ARGUMENT, "copy source region = null");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get source with urlEncode
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetCopySouce()
|
||||
{
|
||||
if (!key.StartsWith("/"))
|
||||
{
|
||||
key = "/" + key;
|
||||
}
|
||||
StringBuilder copySource = new StringBuilder();
|
||||
|
||||
copySource.Append(bucket);
|
||||
if (!String.IsNullOrEmpty(appid) && !bucket.EndsWith("-" + appid))
|
||||
{
|
||||
copySource.Append("-")
|
||||
.Append(appid);
|
||||
}
|
||||
copySource.Append(".").Append("cos").Append(".")
|
||||
.Append(region).Append(".")
|
||||
.Append("myqcloud.com")
|
||||
.Append(URLEncodeUtils.EncodePathOfURL(key));
|
||||
|
||||
if (versionId != null)
|
||||
{
|
||||
copySource.Append("?versionId=").Append(versionId);
|
||||
}
|
||||
return copySource.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
51
COSXML/Model/Tag/CosServerError.cs
Normal file
51
COSXML/Model/Tag/CosServerError.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 12:13:21 PM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// cos server 返回的错误信息
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/7730"/>
|
||||
/// </summary>
|
||||
public sealed class CosServerError
|
||||
{
|
||||
/// <summary>
|
||||
/// 错误码
|
||||
/// </summary>
|
||||
public string code;
|
||||
/// <summary>
|
||||
/// 错误信息
|
||||
/// </summary>
|
||||
public string message;
|
||||
/// <summary>
|
||||
/// 资源地址
|
||||
/// </summary>
|
||||
public string resource;
|
||||
/// <summary>
|
||||
/// 请求ID
|
||||
/// </summary>
|
||||
public string requestId;
|
||||
/// <summary>
|
||||
/// 错误ID
|
||||
/// </summary>
|
||||
public string traceId;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Error:\n");
|
||||
stringBuilder.Append("Code:").Append(code).Append("\n");
|
||||
stringBuilder.Append("Message:").Append(message).Append("\n");
|
||||
stringBuilder.Append("Rresource:").Append(resource).Append("\n");
|
||||
stringBuilder.Append("RequestId:").Append(requestId).Append("\n");
|
||||
stringBuilder.Append("TraceId:").Append(traceId).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
COSXML/Model/Tag/Delete.cs
Normal file
47
COSXML/Model/Tag/Delete.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 11:36:54 AM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class Delete
|
||||
{
|
||||
public bool quiet;
|
||||
public List<DeleteObject> deleteObjects;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Delete:\n");
|
||||
stringBuilder.Append("Quiet:").Append(quiet).Append("\n");
|
||||
if (deleteObjects != null)
|
||||
{
|
||||
foreach(DeleteObject deleteObject in deleteObjects)
|
||||
{
|
||||
stringBuilder.Append(deleteObject.GetInfo());
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class DeleteObject
|
||||
{
|
||||
public string key;
|
||||
public string versionId;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Object:\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("VersionId:").Append(versionId).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
113
COSXML/Model/Tag/DeleteResult.cs
Normal file
113
COSXML/Model/Tag/DeleteResult.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 11:42:16 AM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 本次删除返回结果的方式和目标 Object
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/8289"/>
|
||||
/// </summary>
|
||||
public sealed class DeleteResult
|
||||
{
|
||||
/// <summary>
|
||||
/// 本次删除的成功 Object 信息
|
||||
/// <see cref="Deleted"/>
|
||||
/// </summary>
|
||||
public List<Deleted> deletedList;
|
||||
/// <summary>
|
||||
/// 本次删除的失败 Object 信息
|
||||
/// <see cref="Error"/>
|
||||
/// </summary>
|
||||
public List<Error> errorList;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{DeleteResult:\n");
|
||||
if(deletedList != null)
|
||||
{
|
||||
foreach(Deleted deleted in deletedList)
|
||||
{
|
||||
if(deleted != null)stringBuilder.Append(deleted.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
if(errorList != null){
|
||||
foreach(Error error in errorList)
|
||||
{
|
||||
if(error != null)stringBuilder.Append(error.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Deleted
|
||||
{
|
||||
/// <summary>
|
||||
/// Object 的名称
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// Object 的版本Id
|
||||
/// </summary>
|
||||
public string versionId;
|
||||
/// <summary>
|
||||
/// deleete marker
|
||||
/// </summary>
|
||||
public string deleteMarker;
|
||||
/// <summary>
|
||||
/// delete marker versionId
|
||||
/// </summary>
|
||||
public string deleteMarkerVersionId;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Deleted:\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("VersionId:").Append(versionId).Append("\n");
|
||||
stringBuilder.Append("DeleteMarker:").Append(deleteMarker).Append("\n");
|
||||
stringBuilder.Append("DeleteMarkerVersionId:").Append(deleteMarkerVersionId).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Error
|
||||
{
|
||||
/// <summary>
|
||||
/// 删除失败的 Object 的名称
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// 删除失败的错误代码
|
||||
/// </summary>
|
||||
public string code;
|
||||
/// <summary>
|
||||
/// 删除失败的错误信息
|
||||
/// </summary>
|
||||
public string message;
|
||||
/// <summary>
|
||||
/// 删除失败的 Object 的 版本Id
|
||||
/// </summary>
|
||||
public string versionId;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Error:\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("Code:").Append(code).Append("\n");
|
||||
stringBuilder.Append("Message:").Append(message).Append("\n");
|
||||
stringBuilder.Append("VersionId:").Append(versionId).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
COSXML/Model/Tag/DomainConfigurartion.cs
Normal file
15
COSXML/Model/Tag/DomainConfigurartion.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class DomainConfiguration
|
||||
{
|
||||
public DomainRule rule;
|
||||
|
||||
public sealed class DomainRule
|
||||
{
|
||||
public string Name;
|
||||
public string Status;
|
||||
public string Type;
|
||||
public string Replace;
|
||||
}
|
||||
}
|
||||
}
|
||||
47
COSXML/Model/Tag/GrantAccount.cs
Normal file
47
COSXML/Model/Tag/GrantAccount.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 授予者信息
|
||||
/// </summary>
|
||||
public sealed class GrantAccount
|
||||
{
|
||||
List<string> idList;
|
||||
public GrantAccount()
|
||||
{
|
||||
idList = new List<string>();
|
||||
}
|
||||
/// <summary>
|
||||
/// ownerUin,根账号
|
||||
/// subUin,子账号
|
||||
/// </summary>
|
||||
/// <param name="ownerUin"></param>
|
||||
/// <param name="subUin"></param>
|
||||
public void AddGrantAccount(string ownerUin, string subUin)
|
||||
{
|
||||
if (ownerUin != null && subUin != null)
|
||||
{
|
||||
idList.Add(String.Format("id=\"qcs::cam::uin/{0}:uin/{1}\"", ownerUin, subUin));
|
||||
}
|
||||
}
|
||||
|
||||
public string GetGrantAccounts()
|
||||
{
|
||||
StringBuilder idBuilder = new StringBuilder();
|
||||
foreach(string id in idList)
|
||||
{
|
||||
idBuilder.Append(id).Append(",");
|
||||
}
|
||||
string idStr = idBuilder.ToString();
|
||||
int last = idStr.LastIndexOf(",");
|
||||
if (last > 0)
|
||||
{
|
||||
return idStr.Substring(0, last);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
41
COSXML/Model/Tag/InitiateMultipartUpload.cs
Normal file
41
COSXML/Model/Tag/InitiateMultipartUpload.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 12:01:43 PM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化上传返回的信息
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/7746"/>
|
||||
/// </summary>
|
||||
public sealed class InitiateMultipartUpload
|
||||
{
|
||||
/// <summary>
|
||||
/// 分片上传的目标 Bucket,由用户自定义字符串和系统生成appid数字串由中划线连接而成,如:mybucket-1250000000.
|
||||
/// </summary>
|
||||
public string bucket;
|
||||
/// <summary>
|
||||
/// Object 的名称
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// 在后续上传中使用的 ID
|
||||
/// </summary>
|
||||
public string uploadId;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{InitiateMultipartUpload:\n");
|
||||
stringBuilder.Append("Bucket:").Append(bucket).Append("\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("UploadId:").Append(uploadId).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
147
COSXML/Model/Tag/InventoryConfiguration.cs
Normal file
147
COSXML/Model/Tag/InventoryConfiguration.cs
Normal file
@@ -0,0 +1,147 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class InventoryConfiguration
|
||||
{
|
||||
/** 清单的名称,与请求参数中的 id 对应 */
|
||||
public string id;
|
||||
|
||||
/** 清单是否启用的标识。如果设置为 True,清单功能将生效;如果设置为 False,将不生成任何清单 */
|
||||
public bool isEnabled;
|
||||
|
||||
/** 是否在清单中包含对象版本 */
|
||||
public string includedObjectVersions;
|
||||
|
||||
/** 筛选待分析对象。清单功能将分析符合 Filter 中设置的前缀的对象 */
|
||||
public Filter filter;
|
||||
|
||||
/** 设置清单结果中应包含的分析项目 */
|
||||
public OptionalFields optionalFields;
|
||||
|
||||
/** 配置清单任务周期 */
|
||||
public Schedule schedule;
|
||||
|
||||
/** 描述存放清单结果的信息 */
|
||||
public Destination destination;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{InventoryConfiguration:\n");
|
||||
stringBuilder.Append("Id").Append(id).Append("\n");
|
||||
stringBuilder.Append("IsEnabled:").Append(isEnabled).Append("\n");
|
||||
if (destination != null) stringBuilder.Append(destination.GetInfo()).Append("\n");
|
||||
if (schedule != null) stringBuilder.Append(schedule.GetInfo()).Append("\n");
|
||||
if (filter != null) stringBuilder.Append(filter.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("IncludedObjectVersions:").Append(includedObjectVersions).Append("\n");
|
||||
if (optionalFields != null) stringBuilder.Append(optionalFields.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Filter
|
||||
{
|
||||
public string prefix;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Filter:\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class OptionalFields
|
||||
{
|
||||
public List<string> fields;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{OptionalFields:\n");
|
||||
if (fields != null)
|
||||
foreach (string field in fields)
|
||||
{
|
||||
stringBuilder.Append("Field:").Append(field).Append("\n");
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Schedule
|
||||
{
|
||||
public string frequency;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Schedule:\n");
|
||||
stringBuilder.Append("Frequency:").Append(frequency).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Destination
|
||||
{
|
||||
public COSBucketDestination cosBucketDestination;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Destination:\n");
|
||||
if (cosBucketDestination != null) stringBuilder.Append(cosBucketDestination.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class COSBucketDestination
|
||||
{
|
||||
public string format;
|
||||
public string accountId;
|
||||
public string bucket;
|
||||
public string prefix;
|
||||
public Encryption encryption;
|
||||
|
||||
public void setBucket(String region, String bucket)
|
||||
{
|
||||
if (region != null && bucket != null)
|
||||
{
|
||||
this.bucket = String.Format("qcs::cos:%s::%s", region, bucket);
|
||||
}
|
||||
}
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{COSBucketDestination:\n");
|
||||
stringBuilder.Append("Format:").Append(format).Append("\n"); ;
|
||||
stringBuilder.Append("AccountId:").Append(accountId).Append("\n"); ;
|
||||
stringBuilder.Append("Bucket:").Append(bucket).Append("\n"); ;
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n"); ;
|
||||
if (encryption != null)
|
||||
{
|
||||
stringBuilder.Append(encryption.GetInfo()).Append("\n");
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Encryption
|
||||
{
|
||||
public string sSECOS;
|
||||
|
||||
public String GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Encryption:\n");
|
||||
stringBuilder.Append("SSE-COS:").Append(sSECOS).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
225
COSXML/Model/Tag/LifecycleConfiguration.cs
Normal file
225
COSXML/Model/Tag/LifecycleConfiguration.cs
Normal file
@@ -0,0 +1,225 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class LifecycleConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// 规则描述
|
||||
/// <see cref="Rule"/>
|
||||
/// </summary>
|
||||
public List<Rule> rules;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{LifecycleConfiguration:\n");
|
||||
if(rules != null)
|
||||
{
|
||||
foreach (Rule rule in rules){
|
||||
if(rule != null) stringBuilder.Append(rule.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Rule
|
||||
{
|
||||
/// <summary>
|
||||
/// 用于唯一标识规则,长度不能超过 255 个字符
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// Filter 用于描述规则影响的 Object 集合
|
||||
/// <see cref="Filter"/>
|
||||
/// </summary>
|
||||
public Filter filter;
|
||||
/// <summary>
|
||||
/// 指明规则是否启用,枚举值:Enabled,Disabled
|
||||
/// </summary>
|
||||
public string status;
|
||||
/// <summary>
|
||||
/// 规则转换属性,对象何时转换为 Standard_IA 或 Archive
|
||||
/// <see cref="Transition"/>
|
||||
/// </summary>
|
||||
public Transition transition;
|
||||
/// <summary>
|
||||
/// 规则过期属性
|
||||
/// <see cref="Expiration"/>
|
||||
/// </summary>
|
||||
public Expiration expiration;
|
||||
/// <summary>
|
||||
/// 指明非当前版本对象何时过期
|
||||
/// <see cref="NoncurrentVersionExpiration"/>
|
||||
/// </summary>
|
||||
public NoncurrentVersionExpiration noncurrentVersionExpiration;
|
||||
/// <summary>
|
||||
/// 指明非当前版本对象何时转换为 STANDARD_IA 或 ARCHIVE
|
||||
/// <see cref="NoncurrentVersionTransition"/>
|
||||
/// </summary>
|
||||
public NoncurrentVersionTransition noncurrentVersionTransition;
|
||||
/// <summary>
|
||||
/// 设置允许分片上传保持运行的最长时间
|
||||
/// <see cref="AbortIncompleteMultiUpload"/>
|
||||
/// </summary>
|
||||
public AbortIncompleteMultiUpload abortIncompleteMultiUpload;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Rule:\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
if (filter != null) stringBuilder.Append(filter.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("Status:").Append(status).Append("\n");
|
||||
if (transition != null) stringBuilder.Append(transition.GetInfo()).Append("\n");
|
||||
if (expiration != null) stringBuilder.Append(expiration.GetInfo()).Append("\n");
|
||||
if (noncurrentVersionExpiration != null) stringBuilder.Append(noncurrentVersionExpiration.GetInfo()).Append("\n");
|
||||
if (noncurrentVersionTransition != null) stringBuilder.Append(noncurrentVersionTransition.GetInfo()).Append("\n");
|
||||
if (abortIncompleteMultiUpload != null) stringBuilder.Append(abortIncompleteMultiUpload.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public sealed class Filter
|
||||
{
|
||||
/// <summary>
|
||||
/// 指定规则所适用的前缀。匹配前缀的对象受该规则影响,Prefix 最多只能有一个
|
||||
/// </summary>
|
||||
public string prefix;
|
||||
|
||||
public FilterAnd filterAnd;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Filter:\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
if(filterAnd != null)stringBuilder.Append(filterAnd.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class FilterAnd
|
||||
{
|
||||
public string prefix;
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{And:\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Transition
|
||||
{
|
||||
/// <summary>
|
||||
/// 指明规则对应的动作在对象最后的修改日期过后多少天操作
|
||||
/// </summary>
|
||||
public int days;
|
||||
/// <summary>
|
||||
/// 指明规则对应的动作在何时操作
|
||||
/// </summary>
|
||||
public string date;
|
||||
/// <summary>
|
||||
/// 指定 Object 转储到的目标存储类型,枚举值: STANDARD_IA, ARCHIVE
|
||||
/// <see cref="COSXML.Common.CosStorageClass"/>
|
||||
/// </summary>
|
||||
public string storageClass;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Transition:\n");
|
||||
stringBuilder.Append("Days:").Append(days).Append("\n");
|
||||
stringBuilder.Append("Date:").Append(date).Append("\n");
|
||||
stringBuilder.Append("StorageClass:").Append(storageClass).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Expiration
|
||||
{
|
||||
/// <summary>
|
||||
/// 指明规则对应的动作在何时操作
|
||||
/// </summary>
|
||||
public string date;
|
||||
/// <summary>
|
||||
/// 指明规则对应的动作在对象最后的修改日期过后多少天操作
|
||||
/// </summary>
|
||||
public int days;
|
||||
/// <summary>
|
||||
/// 删除过期对象删除标记,取值为 true,false
|
||||
/// </summary>
|
||||
public bool? expiredObjectDeleteMarker;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Expiration:\n");
|
||||
stringBuilder.Append("Days:").Append(days).Append("\n");
|
||||
stringBuilder.Append("Date:").Append(date).Append("\n");
|
||||
stringBuilder.Append("ExpiredObjectDeleteMarker:").Append(expiredObjectDeleteMarker).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class NoncurrentVersionExpiration
|
||||
{
|
||||
/// <summary>
|
||||
/// 指明规则对应的动作在对象变成非当前版本多少天后执行
|
||||
/// </summary>
|
||||
public int noncurrentDays;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{NoncurrentVersionExpiration:\n");
|
||||
stringBuilder.Append("NoncurrentDays:").Append(noncurrentDays).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class NoncurrentVersionTransition
|
||||
{
|
||||
/// <summary>
|
||||
/// 指明规则对应的动作在对象变成非当前版本多少天后执行
|
||||
/// </summary>
|
||||
public int noncurrentDays;
|
||||
/// <summary>
|
||||
/// 指定 Object 转储到的目标存储类型
|
||||
/// <see cref="COSXML.Common.CosStorageClass"/>
|
||||
/// </summary>
|
||||
public string storageClass;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{NoncurrentVersionTransition:\n");
|
||||
stringBuilder.Append("NoncurrentDays:").Append(noncurrentDays).Append("\n");
|
||||
stringBuilder.Append("StorageClass:").Append(storageClass).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class AbortIncompleteMultiUpload
|
||||
{
|
||||
/// <summary>
|
||||
/// 指明分片上传开始后多少天内必须完成上传
|
||||
/// </summary>
|
||||
public int daysAfterInitiation;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{AbortIncompleteMultiUpload:\n");
|
||||
stringBuilder.Append("DaysAfterInitiation:").Append(daysAfterInitiation).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
93
COSXML/Model/Tag/ListAllMyBuckets.cs
Normal file
93
COSXML/Model/Tag/ListAllMyBuckets.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/2/2018 5:52:22 PM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/8291"/>
|
||||
/// </summary>
|
||||
public sealed class ListAllMyBuckets
|
||||
{
|
||||
/// <summary>
|
||||
/// Bucket 持有者的信息
|
||||
/// <see cref="Owner"/>
|
||||
/// </summary>
|
||||
public Owner owner;
|
||||
/// <summary>
|
||||
/// 本次响应的所有 Bucket 列表信息
|
||||
/// <see cref="Bucket"/>
|
||||
/// </summary>
|
||||
public List<Bucket> buckets;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{ListAllMyBuckets:\n");
|
||||
if (owner != null) stringBuilder.Append(owner.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("Buckets:\n");
|
||||
if (buckets != null)
|
||||
{
|
||||
foreach (Bucket bucket in buckets)
|
||||
{
|
||||
if (bucket != null) stringBuilder.Append(bucket.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}").Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Owner
|
||||
{
|
||||
/// <summary>
|
||||
/// Bucket 所有者的 ID
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// Bucket 所有者的名字信息
|
||||
/// </summary>
|
||||
public string disPlayName;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Owner:\n");
|
||||
stringBuilder.Append("ID:").Append(id).Append("\n");
|
||||
stringBuilder.Append("DisPlayName:").Append(disPlayName).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Bucket
|
||||
{
|
||||
/// <summary>
|
||||
/// Bucket 的名称
|
||||
/// </summary>
|
||||
public string name;
|
||||
/// <summary>
|
||||
/// Bucket 所在地域
|
||||
/// </summary>
|
||||
public string location;
|
||||
/// <summary>
|
||||
/// Bucket 创建时间。ISO8601 格式
|
||||
/// </summary>
|
||||
public string createDate;
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Bucket:\n");
|
||||
stringBuilder.Append("Name:").Append(name).Append("\n");
|
||||
stringBuilder.Append("Location:").Append(location).Append("\n");
|
||||
stringBuilder.Append("CreateDate:").Append(createDate).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
156
COSXML/Model/Tag/ListBucket.cs
Normal file
156
COSXML/Model/Tag/ListBucket.cs
Normal file
@@ -0,0 +1,156 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 保存 Get Bucket 请求结果的所有信息
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/7734#.E8.AF.B7.E6.B1.82.E7.A4.BA.E4.BE.8B"/>
|
||||
/// </summary>
|
||||
public sealed class ListBucket
|
||||
{
|
||||
/// <summary>
|
||||
/// Bucket 的名称
|
||||
/// </summary>
|
||||
public string name;
|
||||
/// <summary>
|
||||
/// 编码格式
|
||||
/// </summary>
|
||||
public string encodingType;
|
||||
/// <summary>
|
||||
/// 前缀匹配,用来规定响应请求返回的文件前缀地址
|
||||
/// </summary>
|
||||
public string prefix;
|
||||
/// <summary>
|
||||
/// 默认以 UTF-8 二进制顺序列出条目,所有列出条目从 marker 开始
|
||||
/// </summary>
|
||||
public string marker;
|
||||
/// <summary>
|
||||
/// 单次响应请求内返回结果的最大的条目数量
|
||||
/// </summary>
|
||||
public int maxKeys;
|
||||
/// <summary>
|
||||
/// 响应请求条目是否被截断,布尔值:true,false
|
||||
/// </summary>
|
||||
public bool isTruncated;
|
||||
/// <summary>
|
||||
/// 假如返回条目被截断,则返回 NextMarker 就是下一个条目的起点
|
||||
/// </summary>
|
||||
public string nextMarker;
|
||||
/// <summary>
|
||||
/// 对象元数据信息列表
|
||||
/// <see cref="Contents"/>
|
||||
/// </summary>
|
||||
public List<Contents> contentsList;
|
||||
/// <summary>
|
||||
/// 将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix
|
||||
/// <see cref="CommonPrefixes"/>
|
||||
/// </summary>
|
||||
public List<CommonPrefixes> commonPrefixesList;
|
||||
public string delimiter;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{ListBucket:\n");
|
||||
stringBuilder.Append("Name:").Append(name).Append("\n");
|
||||
stringBuilder.Append("Encoding-Type:").Append(encodingType).Append("\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("Marker:").Append(marker).Append("\n");
|
||||
stringBuilder.Append("MaxKeys:").Append(maxKeys).Append("\n");
|
||||
stringBuilder.Append("IsTruncated:").Append(isTruncated).Append("\n");
|
||||
stringBuilder.Append("NextMarker:").Append(nextMarker).Append("\n");
|
||||
if(contentsList != null)
|
||||
{
|
||||
foreach (Contents contents in contentsList)
|
||||
{
|
||||
if(contents != null)stringBuilder.Append(contents.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
if(commonPrefixesList != null)
|
||||
{
|
||||
foreach (CommonPrefixes commonPrefixes in commonPrefixesList)
|
||||
{
|
||||
if(commonPrefixes != null)stringBuilder.Append(commonPrefixes.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("Delimiter:").Append(delimiter).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Contents
|
||||
{
|
||||
/// <summary>
|
||||
/// Object 的 Key
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// Object 最后被修改时间
|
||||
/// </summary>
|
||||
public string lastModified;
|
||||
/// <summary>
|
||||
/// 文件的 eTag
|
||||
/// </summary>
|
||||
public string eTag;
|
||||
/// <summary>
|
||||
/// 文件大小,单位是 Byte
|
||||
/// </summary>
|
||||
public long size;
|
||||
/// <summary>
|
||||
/// Bucket 持有者信息
|
||||
/// <see cref="Owner"/>
|
||||
/// </summary>
|
||||
public Owner owner;
|
||||
/// <summary>
|
||||
/// Object 的存储级别,枚举值:STANDARD,STANDARD_IA,ARCHIVE
|
||||
/// <see cref="COSXML.Common.CosStorageClass"/>
|
||||
/// </summary>
|
||||
public string storageClass;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Contents:\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("LastModified:").Append(lastModified).Append("\n");
|
||||
stringBuilder.Append("ETag:").Append(eTag).Append("\n");
|
||||
stringBuilder.Append("Size:").Append(size).Append("\n");
|
||||
if (owner != null)stringBuilder.Append(owner.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("StorageClass:").Append(storageClass).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CommonPrefixes{
|
||||
/// <summary>
|
||||
/// 单条 Common 的前缀
|
||||
/// </summary>
|
||||
public string prefix;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CommonPrefixes:\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Owner{
|
||||
/// <summary>
|
||||
/// Bucket 的 AppID
|
||||
/// </summary>
|
||||
public string id;
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Owner:\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
137
COSXML/Model/Tag/ListBucketVersions.cs
Normal file
137
COSXML/Model/Tag/ListBucketVersions.cs
Normal file
@@ -0,0 +1,137 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class ListBucketVersions
|
||||
{
|
||||
public string encodingType;
|
||||
public string name;
|
||||
public string prefix;
|
||||
public string keyMarker;
|
||||
public string versionIdMarker;
|
||||
public long maxKeys;
|
||||
public bool isTruncated;
|
||||
public string nextKeyMarker;
|
||||
public string delimiter;
|
||||
public string nextVersionIdMarker;
|
||||
public List<ObjectVersion> objectVersionList;
|
||||
public List<CommonPrefixes> commonPrefixesList;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{ListVersionsResult:\n");
|
||||
stringBuilder.Append("Name:").Append(name).Append("\n");
|
||||
stringBuilder.Append("EncodingType:").Append(encodingType).Append("\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("Delimiter:").Append(delimiter).Append("\n");
|
||||
stringBuilder.Append("KeyMarker:").Append(keyMarker).Append("\n");
|
||||
stringBuilder.Append("VersionIdMarker:").Append(versionIdMarker).Append("\n");
|
||||
stringBuilder.Append("MaxKeys:").Append(maxKeys).Append("\n");
|
||||
stringBuilder.Append("IsTruncated:").Append(isTruncated).Append("\n");
|
||||
stringBuilder.Append("NextKeyMarker:").Append(nextKeyMarker).Append("\n");
|
||||
stringBuilder.Append("NextVersionIdMarker:").Append(nextVersionIdMarker).Append("\n");
|
||||
if(objectVersionList != null)
|
||||
{
|
||||
foreach(ObjectVersion objectVersion in objectVersionList)
|
||||
{
|
||||
if(objectVersion != null) stringBuilder.Append(objectVersion.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
if (commonPrefixesList != null)
|
||||
{
|
||||
foreach (CommonPrefixes commonPrefixes in commonPrefixesList)
|
||||
{
|
||||
if (commonPrefixes != null) stringBuilder.Append(commonPrefixes.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public abstract class ObjectVersion
|
||||
{
|
||||
public string key;
|
||||
public string versionId;
|
||||
public bool isLatest;
|
||||
public string lastModified;
|
||||
public Owner owner;
|
||||
|
||||
public abstract string GetInfo();
|
||||
}
|
||||
|
||||
public sealed class Owner
|
||||
{
|
||||
public string uid;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Owner:\n");
|
||||
stringBuilder.Append("Uid:").Append(uid).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class DeleteMarker : ObjectVersion{
|
||||
|
||||
public override string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{DeleteMarker:\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("VersionId:").Append(versionId).Append("\n");
|
||||
stringBuilder.Append("IsLatest:").Append(isLatest).Append("\n");
|
||||
stringBuilder.Append("LastModified:").Append(lastModified).Append("\n");
|
||||
if(owner != null)
|
||||
{
|
||||
stringBuilder.Append(owner.GetInfo()).Append("\n");
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Version : ObjectVersion
|
||||
{
|
||||
public string eTag;
|
||||
public long size;
|
||||
public string storageClass;
|
||||
|
||||
|
||||
public override string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Version:\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("VersionId:").Append(versionId).Append("\n");
|
||||
stringBuilder.Append("IsLatest:").Append(isLatest).Append("\n");
|
||||
stringBuilder.Append("LastModified:").Append(lastModified).Append("\n");
|
||||
stringBuilder.Append("ETag:").Append(eTag).Append("\n");
|
||||
stringBuilder.Append("Size:").Append(size).Append("\n");
|
||||
stringBuilder.Append("StorageClass:").Append(storageClass).Append("\n");
|
||||
if(owner != null)
|
||||
{
|
||||
stringBuilder.Append(owner.GetInfo()).Append("\n");
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CommonPrefixes
|
||||
{
|
||||
/// <summary>
|
||||
/// 显示具体的 CommonPrefixes
|
||||
/// </summary>
|
||||
public string prefix;
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CommonPrefixes:\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
31
COSXML/Model/Tag/ListInventoryConfiguration.cs
Normal file
31
COSXML/Model/Tag/ListInventoryConfiguration.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class ListInventoryConfiguration
|
||||
{
|
||||
public List<InventoryConfiguration> inventoryConfigurations;
|
||||
public bool isTruncated = false;
|
||||
public string continuationToken;
|
||||
public string nextContinuationToken;
|
||||
|
||||
public String GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{ListInventoryConfigurationResult\n");
|
||||
stringBuilder.Append("IsTruncated:").Append(isTruncated).Append("\n");
|
||||
if (continuationToken != null) stringBuilder.Append("ContinuationToken:").Append(continuationToken).Append("\n");
|
||||
if (nextContinuationToken != null) stringBuilder.Append("NextContinuationToken:").Append(nextContinuationToken).Append("\n");
|
||||
if (inventoryConfigurations != null)
|
||||
{
|
||||
foreach (InventoryConfiguration inventoryConfiguration in inventoryConfigurations)
|
||||
{
|
||||
if (inventoryConfiguration != null) stringBuilder.Append(inventoryConfiguration.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
212
COSXML/Model/Tag/ListMultipartUploads.cs
Normal file
212
COSXML/Model/Tag/ListMultipartUploads.cs
Normal file
@@ -0,0 +1,212 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 所有分块上传的信息
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/7736"/>
|
||||
/// </summary>
|
||||
public sealed class ListMultipartUploads
|
||||
{
|
||||
/// <summary>
|
||||
/// 分块上传的目标 Bucket
|
||||
/// </summary>
|
||||
public string bucket;
|
||||
/// <summary>
|
||||
/// 规定返回值的编码格式,合法值:url
|
||||
/// </summary>
|
||||
public string encodingType;
|
||||
/// <summary>
|
||||
/// 列出条目从该 key 值开始
|
||||
/// </summary>
|
||||
public string keyMarker;
|
||||
/// <summary>
|
||||
/// 列出条目从该 UploadId 值开始
|
||||
/// </summary>
|
||||
public string uploadIdMarker;
|
||||
/// <summary>
|
||||
/// 假如返回条目被截断,则返回 NextKeyMarker 就是下一个条目的起点
|
||||
/// </summary>
|
||||
public string nextKeyMarker;
|
||||
/// <summary>
|
||||
/// 假如返回条目被截断,则返回 UploadId 就是下一个条目的起点
|
||||
/// </summary>
|
||||
public string nextUploadIdMarker;
|
||||
/// <summary>
|
||||
/// 设置最大返回的 multipart 数量,合法取值从 0 到 1000
|
||||
/// </summary>
|
||||
public string maxUploads;
|
||||
/// <summary>
|
||||
/// 返回条目是否被截断,布尔值:TRUE,FALSE
|
||||
/// </summary>
|
||||
public bool isTruncated;
|
||||
/// <summary>
|
||||
/// 限定返回的 Object key 必须以 Prefix 作为前缀。
|
||||
/// 注意使用 prefix 查询时,返回的 key 中仍会包含 Prefix
|
||||
/// </summary>
|
||||
public string prefix;
|
||||
/// <summary>
|
||||
/// 定界符为一个符号,
|
||||
/// 对 object 名字包含指定前缀且第一次出现 delimiter 字符之间的 object 作为一组元素:common prefix。
|
||||
/// 如果没有 prefix,则从路径起点开始
|
||||
/// </summary>
|
||||
public string delimiter;
|
||||
/// <summary>
|
||||
/// 每个 Upload 的信息
|
||||
/// <see cref="Upload"/>
|
||||
/// </summary>
|
||||
public List<Upload> uploads;
|
||||
/// <summary>
|
||||
/// 将 prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix
|
||||
/// <see cref="CommonPrefixes"/>
|
||||
/// </summary>
|
||||
public List<CommonPrefixes> commonPrefixesList;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{ListMultipartUploads:\n");
|
||||
stringBuilder.Append("Bucket:").Append(bucket).Append("\n");
|
||||
stringBuilder.Append("EncodingType:").Append(encodingType).Append("\n");
|
||||
stringBuilder.Append("KeyMarker:").Append(keyMarker).Append("\n");
|
||||
stringBuilder.Append("UploadIdMarker:").Append(uploadIdMarker).Append("\n");
|
||||
stringBuilder.Append("NextKeyMarker:").Append(nextKeyMarker).Append("\n");
|
||||
stringBuilder.Append("NextUploadIdMarker:").Append(nextUploadIdMarker).Append("\n");
|
||||
stringBuilder.Append("MaxUploads:").Append(maxUploads).Append("\n");
|
||||
stringBuilder.Append("IsTruncated:").Append(isTruncated).Append("\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("Delimiter:").Append(delimiter).Append("\n");
|
||||
if (uploads != null)
|
||||
{
|
||||
foreach (Upload upload in uploads)
|
||||
{
|
||||
if (upload != null) stringBuilder.Append(upload.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
if (commonPrefixesList != null)
|
||||
{
|
||||
foreach (CommonPrefixes commonPrefix in commonPrefixesList)
|
||||
{
|
||||
if (commonPrefix != null) stringBuilder.Append(commonPrefix.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Upload
|
||||
{
|
||||
/// <summary>
|
||||
/// Object 的名称
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// 示本次分块上传的 ID
|
||||
/// </summary>
|
||||
public string uploadID;
|
||||
/// <summary>
|
||||
/// 用来表示分块的存储级别,枚举值:STANDARD,STANDARD_IA,ARCHIVE
|
||||
/// <see cref="COSXML.Common.CosRegion"/>
|
||||
/// </summary>
|
||||
public string storageClass;
|
||||
/// <summary>
|
||||
/// 用来表示本次上传发起者的信息
|
||||
/// <see cref="initiator"/>
|
||||
/// </summary>
|
||||
public Initiator initiator;
|
||||
/// <summary>
|
||||
/// 用来表示这些分块所有者的信息
|
||||
/// <see cref="Owner"/>
|
||||
/// </summary>
|
||||
public Owner owner;
|
||||
/// <summary>
|
||||
/// 分块上传的起始时间
|
||||
/// </summary>
|
||||
public string initiated;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Upload:\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("UploadID:").Append(uploadID).Append("\n");
|
||||
stringBuilder.Append("StorageClass:").Append(storageClass).Append("\n");
|
||||
if (initiator != null) stringBuilder.Append(initiator.GetInfo()).Append("\n");
|
||||
if (owner != null) stringBuilder.Append(owner.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("Initiated:").Append(initiated).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CommonPrefixes
|
||||
{
|
||||
/// <summary>
|
||||
/// 显示具体的 CommonPrefixes
|
||||
/// </summary>
|
||||
public string prefix;
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CommonPrefixes:\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Initiator
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户唯一的 CAM 身份 UIN
|
||||
/// </summary>
|
||||
public string uin;
|
||||
/// <summary>
|
||||
/// 用户唯一的 CAM 身份 ID
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// 用户身份 ID 的简称(UIN)
|
||||
/// </summary>
|
||||
public string displayName;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Initiator:\n");
|
||||
stringBuilder.Append("Uin:").Append(uin).Append("\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
stringBuilder.Append("DisplayName:").Append(displayName).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Owner
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户唯一的 CAM 身份 UID
|
||||
/// </summary>
|
||||
public string uid;
|
||||
/// <summary>
|
||||
/// 用户唯一的 CAM 身份 ID
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// 用户身份 ID 的简称(UIN)
|
||||
/// </summary>
|
||||
public string displayName;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Owner:\n");
|
||||
stringBuilder.Append("Uid:").Append(uid).Append("\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
stringBuilder.Append("DisplayName:").Append(displayName).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
167
COSXML/Model/Tag/ListParts.cs
Normal file
167
COSXML/Model/Tag/ListParts.cs
Normal file
@@ -0,0 +1,167 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 12:03:35 PM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class ListParts
|
||||
{
|
||||
/// <summary>
|
||||
/// 分块上传的目标 Bucke
|
||||
/// </summary>
|
||||
public string bucket;
|
||||
/// <summary>
|
||||
/// 规定返回值的编码方式
|
||||
/// </summary>
|
||||
public string encodingType;
|
||||
/// <summary>
|
||||
/// Object 的名称
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// 本次分块上传的 uploadID
|
||||
/// </summary>
|
||||
public string uploadId;
|
||||
/// <summary>
|
||||
/// 表示这些分块所有者的信息
|
||||
/// </summary>
|
||||
public Owner owner;
|
||||
/// <summary>
|
||||
/// 默认以 UTF-8 二进制顺序列出条目,所有列出条目从 marker 开始
|
||||
/// </summary>
|
||||
public string partNumberMarker;
|
||||
/// <summary>
|
||||
/// 表示本次上传发起者的信息
|
||||
/// <see cref="Initiator"/>
|
||||
/// </summary>
|
||||
public Initiator initiator;
|
||||
/// <summary>
|
||||
/// 表示这些分块的存储级别
|
||||
/// </summary>
|
||||
public string storageClass;
|
||||
/// <summary>
|
||||
/// 假如返回条目被截断,则返回 nextPartNumberMarker 就是下一个条目的起点
|
||||
/// </summary>
|
||||
public string nextPartNumberMarker;
|
||||
/// <summary>
|
||||
/// 单次返回最大的条目数量
|
||||
/// </summary>
|
||||
public string maxParts;
|
||||
/// <summary>
|
||||
/// 返回条目是否被截断,布尔值:TRUE,FALSE
|
||||
/// </summary>
|
||||
public bool isTruncated;
|
||||
/// <summary>
|
||||
/// 表示每一个块的信息
|
||||
/// <see cref="Part"/>
|
||||
/// </summary>
|
||||
public List<Part> parts;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{ListParts:\n");
|
||||
stringBuilder.Append("Bucket:").Append(bucket).Append("\n");
|
||||
stringBuilder.Append("EncodingType:").Append(encodingType).Append("\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("UploadId:").Append(uploadId).Append("\n");
|
||||
if(owner != null)stringBuilder.Append(owner.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("PartNumberMarker:").Append(partNumberMarker).Append("\n");
|
||||
if(initiator != null) stringBuilder.Append(initiator.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("StorageClass:").Append(storageClass).Append("\n");
|
||||
stringBuilder.Append("NextPartNumberMarker:").Append(nextPartNumberMarker).Append("\n");
|
||||
stringBuilder.Append("MaxParts:").Append(maxParts).Append("\n");
|
||||
stringBuilder.Append("IsTruncated:").Append(isTruncated).Append("\n");
|
||||
if(parts != null)
|
||||
{
|
||||
foreach(Part part in parts)
|
||||
{
|
||||
if(part != null)stringBuilder.Append(part.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Owner
|
||||
{
|
||||
/**
|
||||
* 创建者的一个唯一标识
|
||||
*/
|
||||
public string id;
|
||||
/**
|
||||
* 创建者的用户名描述
|
||||
*/
|
||||
public string disPlayName;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Owner:\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
stringBuilder.Append("DisPlayName:").Append(disPlayName).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Initiator
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建者的一个唯一标识
|
||||
/// </summary>
|
||||
public string id;
|
||||
/// <summary>
|
||||
/// 创建者的用户名描述
|
||||
/// </summary>
|
||||
public string disPlayName;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Initiator:\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
stringBuilder.Append("DisPlayName:").Append(disPlayName).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Part
|
||||
{
|
||||
/// <summary>
|
||||
/// 块的编号
|
||||
/// </summary>
|
||||
public string partNumber;
|
||||
/// <summary>
|
||||
/// 块最后修改时间
|
||||
/// </summary>
|
||||
public string lastModified;
|
||||
/// <summary>
|
||||
/// Object 块的 MD5 算法校验值
|
||||
/// </summary>
|
||||
public string eTag;
|
||||
/// <summary>
|
||||
/// 块大小,单位 Byte
|
||||
/// </summary>
|
||||
public string size;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Part:\n");
|
||||
stringBuilder.Append("PartNumber:").Append(partNumber).Append("\n");
|
||||
stringBuilder.Append("LastModified:").Append(lastModified).Append("\n");
|
||||
stringBuilder.Append("ETag:").Append(eTag).Append("\n");
|
||||
stringBuilder.Append("Size:").Append(size).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
28
COSXML/Model/Tag/LocationConstraint.cs
Normal file
28
COSXML/Model/Tag/LocationConstraint.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
/// <summary>
|
||||
/// 地域信息
|
||||
/// <see cref="https://cloud.tencent.com/document/product/436/8275"/>
|
||||
/// </summary>
|
||||
public sealed class LocationConstraint
|
||||
{
|
||||
/// <summary>
|
||||
/// Bucket 所在地域
|
||||
/// <see cref="COSXML.Common.CosRegion"/>
|
||||
/// </summary>
|
||||
public string location;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{LocationConstraint:\n");
|
||||
stringBuilder.Append("Location:").Append(location).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
42
COSXML/Model/Tag/ObjectSelectionFormat.cs
Normal file
42
COSXML/Model/Tag/ObjectSelectionFormat.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace COSXML.Model.Tag {
|
||||
public sealed class ObjectSelectionFormat {
|
||||
|
||||
public readonly string CompressionType;
|
||||
|
||||
public readonly CSVFormat csvFormat;
|
||||
|
||||
public readonly JSONFormat jsonFormat;
|
||||
|
||||
public ObjectSelectionFormat(string CompressionType, CSVFormat csv) {
|
||||
this.CompressionType = CompressionType;
|
||||
this.csvFormat = csv;
|
||||
this.jsonFormat = null;
|
||||
}
|
||||
|
||||
public ObjectSelectionFormat(string CompressionType, JSONFormat json) {
|
||||
this.CompressionType = CompressionType;
|
||||
this.csvFormat = null;
|
||||
this.jsonFormat = json;
|
||||
}
|
||||
|
||||
public sealed class CSVFormat {
|
||||
public string FileHeaderInfo;
|
||||
public string RecordDelimiter;
|
||||
public string FieldDelimiter;
|
||||
public string QuoteCharacter;
|
||||
public string QuoteEscapeCharacter;
|
||||
public string Comments;
|
||||
public bool AllowQuotedRecordDelimiter;
|
||||
|
||||
public string QuoteFields;
|
||||
}
|
||||
|
||||
public sealed class JSONFormat {
|
||||
public string Type;
|
||||
|
||||
public string RecordDelimiter;
|
||||
}
|
||||
}
|
||||
}
|
||||
43
COSXML/Model/Tag/PostResponse.cs
Normal file
43
COSXML/Model/Tag/PostResponse.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 12:06:59 PM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class PostResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 对象的完整路径。
|
||||
/// </summary>
|
||||
public string location;
|
||||
/// <summary>
|
||||
/// 对象所在的存储桶
|
||||
/// </summary>
|
||||
public string bucket;
|
||||
/// <summary>
|
||||
/// 对象 key 名
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// 对象Etag 内容
|
||||
/// </summary>
|
||||
public string eTag;
|
||||
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{PostResponse:\n");
|
||||
stringBuilder.Append("Location:").Append(location).Append("\n");
|
||||
stringBuilder.Append("Bucket:").Append(bucket).Append("\n");
|
||||
stringBuilder.Append("Key:").Append(key).Append("\n");
|
||||
stringBuilder.Append("ETag:").Append(eTag).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
50
COSXML/Model/Tag/PreSignatureStruct.cs
Normal file
50
COSXML/Model/Tag/PreSignatureStruct.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class PreSignatureStruct
|
||||
{
|
||||
/// <summary>
|
||||
/// cos 服务的appid
|
||||
/// </summary>
|
||||
public string appid;
|
||||
/// <summary>
|
||||
/// 存储桶名称
|
||||
/// </summary>
|
||||
public string bucket;
|
||||
/// <summary>
|
||||
/// Bucket所属地域
|
||||
/// </summary>
|
||||
public string region;
|
||||
/// <summary>
|
||||
/// 设置 host
|
||||
/// </summary>
|
||||
public string host;
|
||||
/// <summary>
|
||||
/// 对象键
|
||||
/// </summary>
|
||||
public string key;
|
||||
/// <summary>
|
||||
/// true:https; false: http
|
||||
/// </summary>
|
||||
public bool isHttps;
|
||||
/// <summary>
|
||||
/// http request method : get , put , etc.
|
||||
/// </summary>
|
||||
public string httpMethod;
|
||||
/// <summary>
|
||||
/// 签名需要校验的url中查询参数
|
||||
/// </summary>
|
||||
public Dictionary<string, string> queryParameters;
|
||||
/// <summary>
|
||||
/// 签名需要校验的headers
|
||||
/// </summary>
|
||||
public Dictionary<string, string> headers;
|
||||
/// <summary>
|
||||
/// 签名 sign的有效期,若 小于 0,则取keyTime.
|
||||
/// </summary>
|
||||
public long signDurationSecond;
|
||||
}
|
||||
}
|
||||
63
COSXML/Model/Tag/ReplicationConfiguration.cs
Normal file
63
COSXML/Model/Tag/ReplicationConfiguration.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class ReplicationConfiguration
|
||||
{
|
||||
public string role;
|
||||
public List<Rule> rules;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{ReplicationConfiguration:\n");
|
||||
stringBuilder.Append("Role:").Append(role).Append("\n");
|
||||
if(rules != null)
|
||||
{
|
||||
foreach(Rule rule in rules)
|
||||
{
|
||||
if (rule != null) stringBuilder.Append(rule.GetInfo()).Append("\n");
|
||||
}
|
||||
}
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class Rule
|
||||
{
|
||||
public string id;
|
||||
public string status;
|
||||
public string prefix;
|
||||
public Destination destination;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Rule:\n");
|
||||
stringBuilder.Append("Id:").Append(id).Append("\n");
|
||||
stringBuilder.Append("Status:").Append(status).Append("\n");
|
||||
stringBuilder.Append("Prefix:").Append(prefix).Append("\n");
|
||||
if (destination != null) stringBuilder.Append(destination.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Destination
|
||||
{
|
||||
public string bucket;
|
||||
public string storageClass;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{Destination:\n");
|
||||
stringBuilder.Append("Bucket:").Append(bucket).Append("\n");
|
||||
stringBuilder.Append("StorageClass:").Append(storageClass).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
64
COSXML/Model/Tag/RestoreConfigure.cs
Normal file
64
COSXML/Model/Tag/RestoreConfigure.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
using COSXML.Common;
|
||||
using COSXML.Utils;
|
||||
/**
|
||||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||||
* 11/5/2018 11:46:17 AM
|
||||
* bradyxiao
|
||||
*/
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class RestoreConfigure
|
||||
{
|
||||
/// <summary>
|
||||
/// 设置临时副本的过期时间
|
||||
/// </summary>
|
||||
public int days;
|
||||
/// <summary>
|
||||
/// 归档存储工作参数配置
|
||||
/// <see cref="CASJobParameters"/>
|
||||
/// </summary>
|
||||
public CASJobParameters casJobParameters;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{RestoreRequest:\n");
|
||||
stringBuilder.Append("Days:").Append(days).Append("\n");
|
||||
if(casJobParameters != null)stringBuilder.Append(casJobParameters.GetInfo()).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public sealed class CASJobParameters
|
||||
{
|
||||
/// <summary>
|
||||
/// 恢复数据时,Tier 可以指定为 CAS 支持的三种恢复类型,分别为 Expedited、Standard、Bulk
|
||||
/// <see cref="Tier"/>
|
||||
/// </summary>
|
||||
public Tier tier = Tier.Standard;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{CASJobParameters:\n");
|
||||
stringBuilder.Append("Tier:").Append(EnumUtils.GetValue(tier)).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public enum Tier
|
||||
{
|
||||
[CosValue("Expedited")]
|
||||
Expedited = 0,
|
||||
|
||||
[CosValue("Standard")]
|
||||
Standard,
|
||||
|
||||
[CosValue("Bulk")]
|
||||
Bulk
|
||||
}
|
||||
}
|
||||
}
|
||||
35
COSXML/Model/Tag/Tagging.cs
Normal file
35
COSXML/Model/Tag/Tagging.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace COSXML.Model.Tag {
|
||||
public sealed class Tagging {
|
||||
|
||||
public readonly TagSet tagSet;
|
||||
|
||||
public Tagging() {
|
||||
this.tagSet = new TagSet();
|
||||
}
|
||||
|
||||
public void AddTag(string key, string value) {
|
||||
this.tagSet.tags.Add(new Tag(key, value));
|
||||
}
|
||||
|
||||
public sealed class TagSet {
|
||||
public readonly List<Tag> tags;
|
||||
|
||||
public TagSet() {
|
||||
this.tags = new List<Tag>();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Tag {
|
||||
public readonly string key;
|
||||
|
||||
public readonly string value;
|
||||
|
||||
public Tag(string key, string value) {
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
20
COSXML/Model/Tag/VersioningConfiguration.cs
Normal file
20
COSXML/Model/Tag/VersioningConfiguration.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Text;
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class VersioningConfiguration
|
||||
{
|
||||
public string status;
|
||||
|
||||
public string GetInfo()
|
||||
{
|
||||
StringBuilder stringBuilder = new StringBuilder("{VersioningConfiguration:\n");
|
||||
stringBuilder.Append("Status:").Append(status).Append("\n");
|
||||
stringBuilder.Append("}");
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
46
COSXML/Model/Tag/WebsiteConfiguration.cs
Normal file
46
COSXML/Model/Tag/WebsiteConfiguration.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
|
||||
|
||||
namespace COSXML.Model.Tag
|
||||
{
|
||||
public sealed class WebsiteConfiguration
|
||||
{
|
||||
public IndexDocument indexDocument;
|
||||
public ErrorDocument errorDocument;
|
||||
public RedirectAllRequestTo redirectAllRequestTo;
|
||||
public System.Collections.Generic.List<RoutingRule> routingRules;
|
||||
|
||||
public sealed class IndexDocument
|
||||
{
|
||||
public string suffix;
|
||||
}
|
||||
|
||||
public sealed class ErrorDocument
|
||||
{
|
||||
public string key;
|
||||
}
|
||||
|
||||
public sealed class RedirectAllRequestTo
|
||||
{
|
||||
public string protocol;
|
||||
}
|
||||
|
||||
public sealed class RoutingRule
|
||||
{
|
||||
public Contidion contidion;
|
||||
public Redirect redirect;
|
||||
}
|
||||
|
||||
public sealed class Contidion
|
||||
{
|
||||
public int httpErrorCodeReturnedEquals;
|
||||
public string keyPrefixEquals;
|
||||
}
|
||||
|
||||
public sealed class Redirect
|
||||
{
|
||||
public string protocol;
|
||||
public string replaceKeyWith;
|
||||
public string replaceKeyPrefixWith;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user