Ejemplo n.º 1
0
        public IResultSegment <FunctionIndexEntry> Read(int maximumResults, string continuationToken)
        {
            BlobContinuationToken blobContinuationToken = BlobContinuationTokenSerializer.Deserialize(continuationToken);

            BlobResultSegment blobSegment;

            try
            {
                blobSegment = _functionsContainer.ListBlobsSegmented(
                    prefix: _functionsPrefix,
                    useFlatBlobListing: true,
                    blobListingDetails: BlobListingDetails.Metadata,
                    maxResults: maximumResults,
                    currentToken: blobContinuationToken,
                    options: null,
                    operationContext: null);
            }
            catch (StorageException exception)
            {
                if (exception.IsNotFound())
                {
                    return(null);
                }
                else
                {
                    throw;
                }
            }

            if (blobSegment == null)
            {
                return(null);
            }

            List <FunctionIndexEntry> results = new List <FunctionIndexEntry>();

            // Cast from IListBlobItem to ICloudBlob is safe due to useFlatBlobListing: true above.
            foreach (ICloudBlob blob in blobSegment.Results)
            {
                IDictionary <string, string> metadata = blob.Metadata;
                DateTimeOffset     version            = _versionMapper.GetVersion(metadata);
                FunctionIndexEntry result             = FunctionIndexEntry.Create(metadata, version);
                results.Add(result);
            }

            string nextContinuationToken = BlobContinuationTokenSerializer.Serialize(blobSegment.ContinuationToken);

            return(new ResultSegment <FunctionIndexEntry>(results, nextContinuationToken));
        }
        public IResultSegment <RecentInvocationEntry> Read(string relativePrefix, int maximumResults, string continuationToken)
        {
            BlobContinuationToken blobContinuationToken = BlobContinuationTokenSerializer.Deserialize(continuationToken);

            BlobResultSegment blobSegment;
            string            prefix = _directoryPrefix + relativePrefix;

            try
            {
                blobSegment = _container.ListBlobsSegmented(
                    prefix: prefix,
                    useFlatBlobListing: true,
                    blobListingDetails: BlobListingDetails.Metadata,
                    maxResults: maximumResults,
                    currentToken: blobContinuationToken,
                    options: null,
                    operationContext: null);
            }
            catch (StorageException exception)
            {
                if (exception.IsNotFound())
                {
                    return(null);
                }
                else
                {
                    throw;
                }
            }

            if (blobSegment == null)
            {
                return(null);
            }

            List <RecentInvocationEntry> results = new List <RecentInvocationEntry>();

            // Cast from IListBlobItem to ICloudBlob is safe due to useFlatBlobListing: true above.
            foreach (ICloudBlob blob in blobSegment.Results)
            {
                RecentInvocationEntry result = RecentInvocationEntry.Create(blob.Metadata);
                results.Add(result);
            }

            string nextContinuationToken = BlobContinuationTokenSerializer.Serialize(blobSegment.ContinuationToken);

            return(new ResultSegment <RecentInvocationEntry>(results, nextContinuationToken));
        }