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)); }