Example #1
0
        /// <summary>
        /// 指定したコンテナとdirectory以下のBlob一覧とメタデータを取得する。
        /// </summary>
        /// <param name="directory">ディレクトリ</param>
        /// <returns>ファイル一覧</returns>
        public IEnumerable <ArchiveFile> GetArchiveFiles(ArchiveDirectory directory)
        {
            _log.EnterJson("ArchiveDirectory: {0}", directory);

            Assert.IfNull(directory);
            CloudBlobContainer container     = _collectingBlob.GetContainerReadOnly(directory.ContainerName ?? string.Empty);
            CloudBlobDirectory blobDirectory = container.GetDirectoryReference(directory.DirectoryPath);
            var blobs = new List <CloudBlockBlob>();

            _polly.Execute(
                () =>
            {
                var token = default(BlobContinuationToken);
                do
                {
                    // Blob一覧を取得
                    BlobResultSegment segment = null;

                    // 指定しない場合上限の5000件ずつ取得される
                    segment = blobDirectory.ListBlobsSegmentedAsync(true, BlobListingDetails.Metadata, null, token, null, null).Result;

                    token = segment.ContinuationToken;
                    blobs.AddRange(segment.Results.OfType <CloudBlockBlob>());
                }while (token != null);
            });

            return(blobs.Select(blob => Blob.BlobToArchiveFile(blob)));
        }
Example #2
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="settings">AppSettings</param>
        /// <param name="primaryBlob">PrimaryBlob</param>
        /// <param name="polly">BlobPolly</param>
        /// <param name="logger">Logger</param>
        public PrimaryBlobRepository(
            AppSettings settings,
            PrimaryBlob primaryBlob,
            BlobPolly polly,
            ILogger <PrimaryBlobRepository> logger)
        {
            Assert.IfNull(settings);
            Assert.IfNull(primaryBlob);
            Assert.IfNull(logger);
            Assert.IfNull(polly);

            _settings    = settings;
            _primaryBlob = primaryBlob;
            _polly       = polly;
            _log         = logger;
        }