Ejemplo n.º 1
0
        /// <inheritdoc/>
        public StorageObject Convert(string containerName, string objectName, IHttpHeadersAbstraction headers, long?objectLength = null)
        {
            containerName.AssertIsNotNullOrEmpty("containerName");
            objectName.AssertIsNotNullOrEmpty("objectName");
            headers.AssertIsNotNull("headers");

            try
            {
                var lastModified = DateTime.Parse(headers["Last-Modified"].First());
                var eTag         = headers["ETag"].First();
                var length       = long.Parse(headers["Content-Length"].First());
                if (objectLength.HasValue)
                {
                    length = objectLength.Value;
                }
                var contentType = headers["Content-Type"].First();
                var metadata    = headers.Where(kvp => kvp.Key.StartsWith("X-Object-Meta")).ToDictionary(header => header.Key.Substring(14, header.Key.Length - 14), header => header.Value.First());

                return(CreateStorageObject(objectName, containerName, lastModified, eTag, length, contentType, metadata, headers));
            }
            catch (Exception ex)
            {
                throw new FormatException(string.Format("Storage object '{0}' could not be parsed.", objectName), ex);
            }
        }
Ejemplo n.º 2
0
        /// <inheritdoc/>
        public StorageAccount Convert(string name, IHttpHeadersAbstraction headers, string payload)
        {
            name.AssertIsNotNullOrEmpty("name");
            headers.AssertIsNotNull("headers");
            payload.AssertIsNotNull("payload");

            var containerConverter = this.ServiceLocator.Locate <IStorageContainerPayloadConverter>();

            try
            {
                var totalBytes      = long.Parse(headers["X-Account-Bytes-Used"].First());
                var totalObjects    = int.Parse(headers["X-Account-Object-Count"].First());
                var totalContainers = int.Parse(headers["X-Account-Container-Count"].First());
                var containers      = containerConverter.Convert(payload);
                var metadata        = headers.Where(kvp => kvp.Key.StartsWith("X-Account-Meta")).ToDictionary(header => header.Key.Substring(15, header.Key.Length - 15), header => header.Value.First());

                return(new StorageAccount(name, totalBytes, totalObjects, totalContainers, metadata, containers));
            }
            catch (Exception ex)
            {
                throw new FormatException(string.Format("Storage Account '{0}' payload could not be parsed.", name), ex);
            }
        }
        /// <inheritdoc/>
        public StorageAccount Convert(string name, IHttpHeadersAbstraction headers, string payload)
        {
            name.AssertIsNotNullOrEmpty("name");
            headers.AssertIsNotNull("headers");
            payload.AssertIsNotNull("payload");

            var containerConverter = this.ServiceLocator.Locate<IStorageContainerPayloadConverter>();

            try
            {
                var totalBytes = long.Parse(headers["X-Account-Bytes-Used"].First());
                var totalObjects = int.Parse(headers["X-Account-Object-Count"].First());
                var totalContainers = int.Parse(headers["X-Account-Container-Count"].First());
                var containers = containerConverter.Convert(payload);
                var metadata = headers.Where(kvp => kvp.Key.StartsWith("X-Account-Meta")).ToDictionary(header => header.Key.Substring(15, header.Key.Length - 15), header => header.Value.First());

                return new StorageAccount(name, totalBytes, totalObjects, totalContainers, metadata, containers);
            }
            catch (Exception ex)
            {
                throw new FormatException(string.Format("Storage Account '{0}' payload could not be parsed.", name), ex);
            }
        }
 public HttpResponseAbstraction(Stream content, IHttpHeadersAbstraction headers, HttpStatusCode status)
 {
     this.Headers = headers ?? new HttpHeadersAbstraction();
     this.StatusCode = status;
     this.Content = content;
 }
