/// <summary> /// Creates an Object Anchors asset conversion job request. /// </summary> /// <param name="options">The asset conversion job creation options.</param> /// <param name="cancellationToken">The cancellation toke.</param> /// <returns>The asset conversion operation.</returns> public virtual async Task <AssetConversionOperation> StartAssetConversionAsync(AssetConversionOptions options, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(ObjectAnchorsConversionClient)}.{nameof(StartAssetConversion)}"); scope.Start(); try { if (!SupportedAssetFileTypes.Contains(options.InputAssetFileType)) { throw new AssetFileTypeNotSupportedException(options.InputAssetFileType, SupportedAssetFileTypes); } AssetConversionProperties properties = new AssetConversionProperties { InputAssetFileType = options.InputAssetFileType, ConversionConfiguration = options.ConversionConfiguration, InputAssetUri = options.InputAssetUri }; await _ingestionJobRestClient.CreateAsync(AccountId, options.JobId, body : properties, cancellationToken : cancellationToken).ConfigureAwait(false); return(new AssetConversionOperation(options.JobId, this)); } catch (Exception ex) { scope.Failed(ex); throw; } }
internal HttpMessage CreateCreateRequest(Guid accountId, Guid jobId, AssetConversionProperties body, string xMrcCv) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Put; var uri = new RawRequestUriBuilder(); uri.Reset(_endpoint); uri.AppendPath("/accounts/", false); uri.AppendPath(accountId, true); uri.AppendPath("/jobs/", false); uri.AppendPath(jobId, true); uri.AppendQuery("api-version", _apiVersion, true); request.Uri = uri; if (xMrcCv != null) { request.Headers.Add("x-mrc-cv", xMrcCv); } request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); content.JsonWriter.WriteObjectValue(body); request.Content = content; return(message); }
public async Task <ResponseWithHeaders <AssetConversionProperties, IngestionJobCreateHeaders> > CreateAsync(Guid accountId, Guid jobId, string xMrcCv = null, AssetConversionProperties body = null, CancellationToken cancellationToken = default) { using var message = CreateCreateRequest(accountId, jobId, xMrcCv, body); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); var headers = new IngestionJobCreateHeaders(message.Response); switch (message.Response.Status) { case 201: { AssetConversionProperties value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); value = AssetConversionProperties.DeserializeAssetConversionProperties(document.RootElement); return(ResponseWithHeaders.FromValue(value, headers, message.Response)); }
/// <summary> /// Creates an Object Anchors asset conversion job request. /// </summary> /// <param name="options">The asset conversion job creation options</param> /// <param name="cancellationToken">The cancellation token</param> /// <returns>The asset conversion operation</returns> public virtual AssetConversionOperation StartAssetConversion(AssetConversionOptions options, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(ObjectAnchorsConversionClient)}.{nameof(StartAssetConversion)}"); scope.Start(); try { AssetConversionProperties properties = new AssetConversionProperties { InputAssetFileType = options.InputAssetFileType, ConversionConfiguration = options.ConversionConfiguration, InputAssetUri = options.InputAssetUri }; _ingestionJobRestClient.Create(AccountId, options.JobId, body: properties, cancellationToken: cancellationToken); return(new AssetConversionOperation(options.JobId, this)); } catch (Exception ex) { scope.Failed(ex); throw; } }