188 lines
5.2 KiB
C#
188 lines
5.2 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
|
||
using System.Text;
|
||
using COSXML.Network;
|
||
/**
|
||
* Copyright (c) 2018 Tencent Cloud. All rights reserved.
|
||
* 11/6/2018 9:29:29 PM
|
||
* bradyxiao
|
||
*/
|
||
namespace COSXML
|
||
{
|
||
public sealed class CosXmlConfig
|
||
{
|
||
private HttpClientConfig httpConfig;
|
||
private string appid;
|
||
private string region;
|
||
private bool isHttps;
|
||
private bool isDebug;
|
||
public string endpointSuffix {get;}
|
||
|
||
public string host {get;}
|
||
|
||
private CosXmlConfig(Builder builder)
|
||
{
|
||
this.appid = builder.appid;
|
||
this.region = builder.region;
|
||
this.isHttps = builder.isHttps;
|
||
this.httpConfig = builder.httpClientConfigBuilder.Build();
|
||
this.isDebug = builder.isDebug;
|
||
this.endpointSuffix = builder.endpointSuffix;
|
||
this.host = builder.host;
|
||
}
|
||
|
||
public string Appid
|
||
{
|
||
get { return appid; }
|
||
}
|
||
|
||
public string Region
|
||
{
|
||
get { return region; }
|
||
}
|
||
|
||
public bool IsHttps
|
||
{
|
||
get { return isHttps; }
|
||
}
|
||
|
||
public HttpClientConfig HttpConfig
|
||
{
|
||
get { return httpConfig; }
|
||
}
|
||
|
||
public bool IsDebugLog
|
||
{
|
||
get { return isDebug; }
|
||
}
|
||
|
||
public sealed class Builder
|
||
{
|
||
internal string appid;
|
||
internal string region;
|
||
internal bool isHttps = false;
|
||
internal HttpClientConfig.Builder httpClientConfigBuilder;
|
||
internal bool isDebug = false;
|
||
internal string endpointSuffix;
|
||
internal string host;
|
||
public Builder()
|
||
{
|
||
httpClientConfigBuilder = new HttpClientConfig.Builder();
|
||
}
|
||
/// <summary>
|
||
/// cos 服务的Appid
|
||
/// </summary>
|
||
/// <param name="appid"></param>
|
||
/// <returns></returns>
|
||
public Builder SetAppid(string appid)
|
||
{
|
||
this.appid = appid;
|
||
return this;
|
||
}
|
||
/// <summary>
|
||
/// 存储桶所属地域
|
||
/// <see cref="COSXML.Common.CosRegion"/>
|
||
/// </summary>
|
||
/// <param name="region"></param>
|
||
/// <returns></returns>
|
||
public Builder SetRegion(string region)
|
||
{
|
||
this.region = region;
|
||
return this;
|
||
}
|
||
/// <summary>
|
||
/// true:https请求
|
||
/// </summary>
|
||
/// <param name="isHttps"></param>
|
||
/// <returns></returns>
|
||
public Builder IsHttps(bool isHttps)
|
||
{
|
||
this.isHttps = isHttps;
|
||
return this;
|
||
}
|
||
public Builder SetConnectionLimit(int connectionLimit)
|
||
{
|
||
this.httpClientConfigBuilder.SetConnectionLimit(connectionLimit);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetMaxRetry(int maxRetry)
|
||
{
|
||
this.httpClientConfigBuilder.SetMaxRetry(maxRetry);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetConnectionTimeoutMs(int connectionTimeoutMs)
|
||
{
|
||
this.httpClientConfigBuilder.SetConnectionTimeoutMs(connectionTimeoutMs);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetReadWriteTimeoutMs(int readWriteTimeoutMs)
|
||
{
|
||
this.httpClientConfigBuilder.SetReadWriteTimeoutMs(readWriteTimeoutMs);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetProxyHost(string host)
|
||
{
|
||
this.httpClientConfigBuilder.SetProxyHost(host);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetProxyPort(int port)
|
||
{
|
||
this.httpClientConfigBuilder.SetProxyPort(port);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetProxyUserName(string userName)
|
||
{
|
||
this.httpClientConfigBuilder.SetProxyUserName(userName);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetProxyUserPassword(string password)
|
||
{
|
||
this.httpClientConfigBuilder.SetProxyUserPassword(password);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetProxyDomain(string domain)
|
||
{
|
||
this.httpClientConfigBuilder.SetProxyDomain(domain);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetAllowAutoRedirect(bool isAllow)
|
||
{
|
||
this.httpClientConfigBuilder.AllowAutoRedirect(isAllow);
|
||
return this;
|
||
}
|
||
|
||
public Builder SetDebugLog(bool isDebug)
|
||
{
|
||
this.isDebug = isDebug;
|
||
return this;
|
||
}
|
||
|
||
public Builder setEndpointSuffix(string suffix) {
|
||
this.endpointSuffix = suffix;
|
||
return this;
|
||
}
|
||
|
||
public Builder setHost(string host) {
|
||
this.host = host;
|
||
return this;
|
||
}
|
||
|
||
public CosXmlConfig Build()
|
||
{
|
||
return new CosXmlConfig(this);
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|