private IEnumerable <S3FileKey> ProcessResponse(ListObjectsV2Response response, S3FolderKey filter) { if (response == null) { throw new ArgumentNullException(nameof(response)); } foreach (var s3Object in response.S3Objects.Where(x => !x.IsFolder())) { yield return(FileKeyGenerator.New().WithFileName(s3Object.Key) .WithBucketType(filter.BucketType) .Build()); } }
public static S3FileKey ToVersionedS3FileKey(this S3ObjectVersion objectVersion, S3FileKey initialKey) { if (objectVersion == null) { throw new ArgumentNullException(nameof(objectVersion)); } if (initialKey == null) { throw new ArgumentNullException(nameof(initialKey)); } return(FileKeyGenerator.New() .WithFileName(initialKey.FileName) .WithFolderPath(initialKey.FolderPath) .WithBucketType(initialKey.BucketType) .WithVersion(objectVersion.VersionId) .Build()); }
private async Task DownloadFile(FileStream downloadStream, Stream compareStream, bool ms, bool mi, KeyTypeFlags flags) { SymbolStoreFile file = new SymbolStoreFile(downloadStream, downloadStream.Name); SymbolStores.SymbolStore store = null; if (ms) { Uri.TryCreate("http://msdl.microsoft.com/download/symbols/", UriKind.Absolute, out Uri uri); store = new HttpSymbolStore(_tracer, store, uri); } if (mi) { Uri.TryCreate("http://symweb.corp.microsoft.com/", UriKind.Absolute, out Uri uri); store = new SymwebHttpSymbolStore(_tracer, store, uri); } var generator = new FileKeyGenerator(_tracer, file); IEnumerable <SymbolStoreKey> keys = generator.GetKeys(flags); Assert.True(keys.Count() > 0); foreach (SymbolStoreKey key in keys) { if (key.FullPathName.Contains(".ni.pdb")) { continue; } using (SymbolStoreFile symbolFile = await store.GetFile(key, CancellationToken.None)) { if (symbolFile != null) { Assert.True(downloadStream != symbolFile.Stream); Assert.True(compareStream != symbolFile.Stream); compareStream.Seek(0, SeekOrigin.Begin); CompareStreams(compareStream, symbolFile.Stream); } } } }
protected override Task <SymbolStoreFile> GetFileInner(SymbolStoreKey key, CancellationToken token) { SymbolStoreFile result = null; if (SymbolStoreKey.IsKeyValid(key.Index)) { string filePath = Path.Combine(Directory, Path.GetFileName(key.FullPathName)); if (File.Exists(filePath)) { try { Stream fileStream = File.OpenRead(filePath); var file = new SymbolStoreFile(fileStream, filePath); var generator = new FileKeyGenerator(Tracer, file); foreach (SymbolStoreKey targetKey in generator.GetKeys(KeyTypeFlags.IdentityKey)) { if (key.Equals(targetKey)) { result = file; break; } } } catch (Exception ex) when(ex is UnauthorizedAccessException || ex is IOException) { } } } else { Tracer.Error("DirectorySymbolStore: invalid key index {0}", key.Index); } return(Task.FromResult(result)); }
private async Task DownloadFile(string path, bool ms, bool mi, string cache) { using (Stream stream = TestUtilities.OpenCompressedFile(path)) { SymbolStoreFile file = new SymbolStoreFile(stream, path); SymbolStores.SymbolStore store = null; if (ms) { Uri.TryCreate("http://msdl.microsoft.com/download/symbols/", UriKind.Absolute, out Uri uri); store = new HttpSymbolStore(_tracer, store, uri); } if (mi) { Uri.TryCreate("http://symweb.corp.microsoft.com/", UriKind.Absolute, out Uri uri); store = new SymwebHttpSymbolStore(_tracer, store, uri); } if (cache != null) { store = new CacheSymbolStore(_tracer, store, cache); } KeyTypeFlags flags = KeyTypeFlags.IdentityKey; var generator = new FileKeyGenerator(_tracer, file); IEnumerable <SymbolStoreKey> keys = generator.GetKeys(flags); foreach (SymbolStoreKey key in keys) { using (SymbolStoreFile symbolFile = await store.GetFile(key, CancellationToken.None)) { if (symbolFile != null) { CompareStreams(file.Stream, symbolFile.Stream); } } } } }