/// <summary> /// Initializes a new instance of the <see cref="AnalyzeDocumentOperation"/> class which /// tracks the status of a long-running operation for analyzing documents. /// </summary> /// <param name="operationId">The ID of this operation.</param> /// <param name="client">The client used to check for completion.</param> public AnalyzeDocumentOperation(string operationId, DocumentAnalysisClient client) { Argument.AssertNotNullOrEmpty(operationId, nameof(operationId)); Argument.AssertNotNull(client, nameof(client)); _serviceClient = client.ServiceClient; _diagnostics = client.Diagnostics; _operationInternal = new(_diagnostics, this, rawResponse : null); // TODO: Use regex to parse ids. // https://github.com/Azure/azure-sdk-for-net/issues/11505 // TODO: Add validation here (should we store _resuldId and _modelId as GUIDs?) // https://github.com/Azure/azure-sdk-for-net/issues/10385 string[] substrs = operationId.Split('/'); if (substrs.Length < 3) { throw new ArgumentException($"Invalid '{nameof(operationId)}'. It should be formatted as: '{{modelId}}/analyzeresults/{{resultId}}'.", nameof(operationId)); } _resultId = substrs.Last(); _modelId = substrs.First(); Id = operationId; }
/// <summary> /// Initializes a new instance of the <see cref="CopyModelOperation"/> class. /// </summary> /// <param name="serviceClient">The client for communicating with the Form Recognizer Azure Cognitive Service through its REST API.</param> /// <param name="diagnostics">The client diagnostics for exception creation in case of failure.</param> /// <param name="operationLocation">The address of the long-running operation. It can be obtained from the response headers upon starting the operation.</param> /// <param name="postResponse">Response from the POSt request that initiated the operation.</param> internal CopyModelOperation(DocumentAnalysisRestClient serviceClient, ClientDiagnostics diagnostics, string operationLocation, Response postResponse) { _serviceClient = serviceClient; _diagnostics = diagnostics; _operationInternal = new(_diagnostics, this, rawResponse : postResponse); Id = operationLocation.Split('/').Last().Split('?').FirstOrDefault(); }
/// <summary> /// Initializes a new instance of the <see cref="BuildModelOperation"/> class which /// tracks the status of a long-running operation for creating a custom model. /// </summary> /// <param name="operationId">The ID of this operation.</param> /// <param name="client">The client used to check for completion.</param> public BuildModelOperation(string operationId, DocumentModelAdministrationClient client) { Argument.AssertNotNull(client, nameof(client)); Id = operationId; _diagnostics = client.Diagnostics; _serviceClient = client.ServiceClient; _operationInternal = new(_diagnostics, this, rawResponse : null, nameof(BuildModelOperation)); }
internal BuildModelOperation( string location, Response postResponse, DocumentAnalysisRestClient allOperations, ClientDiagnostics diagnostics) { _serviceClient = allOperations; _diagnostics = diagnostics; _operationInternal = new(_diagnostics, this, rawResponse : postResponse); Id = location.Split('/').Last().Split('?').FirstOrDefault(); }
/// <summary> /// Initializes a new instance of the <see cref="DocumentModelAdministrationClient"/> class. /// </summary> /// <param name="endpoint">The endpoint to use for connecting to the Form Recognizer Azure Cognitive Service.</param> /// <param name="credential">A credential used to authenticate to an Azure Service.</param> /// <param name="options">A set of options to apply when configuring the client.</param> /// <remarks> /// Both the <paramref name="endpoint"/> URI string and the <paramref name="credential"/> <c>string</c> key /// can be found in the Azure Portal. /// For more information see <see href="https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/formrecognizer/Azure.AI.FormRecognizer/README.md#authenticate-the-client"> here</see>. /// </remarks> public DocumentModelAdministrationClient(Uri endpoint, AzureKeyCredential credential, DocumentAnalysisClientOptions options) { Argument.AssertNotNull(endpoint, nameof(endpoint)); Argument.AssertNotNull(credential, nameof(credential)); options ??= new DocumentAnalysisClientOptions(); Diagnostics = new ClientDiagnostics(options); HttpPipeline pipeline = HttpPipelineBuilder.Build(options, new AzureKeyCredentialPolicy(credential, Constants.AuthorizationHeader)); ServiceClient = new DocumentAnalysisRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri); }
/// <summary> /// Initializes a new instance of the <see cref="DocumentModelAdministrationClient"/> class. /// </summary> /// <param name="endpoint">The endpoint to use for connecting to the Form Recognizer Azure Cognitive Service.</param> /// <param name="credential">A credential used to authenticate to an Azure Service.</param> /// <param name="options">A set of options to apply when configuring the client.</param> /// <remarks> /// The <paramref name="endpoint"/> URI string can be found in the Azure Portal. /// For more information see <see href="https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/formrecognizer/Azure.AI.FormRecognizer/README.md#authenticate-the-client"> here</see>. /// </remarks> public DocumentModelAdministrationClient(Uri endpoint, TokenCredential credential, DocumentAnalysisClientOptions options) { Argument.AssertNotNull(endpoint, nameof(endpoint)); Argument.AssertNotNull(credential, nameof(credential)); options ??= new DocumentAnalysisClientOptions(); Diagnostics = new ClientDiagnostics(options); var pipeline = HttpPipelineBuilder.Build(options, new BearerTokenAuthenticationPolicy(credential, Constants.DefaultCognitiveScope)); ServiceClient = new DocumentAnalysisRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri); }
/// <summary> /// Initializes a new instance of the <see cref="DocumentModelAdministrationClient"/> class. /// </summary> /// <param name="endpoint">The endpoint to use for connecting to the Form Recognizer Azure Cognitive Service.</param> /// <param name="credential">A credential used to authenticate to an Azure Service.</param> /// <param name="options">A set of options to apply when configuring the client.</param> /// <remarks> /// The <paramref name="endpoint"/> URI string can be found in the Azure Portal. /// For more information see <see href="https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/formrecognizer/Azure.AI.FormRecognizer/README.md#authenticate-the-client"> here</see>. /// </remarks> public DocumentModelAdministrationClient(Uri endpoint, TokenCredential credential, DocumentAnalysisClientOptions options) { Argument.AssertNotNull(endpoint, nameof(endpoint)); Argument.AssertNotNull(credential, nameof(credential)); options ??= new DocumentAnalysisClientOptions(); string defaultScope = $"{(string.IsNullOrEmpty(options.Audience?.ToString()) ? DocumentAnalysisAudience.AzurePublicCloud : options.Audience)}/.default"; Diagnostics = new ClientDiagnostics(options); var pipeline = HttpPipelineBuilder.Build(options, new BearerTokenAuthenticationPolicy(credential, defaultScope)); ServiceClient = new DocumentAnalysisRestClient(Diagnostics, pipeline, endpoint.AbsoluteUri); }
/// <summary> /// Initializes a new instance of the <see cref="AnalyzeDocumentOperation"/> class. /// </summary> /// <param name="serviceClient">The client for communicating with the Form Recognizer Azure Cognitive Service through its REST API.</param> /// <param name="diagnostics">The client diagnostics for exception creation in case of failure.</param> /// <param name="operationLocation">The address of the long-running operation. It can be obtained from the response headers upon starting the operation.</param> /// <param name="postResponse">Response from the POSt request that initiated the operation.</param> internal AnalyzeDocumentOperation(DocumentAnalysisRestClient serviceClient, ClientDiagnostics diagnostics, string operationLocation, Response postResponse) { _serviceClient = serviceClient; _diagnostics = diagnostics; _operationInternal = new(_diagnostics, this, rawResponse : postResponse); // TODO: Use regex to parse ids. // https://github.com/Azure/azure-sdk-for-net/issues/11505 // TODO: Add validation here (should we store _resuldId and _modelId as GUIDs?) // https://github.com/Azure/azure-sdk-for-net/issues/10385 string[] substrs = operationLocation.Split('/', '?'); _resultId = substrs[substrs.Length - 2]; _modelId = substrs[substrs.Length - 4]; Id = string.Join("/", substrs, substrs.Length - 4, 3); }