GetClientsAndConversionOptionsForAsset(string assetName) { string localFilePath = assetName; Vector3 assetGravity = new Vector3(assetGravityX, assetGravityY, assetGravityZ); float scale = assetScale; var clientWithWorkingInternalMethods = CreateClient(); ObjectAnchorsConversionClient client = InstrumentClient(clientWithWorkingInternalMethods); AssetUploadUriResult uploadUriResult = await client.GetAssetUploadUriAsync(); Uri uploadedInputAssetUri = uploadUriResult.UploadUri; BlobClient uploadBlobClient = InstrumentClient(new BlobClient(uploadedInputAssetUri, InstrumentClientOptions(new BlobClientOptions(BlobClientOptions.ServiceVersion.V2019_12_12)))); using (FileStream fs = File.OpenRead(localFilePath)) { await uploadBlobClient.UploadAsync(fs); } AssetConversionOptions assetConversionOptions = new AssetConversionOptions(uploadedInputAssetUri, AssetFileType.FromFilePath(localFilePath), assetGravity, scale); assetConversionOptions.JobId = Recording.Random.NewGuid(); return(clientWithWorkingInternalMethods, client, assetConversionOptions); }
public async Task ObserveExistingAssetConversion() { Recording.DisableIdReuse(); string localFilePath = assetLocalFilePath; Vector3 assetGravity = new Vector3(assetGravityX, assetGravityY, assetGravityZ); float scale = assetScale; var clientWithWorkingInternalMethods = CreateClient(); ObjectAnchorsConversionClient client = InstrumentClient(clientWithWorkingInternalMethods); AssetUploadUriResult uploadUriResult = await client.GetAssetUploadUriAsync(); Uri uploadedInputAssetUri = uploadUriResult.UploadUri; BlobClient uploadBlobClient = InstrumentClient(new BlobClient(uploadedInputAssetUri, InstrumentClientOptions(new BlobClientOptions(BlobClientOptions.ServiceVersion.V2019_12_12)))); using (FileStream fs = File.OpenRead(localFilePath)) { await uploadBlobClient.UploadAsync(fs); } AssetConversionOptions assetConversionOptions = new AssetConversionOptions(uploadedInputAssetUri, AssetFileType.FromFilePath(localFilePath), assetGravity, scale); assetConversionOptions.JobId = Recording.Random.NewGuid(); Guid jobId = new Guid((await client.StartAssetConversionAsync(assetConversionOptions)).Id); AssetConversionOperation operation = new AssetConversionOperation(jobId, clientWithWorkingInternalMethods); await operation.WaitForCompletionAsync(); if (!operation.HasCompletedSuccessfully) { throw new Exception("The asset conversion operation completed with an unsuccessful status"); } string localFileDownloadPath = modelDownloadLocalFilePath; BlobClient downloadBlobClient = InstrumentClient(new BlobClient(operation.Value.OutputModelUri, InstrumentClientOptions(new BlobClientOptions(BlobClientOptions.ServiceVersion.V2019_12_12)))); BlobDownloadInfo downloadInfo = await downloadBlobClient.DownloadAsync(); using (FileStream file = File.OpenWrite(localFileDownloadPath)) { await downloadInfo.Content.CopyToAsync(file); var fileInfo = new FileInfo(localFileDownloadPath); Assert.Greater(fileInfo.Length, 0); } }