public void TestDownloadResourceAsynsUnknown() { var mockClient = new MockHttpClientProvider(); mockClient.ClientActionQueue.Enqueue(new MockHttpClientProvider.ClientAction() { ExpectedAddress = null, ReturnedValue = ExpectedResult, ThrownException = null }); var result = FileRecordInfo.DownloadResourceAsync(ResourceId, FileRecordInfo.ResourceType.Unknown, PayloadType, VariantType, mockClient).Result; Assert.AreEqual(null, result); }
public void TestDownloadResourceAsyncException() { var mockClient = new MockHttpClientProvider(); mockClient.ClientActionQueue.Enqueue(new MockHttpClientProvider.ClientAction() { ExpectedAddress = $"http://sansar-asset-production.s3-us-west-2.amazonaws.com/{AssetName}", ReturnedValue = ExpectedResult, ThrownException = new Exception() }); Assert.Throws <AggregateException>(() => { var result = FileRecordInfo.DownloadResourceAsync(ResourceId, ResourceType, PayloadType, VariantType, mockClient).Result; }); }
public void TestDownloadResourceAsyncAllVersions() { var mockClient = new MockHttpClientProvider(); mockClient.ClientActionQueue.Enqueue(new MockHttpClientProvider.ClientAction() { ExpectedAddress = $"http://sansar-asset-production.s3-us-west-2.amazonaws.com/{AssetName}", ReturnedValue = ExpectedResult, ThrownException = null }); var result = FileRecordInfo.DownloadResourceAsync(ResourceId, ResourceType, PayloadType, VariantType, mockClient).Result; Assert.AreEqual(ExpectedResult, result.Bytes); Assert.AreEqual(AssetName, result.Name); Assert.AreEqual(AssetVersion, result.Version); }
protected override void CustomFileExport(ExportParameters exportParameters) { if (exportParameters.FileExtension == ".fbx") { var downloadManifestResult = FileRecordInfo.DownloadResourceAsync( exportParameters.FileRecord.Info.Hash, FileRecordInfo.ResourceType.GeometryResourceImport, FileRecordInfo.PayloadType.Manifest, FileRecordInfo.VariantType.NoVariants, new LibSanBag.Providers.HttpClientProvider() ).Result; var manifest = ManifestResource.Create(); manifest.InitFromRawDecompressed(downloadManifestResult.Bytes); var sourceGeometryEntry = manifest.Entries.Find(n => n.Name.Contains("Canonical")); if (sourceGeometryEntry == default(ManifestResource.ManifestEntry)) { throw new Exception("Canonical resource not found in import manifest"); } var downloadGeometryResult = FileRecordInfo.DownloadResourceAsync( sourceGeometryEntry.HashString, FileRecordInfo.ResourceType.GeometryResourceCanonical, FileRecordInfo.PayloadType.Payload, FileRecordInfo.VariantType.NoVariants, new LibSanBag.Providers.HttpClientProvider() ).Result; var geometryCanonical = GeometryResourceCanonical.Create(downloadGeometryResult.Version); geometryCanonical.InitFromRawCompressed(downloadGeometryResult.Bytes); var outputName = Path.GetFileName(sourceGeometryEntry.HashString + sourceGeometryEntry.Name + ".fbx"); File.WriteAllBytes( Path.Combine(exportParameters.OutputDirectory, outputName), geometryCanonical.Resource.Bytes ); } }