sdk/Transform/ResponseDeserializer.cs (65 lines of code) (raw):

/* * Copyright (C) Alibaba Cloud Computing * All rights reserved. * */ using System.IO; using Aliyun.OSS.Util; using Aliyun.OSS.Common.Communication; using Aliyun.OSS.Model; namespace Aliyun.OSS.Transform { internal abstract class ResponseDeserializer<TResult, TModel> : IDeserializer<ServiceResponse, TResult> { protected IDeserializer<Stream, TModel> ContentDeserializer { get; private set; } public ResponseDeserializer(IDeserializer<Stream, TModel> contentDeserializer) { ContentDeserializer = contentDeserializer; } public abstract TResult Deserialize(ServiceResponse xmlStream); protected string Decode(string value, string decodeType) { if (decodeType.Equals(HttpUtils.UrlEncodingType)) { return HttpUtils.DecodeUri(value); } return value; } protected void DeserializeGeneric(ServiceResponse xmlStream, GenericResult result) { result.HttpStatusCode = xmlStream.StatusCode; if (xmlStream.Headers.ContainsKey(HttpHeaders.RequestId)) { result.RequestId = xmlStream.Headers[HttpHeaders.RequestId]; } if (xmlStream.Headers.ContainsKey(HttpHeaders.ContentLength)) { result.ContentLength = long.Parse(xmlStream.Headers[HttpHeaders.ContentLength]); } if (xmlStream.Headers.ContainsKey(HttpHeaders.ServerElapsedTime)) { result.ResponseMetadata.Add(HttpHeaders.ServerElapsedTime, xmlStream.Headers[HttpHeaders.ServerElapsedTime]); } if (xmlStream.Headers.ContainsKey(HttpHeaders.Date)) { result.ResponseMetadata.Add(HttpHeaders.Date, xmlStream.Headers[HttpHeaders.Date]); } if (xmlStream.Headers.ContainsKey(HttpHeaders.ETag)) { result.ResponseMetadata.Add(HttpHeaders.ETag, OssUtils.TrimQuotes(xmlStream.Headers[HttpHeaders.ETag])); } if (xmlStream.Headers.ContainsKey(HttpHeaders.ContentType)) { result.ResponseMetadata.Add(HttpHeaders.ContentType, xmlStream.Headers[HttpHeaders.ContentType]); } if (xmlStream.Headers.ContainsKey(HttpHeaders.HashCrc64Ecma)) { result.ResponseMetadata.Add(HttpHeaders.HashCrc64Ecma, xmlStream.Headers[HttpHeaders.HashCrc64Ecma]); } if (xmlStream.Headers.ContainsKey(HttpHeaders.ContentMd5)) { result.ResponseMetadata.Add(HttpHeaders.ContentMd5, xmlStream.Headers[HttpHeaders.ContentMd5]); } if (xmlStream.Headers.ContainsKey(HttpHeaders.QosDelayTime)) { result.ResponseMetadata.Add(HttpHeaders.QosDelayTime, xmlStream.Headers[HttpHeaders.QosDelayTime]); } } } }