sdk/Transform/ListObjectVersionsResponseDeserializer.cs (83 lines of code) (raw):
/*
* Copyright (C) Alibaba Cloud Computing
* All rights reserved.
*
*/
using System.IO;
using Aliyun.OSS.Common.Communication;
using Aliyun.OSS.Model;
using Aliyun.OSS.Util;
namespace Aliyun.OSS.Transform
{
internal class ListObjectVersionsResponseDeserializer : ResponseDeserializer<ObjectVersionList, ListVersionsResult>
{
public ListObjectVersionsResponseDeserializer(IDeserializer<Stream, ListVersionsResult> contentDeserializer)
: base(contentDeserializer)
{ }
public override ObjectVersionList Deserialize(ServiceResponse xmlStream)
{
var model = ContentDeserializer.Deserialize(xmlStream.Content);
string encodeType = model.EncodingType == null ?
string.Empty : model.EncodingType.ToLowerInvariant();
var result = new ObjectVersionList(model.Name)
{
Delimiter = Decode(model.Delimiter, encodeType),
Prefix = Decode(model.Prefix, encodeType),
KeyMarker = Decode(model.KeyMarker, encodeType),
NextKeyMarker = Decode(model.NextKeyMarker, encodeType),
VersionIdMarker = model.VersionIdMarker,
NextVersionIdMarker = model.NextVersionIdMarker
};
if (model.MaxKeys.HasValue)
result.MaxKeys = model.MaxKeys.Value;
if (model.IsTruncated.HasValue)
result.IsTruncated = model.IsTruncated.Value;
if (model.ObjectVersions != null)
{
foreach(var objectVersion in model.ObjectVersions)
{
var summary = new ObjectVersionSummary
{
BucketName = model.Name,
Key = Decode(objectVersion.Key, encodeType),
VersionId = objectVersion.VersionId,
IsLatest = objectVersion.IsLatest,
LastModified = objectVersion.LastModified,
ETag = objectVersion.ETag != null ? OssUtils.TrimQuotes(objectVersion.ETag) : string.Empty,
Size = objectVersion.Size,
StorageClass = objectVersion.StorageClass,
Type = objectVersion.Type,
Owner = objectVersion.Owner != null ?
new Owner(objectVersion.Owner.Id, objectVersion.Owner.DisplayName) : null
};
result.AddObjectVersionSummary(summary);
}
}
if (model.ObjectDeleteMarkers != null)
{
foreach (var deleteMarker in model.ObjectDeleteMarkers)
{
var summary = new DeleteMarkerSummary
{
BucketName = model.Name,
Key = Decode(deleteMarker.Key, encodeType),
VersionId = deleteMarker.VersionId,
IsLatest = deleteMarker.IsLatest,
LastModified = deleteMarker.LastModified,
Owner = deleteMarker.Owner != null ?
new Owner(deleteMarker.Owner.Id, deleteMarker.Owner.DisplayName) : null
};
result.AddDeleteMarkerSummary(summary);
}
}
if (model.CommonPrefixes != null)
{
foreach(var prefixes in model.CommonPrefixes)
{
if (prefixes.Prefix != null)
{
result.AddCommonPrefix(Decode(prefixes.Prefix, encodeType));
}
}
}
DeserializeGeneric(xmlStream, result);
return result;
}
}
}