Ejemplo n.º 5
0
 public HttpResponseAbstraction(Stream content, IHttpHeadersAbstraction headers, HttpStatusCode status)
 {
     this.Headers    = headers ?? new HttpHeadersAbstraction();
     this.StatusCode = status;
     this.Content    = content;
 }
        /// <summary>
        /// Creates the appropriate storage object based on the given parameters.
        /// </summary>
        /// <param name="objectName">the name of the object.</param>
        /// <param name="containerName">The name of the parent container.</param>
        /// <param name="lastModified">The last modified date of the object.</param>
        /// <param name="eTag">The eTag for the object.</param>
        /// <param name="length">The length of the object.</param>
        /// <param name="contentType">The content type of the object.</param>
        /// <param name="metadata">The associated metadata for the object.</param>
        /// <param name="headers">The http headers from the object request.</param>
        /// <returns>An instance of the StorageObject class.</returns>
        internal StorageObject CreateStorageObject(string objectName, string containerName, DateTime lastModified, string eTag, long length, string contentType, IDictionary<string, string> metadata, IHttpHeadersAbstraction headers)
        {
            IEnumerable<string> values;
            if (headers.TryGetValue("X-Static-Large-Object", out values))
            {
                if (values.Any(v => string.Equals(v, "true", StringComparison.OrdinalIgnoreCase)))
                {
                    return new StaticLargeObjectManifest(objectName, containerName, lastModified, eTag, length, contentType, metadata);
                }
            }

            if (headers.TryGetValue("X-Object-Manifest", out values))
            {
                var segPath = values.FirstOrDefault(v => !string.IsNullOrEmpty(v));
                if (!string.IsNullOrEmpty(segPath))
                {
                    return new DynamicLargeObjectManifest(objectName, containerName, lastModified, eTag, length, contentType, metadata, segPath);
                }
            }

            return new StorageObject(objectName, containerName, lastModified, eTag, length, contentType, metadata);
        }
        /// <inheritdoc/>
        public StorageObject Convert(string containerName, string objectName, IHttpHeadersAbstraction headers, long? objectLength = null)
        {
            containerName.AssertIsNotNullOrEmpty("containerName");
            objectName.AssertIsNotNullOrEmpty("objectName");
            headers.AssertIsNotNull("headers");
           
            try
            {
                var lastModified = DateTime.Parse(headers["Last-Modified"].First());
                var eTag = headers["ETag"].First();
                var length = long.Parse(headers["Content-Length"].First());
                if (objectLength.HasValue)
                {
                    length = objectLength.Value;
                }
                var contentType = headers["Content-Type"].First();
                var metadata = headers.Where(kvp => kvp.Key.StartsWith("X-Object-Meta")).ToDictionary(header => header.Key.Substring(14, header.Key.Length - 14), header => header.Value.First());

                return CreateStorageObject(objectName, containerName, lastModified, eTag, length, contentType, metadata, headers);
            }
            catch (Exception ex)
            {
                throw new FormatException(string.Format("Storage object '{0}' could not be parsed.", objectName), ex);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Creates the appropriate storage object based on the given parameters.
        /// </summary>
        /// <param name="objectName">the name of the object.</param>
        /// <param name="containerName">The name of the parent container.</param>
        /// <param name="lastModified">The last modified date of the object.</param>
        /// <param name="eTag">The eTag for the object.</param>
        /// <param name="length">The length of the object.</param>
        /// <param name="contentType">The content type of the object.</param>
        /// <param name="metadata">The associated metadata for the object.</param>
        /// <param name="headers">The http headers from the object request.</param>
        /// <returns>An instance of the StorageObject class.</returns>
        internal StorageObject CreateStorageObject(string objectName, string containerName, DateTime lastModified, string eTag, long length, string contentType, IDictionary <string, string> metadata, IHttpHeadersAbstraction headers)
        {
            IEnumerable <string> values;

            if (headers.TryGetValue("X-Static-Large-Object", out values))
            {
                if (values.Any(v => string.Equals(v, "true", StringComparison.OrdinalIgnoreCase)))
                {
                    return(new StaticLargeObjectManifest(objectName, containerName, lastModified, eTag, length, contentType, metadata));
                }
            }

            if (headers.TryGetValue("X-Object-Manifest", out values))
            {
                var segPath = values.FirstOrDefault(v => !string.IsNullOrEmpty(v));
                if (!string.IsNullOrEmpty(segPath))
                {
                    return(new DynamicLargeObjectManifest(objectName, containerName, lastModified, eTag, length, contentType, metadata, segPath));
                }
            }

            return(new StorageObject(objectName, containerName, lastModified, eTag, length, contentType, metadata));
        }