in sdk/OssClient.cs [1015:1080]
public PutObjectResult PutObject(Uri signedUrl, Stream content, ObjectMetadata metadata)
{
// prepare request
var request = new ServiceRequest
{
Method = HttpMethod.Put,
Endpoint = OssUtils.GetEndpointFromSignedUrl(signedUrl),
ResourcePath = OssUtils.GetResourcePathFromSignedUrl(signedUrl),
ParametersInUri = true
};
var parameters = OssUtils.GetParametersFromSignedUrl(signedUrl);
foreach (var param in parameters)
{
request.Parameters.Add(param.Key, param.Value);
}
request.Content = content;
// populate headers
if (metadata != null)
{
//prevent to be assigned default value in metadata.Populate
if (metadata.ContentType == null)
{
request.Headers[HttpHeaders.ContentType] = "";
}
metadata.Populate(request.Headers);
//remove empty content-type
if (request.Headers[HttpHeaders.ContentType] == "") {
request.Headers.Remove(HttpHeaders.ContentType);
}
}
if (!request.Headers.ContainsKey(HttpHeaders.ContentLength))
{
request.Headers[HttpHeaders.ContentLength] = content.Length.ToString();
}
// prepare context
var context = new ExecutionContext();
context.Signer = null;
context.Credentials = null;
if (ObjectMetadata.HasCallbackHeader(metadata))
{
context.ResponseHandlers.Add(new CallbackResponseHandler());
}
else
{
context.ResponseHandlers.Add(new ErrorResponseHandler());
}
ClientConfiguration config = OssUtils.GetClientConfiguration(_serviceClient);
if (config.EnableCrcCheck)
{
var hashStream = new Crc64Stream(request.Content, null, request.Content.Length);
request.Content = hashStream;
context.ResponseHandlers.Add(new Crc64CheckHandler(hashStream));
}
// get response
var serviceResponse = _serviceClient.Send(request, context);
// build result
var putObjectRequest = new PutObjectRequest(null, null, null, metadata);
var ResponseDeserializer = new PutObjectResponseDeserializer(putObjectRequest);
return ResponseDeserializer.Deserialize(serviceResponse);
}