in sdk/Domain/CopyObjectRequest.cs [112:163]
internal void Populate(IDictionary<string, string> headers)
{
var copyHeaderValue = OssUtils.BuildCopyObjectSource(SourceBucketName, SourceKey);
if (!string.IsNullOrEmpty(SourceVersionId))
{
copyHeaderValue = copyHeaderValue + "?versionId=" + SourceVersionId;
}
headers.Add(OssHeaders.CopyObjectSource, copyHeaderValue);
if (ModifiedSinceConstraint != null)
{
headers.Add(OssHeaders.CopySourceIfModifedSince,
DateUtils.FormatRfc822Date(ModifiedSinceConstraint.Value));
}
if (UnmodifiedSinceConstraint != null)
{
headers.Add(OssHeaders.CopySourceIfUnmodifiedSince,
DateUtils.FormatRfc822Date(UnmodifiedSinceConstraint.Value));
}
if (_matchingETagConstraints.Count > 0)
{
headers.Add(OssHeaders.CopySourceIfMatch, OssUtils.JoinETag(_matchingETagConstraints));
}
if (_nonmatchingETagConstraints.Count > 0)
{
headers.Add(OssHeaders.CopySourceIfNoneMatch,
OssUtils.JoinETag(_nonmatchingETagConstraints));
}
if (NewObjectMetadata != null)
{
headers.Add(OssHeaders.CopyObjectMetaDataDirective, "REPLACE");
NewObjectMetadata.Populate(headers);
}
// Remove Content-Length header, ObjectMeta#Populate will create
// ContentLength header, but we do not need it for the request body is empty.
headers.Remove(HttpHeaders.ContentLength);
if (RequestPayer == RequestPayer.Requester)
{
headers.Add(OssHeaders.OssRequestPayer, RequestPayer.Requester.ToString().ToLowerInvariant());
}
if (TrafficLimit > 0)
{
headers.Add(OssHeaders.OssTrafficLimit, TrafficLimit.ToString());
}
}