コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            });
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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
                    );
            }
        }