Example #1
0
        private async Task <HttpResponseMessage> ListContainersAsync()
        {
            var client = DashConfiguration.NamespaceAccount.CreateCloudBlobClient();
            // Extract query parameters
            var queryParams  = this.Request.GetQueryParameters();
            var includeFlags = String.Join(",", queryParams.Values <string>("include"));
            ContainerListingDetails listDetails = ContainerListingDetails.None;

            Enum.TryParse(includeFlags, true, out listDetails);
            var retval = new ContainerListResults
            {
                RequestVersion  = this.Request.GetHeaders().Value("x-ms-version", StorageServiceVersions.Version_2009_09_19),
                ServiceEndpoint = this.Request.RequestUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped),
                Prefix          = queryParams.Value <string>("prefix"),
                Marker          = queryParams.Value <string>("marker"),
                MaxResults      = queryParams.ValueOrNull <int>("maxresults"),
                IncludeDetails  = listDetails,
            };

            retval.Containers = await client.ListContainersSegmentedAsync(
                retval.Prefix,
                listDetails,
                retval.MaxResults == 0?(int?)null : retval.MaxResults,
                new BlobContinuationToken
            {
                NextMarker = retval.Marker,
            },
                null,
                null);

            return(CreateResponse(retval));
        }
Example #2
0
        static void SerializeContainerListing(XmlWriter writer, ContainerListResults results)
        {
            writer.WriteStartElement("EnumerationResults");
            var uri = new UriBuilder(results.ServiceEndpoint);

            if (results.RequestVersion >= StorageServiceVersions.Version_2013_08_15)
            {
                writer.WriteAttributeString("ServiceEndpoint", results.ServiceEndpoint);
            }
            else
            {
                writer.WriteAttributeString("AccountName", results.ServiceEndpoint);
            }
            writer.WriteElementStringIfNotNull("Prefix", results.Prefix);
            writer.WriteElementStringIfNotNull("Marker", results.Marker);
            writer.WriteElementStringIfNotNull("MaxResults", results.MaxResults);
            writer.WriteStartElement("Containers");
            foreach (var container in results.Containers.Results)
            {
                writer.WriteStartElement("Container");
                writer.WriteElementString("Name", container.Name);
                if (results.RequestVersion < StorageServiceVersions.Version_2013_08_15)
                {
                    writer.WriteElementString("Url", uri.AddPathSegment(container.Name).Uri.ToString());
                }
                writer.WriteStartElement("Properties");
                writer.WriteElementString("Last-Modified", container.Properties.LastModified);
                writer.WriteElementString("Etag", container.Properties.ETag);
                if (results.RequestVersion >= StorageServiceVersions.Version_2012_02_12)
                {
                    writer.WriteElementStringIfNotEnumValue("LeaseStatus", container.Properties.LeaseStatus, LeaseStatus.Unspecified);
                    writer.WriteElementStringIfNotEnumValue("LeaseState", container.Properties.LeaseState, LeaseState.Unspecified);
                    writer.WriteElementStringIfNotEnumValue("LeaseDuration", container.Properties.LeaseDuration, LeaseDuration.Unspecified);
                }
                writer.WriteEndElement();       // Properties
                if (results.IncludeDetails.IsFlagSet(ContainerListingDetails.Metadata))
                {
                    writer.WriteStartElement("Metadata");
                    foreach (var metadataItem in container.Metadata)
                    {
                        writer.WriteElementString(metadataItem.Key, metadataItem.Value);
                    }
                    writer.WriteEndElement();   // Metadata
                }
                writer.WriteEndElement();       // Container
            }
            writer.WriteEndElement();           // Containers
            if (results.Containers.ContinuationToken != null)
            {
                writer.WriteElementStringIfNotNull("NextMarker", results.Containers.ContinuationToken.NextMarker);
            }
            writer.WriteEndElement();           // EnumerationResults
        }
Example #3
0
 static void SerializeContainerListing(XmlWriter writer, ContainerListResults results)
 {
     writer.WriteStartElement("EnumerationResults");
     var uri = new UriBuilder(results.ServiceEndpoint);
     if (results.RequestVersion >= StorageServiceVersions.Version_2013_08_15)
     {
         writer.WriteAttributeString("ServiceEndpoint", results.ServiceEndpoint);
     }
     else
     {
         writer.WriteAttributeString("AccountName", results.ServiceEndpoint);
     }
     writer.WriteElementStringIfNotNull("Prefix", results.Prefix);
     writer.WriteElementStringIfNotNull("Marker", results.Marker);
     writer.WriteElementStringIfNotNull("MaxResults", results.MaxResults);
     writer.WriteStartElement("Containers");
     foreach (var container in results.Containers.Results)
     {
         writer.WriteStartElement("Container");
         writer.WriteElementString("Name", container.Name);
         if (results.RequestVersion < StorageServiceVersions.Version_2013_08_15)
         {
             writer.WriteElementString("Url", uri.AddPathSegment(container.Name).Uri.ToString());
         }
         writer.WriteStartElement("Properties");
         writer.WriteElementString("Last-Modified", container.Properties.LastModified);
         writer.WriteElementString("Etag", container.Properties.ETag);
         if (results.RequestVersion >= StorageServiceVersions.Version_2012_02_12)
         {
             writer.WriteElementStringIfNotEnumValue("LeaseStatus", container.Properties.LeaseStatus, LeaseStatus.Unspecified);
             writer.WriteElementStringIfNotEnumValue("LeaseState", container.Properties.LeaseState, LeaseState.Unspecified);
             writer.WriteElementStringIfNotEnumValue("LeaseDuration", container.Properties.LeaseDuration, LeaseDuration.Unspecified);
         }
         writer.WriteEndElement();       // Properties
         if (results.IncludeDetails.IsFlagSet(ContainerListingDetails.Metadata))
         {
             writer.WriteStartElement("Metadata");
             foreach (var metadataItem in container.Metadata)
             {
                 writer.WriteElementString(metadataItem.Key, metadataItem.Value);
             }
             writer.WriteEndElement();   // Metadata
         }
         writer.WriteEndElement();       // Container
     }
     writer.WriteEndElement();           // Containers
     if (results.Containers.ContinuationToken != null)
     {
         writer.WriteElementStringIfNotNull("NextMarker", results.Containers.ContinuationToken.NextMarker);
     }
     writer.WriteEndElement();           // EnumerationResults 
 }
Example #4
0
        private async Task<HttpResponseMessage> ListContainersAsync()
        {
            var client = DashConfiguration.NamespaceAccount.CreateCloudBlobClient();
            // Extract query parameters
            var queryParams = this.Request.GetQueryParameters();
            var includeFlags = String.Join(",", queryParams.Values<string>("include"));
            ContainerListingDetails listDetails = ContainerListingDetails.None;
            Enum.TryParse(includeFlags, true, out listDetails);
            var retval = new ContainerListResults
            {
                RequestVersion = this.Request.GetHeaders().RequestVersion,
                ServiceEndpoint = this.Request.RequestUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped),
                Prefix = queryParams.Value<string>("prefix"),
                Marker = queryParams.Value<string>("marker"),
                MaxResults = queryParams.ValueOrNull<int>("maxresults"),
                IncludeDetails = listDetails,
            };

            retval.Containers = await client.ListContainersSegmentedAsync(
                retval.Prefix, 
                listDetails,
                retval.MaxResults == 0 ? (int?)null : retval.MaxResults, 
                new BlobContinuationToken
                {
                    NextMarker = retval.Marker, 
                },
                null, 
                null);
            return CreateResponse(retval);
        }