public HeadObjectResponse Parse(HeadObjectRequest request, IWebResponse response)
 {
     using (response)
     {
         return(new HeadObjectResponse(
                    long.Parse(response.Headers.Single(kvp => kvp.Key.ToLowerInvariant() == "content-length").Value),
                    response.Headers.Single(kvp => kvp.Key.ToLowerInvariant() == "etag").Value,
                    ResponseParseUtilities.ExtractCustomMetadata(response.Headers)
                    ));
     }
 }
 public GetObjectResponse Parse(GetObjectRequest request, IWebResponse response)
 {
     using (response)
     {
         ResponseParseUtilities.HandleStatusCode(
             response,
             request.GetByteRanges().Any()
                 ? HttpStatusCode.PartialContent
                 : HttpStatusCode.OK
             );
         using (var responseStream = response.GetResponseStream())
         {
             responseStream.CopyTo(request.DestinationStream, this._copyBufferSize);
         }
         return(new GetObjectResponse(
                    metadata: ResponseParseUtilities.ExtractCustomMetadata(response.Headers)
                    ));
     }
 }
Esempio n. 3
0
 public GetBucketResponse Parse(GetBucketRequest request, IWebResponse response)
 {
     using (response)
     {
         ResponseParseUtilities.HandleStatusCode(response, HttpStatusCode.OK);
         using (Stream content = response.GetResponseStream())
         {
             var root = XmlExtensions.ReadDocument(content).ElementOrThrow("ListBucketResult");
             return(new GetBucketResponse(
                        name: root.TextOf("Name"),
                        prefix: root.TextOf("Prefix"),
                        marker: root.TextOf("Marker"),
                        nextMarker: root.TextOfOrNull("NextMarker"),
                        delimiter: root.TextOfOrNull("Delimiter"),
                        maxKeys: int.Parse(root.TextOf("MaxKeys")),
                        isTruncated: bool.Parse(root.TextOf("IsTruncated")),
                        creationDate: ParseDateTime(root.TextOfOrNull("CreationDate")),
                        objects: (
                            from obj in root.Elements("Contents")
                            let owner = obj.ElementOrThrow("Owner")
                                        select new Ds3ObjectInfo(
                                obj.TextOf("Key"),
                                long.Parse(obj.TextOf("Size")),
                                new Owner(owner.TextOf("ID"), owner.TextOf("DisplayName")),
                                obj.TextOf("ETag"),
                                obj.TextOf("StorageClass"),
                                ParseDateTime(obj.TextOf("LastModified"))
                                )
                            ).ToList(),
                        metadata: ResponseParseUtilities.ExtractCustomMetadata(response.Headers),
                        commonPrefixes: root
                        .Elements("CommonPrefixes")
                        .Select(cp => cp.TextOf("Prefix"))
                        .ToList()
                        ));
         }
     }
 }