/// <summary> /// 获取当前传入的区域信息 /// </summary> /// <param name="request">http 请求信息</param> /// <param name="regionNameOverride"> region name 字符串</param> /// <returns>格式化后的region 信息 </returns> private string ParseRegion(SdkHttpRequest request, string regionNameOverride) { #if NET35 return(!string.IsNullOrEmpty(regionNameOverride) && !string.IsNullOrEmpty(regionNameOverride.Trim()) ? regionNameOverride : HostNameUtils.ParseRegion(request.GetEndpoint().Host , this.ServiceName)); #else return(!string.IsNullOrWhiteSpace(regionNameOverride)? regionNameOverride : HostNameUtils.ParseRegion(request.GetEndpoint().Host , this.ServiceName)); #endif }
/// <summary> /// 构造方法 /// </summary> /// <param name="request">http 请求信息</param> /// <param name="signingDateOverride">要重写的时间信息</param> /// <param name="regionNameOverride">要重写的region name</param> /// <param name="serviceName">要重写的service name</param> /// <param name="signingAlgorithm">要使用的加密算法字符串</param> public SignerRequestParams(SdkHttpRequest request, DateTime?signingDateOverride, string regionNameOverride, string serviceName, string signingAlgorithm) { #if NET35 if (string.IsNullOrEmpty(signingAlgorithm) || string.IsNullOrEmpty(signingAlgorithm.Trim())) #else if (string.IsNullOrWhiteSpace(signingAlgorithm)) #endif { throw new ArgumentNullException("Signing Algorithm can not be null."); } this.Request = request ?? throw new ArgumentNullException("Request can not be null."); DateTime dateTimeUtcNow = signingDateOverride == null?DateTime.UtcNow:signingDateOverride.Value; this.FormattedSigningDate = dateTimeUtcNow.ToString("yyyyMMdd"); this.ServiceName = serviceName; this.RegionName = ParseRegion(request, regionNameOverride); this.Scope = GenerateScope(this.FormattedSigningDate, this.ServiceName, this.RegionName); this.FormattedSigningDateTime = dateTimeUtcNow.ToString("yyyyMMdd'T'HHmmss'Z'"); this.SigningAlgorithm = signingAlgorithm; }