using System;
using System.Collections.Generic;
using System.Text;
using COSXML.Common;
using COSXML.Model.Tag;
using COSXML.Network;
using COSXML.CosException;
namespace COSXML.Model.Bucket
{
///
/// 设置 Bucket CORS
///
///
public sealed class PutBucketCORSRequest : BucketRequest
{
///
/// CORS 配置信息
///
///
private CORSConfiguration corsConfiguration;
public PutBucketCORSRequest(string bucket)
: base(bucket)
{
this.method = CosRequestMethod.PUT;
this.queryParameters.Add("cors", null);
corsConfiguration = new CORSConfiguration();
corsConfiguration.corsRules = new List();
this.needMD5 = true;
}
public override Network.RequestBody GetRequestBody()
{
string content = Transfer.XmlBuilder.BuildCORSConfigXML(corsConfiguration);
byte[] data = Encoding.UTF8.GetBytes(content);
ByteRequestBody body = new ByteRequestBody(data);
return body;
}
///
/// 设置 CORS 规则
///
///
///
public void SetCORSRule(CORSConfiguration.CORSRule corsRule)
{
if (corsRule != null)
{
corsConfiguration.corsRules.Add(corsRule);
}
}
///
/// 设置 CORS 规则
///
///
///
public void SetCORSRules(List corsRules)
{
if (corsRules != null)
{
corsConfiguration.corsRules.AddRange(corsRules);
}
}
public override void CheckParameters()
{
base.CheckParameters();
if (corsConfiguration.corsRules.Count == 0) throw new CosClientException((int)CosClientError.INVALID_ARGUMENT, "corsConfiguration.corsRules.Count = 0");
}
}
}