private DocumentTranslationClient GetDocumentTranslationClient() { var keyCredential = new AzureKeyCredential(azureTranslatorOptions.SubscriptionKey); var documentTranslationClient = new DocumentTranslationClient(GetEndpoint(), keyCredential); return(documentTranslationClient); }
public async Task SingleSourceSingleTargetWithSuffixTest() { Uri sourceUri = await CreateSourceContainerAsync(twoTestDocuments); Uri targetUri = await CreateTargetContainerAsync(); DocumentTranslationClient client = GetClient(); var source = new TranslationSource(sourceUri) { Suffix = "1.txt" }; var targets = new List <TranslationTarget> { new TranslationTarget(targetUri, "fr") }; var input = new DocumentTranslationInput(source, targets); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); await operation.WaitForCompletionAsync(); if (operation.DocumentsSucceeded < 1) { await PrintNotSucceededDocumentsAsync(operation); } Assert.IsTrue(operation.HasCompleted); Assert.IsTrue(operation.HasValue); Assert.AreEqual(1, operation.DocumentsTotal); Assert.AreEqual(1, operation.DocumentsSucceeded); Assert.AreEqual(0, operation.DocumentsFailed); Assert.AreEqual(0, operation.DocumentsCancelled); Assert.AreEqual(0, operation.DocumentsInProgress); Assert.AreEqual(0, operation.DocumentsNotStarted); }
public async Task DocumentStatusAsync() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; Uri sourceUri = new Uri(""); Uri targetUri = new Uri(""); var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); var input = new DocumentTranslationInput(sourceUri, targetUri, "es"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); var documentscompleted = new HashSet <string>(); while (!operation.HasCompleted) { await operation.UpdateStatusAsync(); AsyncPageable <DocumentStatusResult> documentsStatus = operation.GetAllDocumentStatusesAsync(); await foreach (DocumentStatusResult docStatus in documentsStatus) { if (documentscompleted.Contains(docStatus.DocumentId)) { continue; } if (docStatus.Status == TranslationStatus.Succeeded || docStatus.Status == TranslationStatus.Failed) { documentscompleted.Add(docStatus.DocumentId); Console.WriteLine($"Document {docStatus.TranslatedDocumentUri} completed with status ${docStatus.Status}"); } } } }
public async Task GetTranslationStatusesTest(bool usetokenCredential) { Uri source = await CreateSourceContainerAsync(oneTestDocuments); Uri target = await CreateTargetContainerAsync(); DocumentTranslationClient client = GetClient(useTokenCredential: usetokenCredential); var input = new DocumentTranslationInput(source, target, "fr"); await client.StartTranslationAsync(input); List <TranslationStatusResult> translations = await client.GetTranslationStatusesAsync().ToEnumerableAsync(); Assert.GreaterOrEqual(translations.Count, 1); TranslationStatusResult oneTranslation = translations[0]; Assert.AreNotEqual(new DateTimeOffset(), oneTranslation.CreatedOn); Assert.AreNotEqual(new DateTimeOffset(), oneTranslation.LastModified); Assert.GreaterOrEqual(oneTranslation.DocumentsCanceled, 0); Assert.GreaterOrEqual(oneTranslation.DocumentsFailed, 0); Assert.GreaterOrEqual(oneTranslation.DocumentsInProgress, 0); Assert.GreaterOrEqual(oneTranslation.DocumentsNotStarted, 0); Assert.GreaterOrEqual(oneTranslation.DocumentsSucceeded, 0); Assert.GreaterOrEqual(oneTranslation.DocumentsTotal, 0); if (oneTranslation.Status == DocumentTranslationStatus.Succeeded) { Assert.Greater(oneTranslation.TotalCharactersCharged, 0); } else { Assert.AreEqual(0, oneTranslation.TotalCharactersCharged); } }
public async Task SingleSourceSingleTargetListDocumentsTest() { Uri sourceUri = await CreateSourceContainerAsync(oneTestDocuments); Uri targetUri = await CreateTargetContainerAsync(); string translateTo = "fr"; DocumentTranslationClient client = GetClient(); var input = new DocumentTranslationInput(sourceUri, targetUri, translateTo); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); AsyncPageable <DocumentStatus> documentsFromOperation = await operation.WaitForCompletionAsync(); List <DocumentStatus> documentsFromOperationList = await documentsFromOperation.ToEnumerableAsync(); Assert.AreEqual(1, documentsFromOperationList.Count); CheckDocumentStatus(documentsFromOperationList[0], translateTo); AsyncPageable <DocumentStatus> documentsFromGetAll = operation.GetAllDocumentStatusesAsync(); List <DocumentStatus> documentsFromGetAllList = await documentsFromGetAll.ToEnumerableAsync(); Assert.AreEqual(documentsFromOperationList[0].Status, documentsFromGetAllList[0].Status); Assert.AreEqual(documentsFromOperationList[0].Id, documentsFromGetAllList[0].Id); Assert.AreEqual(documentsFromOperationList[0].SourceDocumentUri, documentsFromGetAllList[0].SourceDocumentUri); Assert.AreEqual(documentsFromOperationList[0].TranslatedDocumentUri, documentsFromGetAllList[0].TranslatedDocumentUri); Assert.AreEqual(documentsFromOperationList[0].TranslationProgressPercentage, documentsFromGetAllList[0].TranslationProgressPercentage); Assert.AreEqual(documentsFromOperationList[0].TranslatedTo, documentsFromGetAllList[0].TranslatedTo); Assert.AreEqual(documentsFromOperationList[0].CreatedOn, documentsFromGetAllList[0].CreatedOn); Assert.AreEqual(documentsFromOperationList[0].LastModified, documentsFromGetAllList[0].LastModified); }
public void OperationsHistory() { #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; string apiKey = "<Document Translator Resource API Key>"; #else string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #endif var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); int operationsCount = 0; int totalDocs = 0; int docsCanceled = 0; int docsSucceeded = 0; int docsFailed = 0; TimeSpan pollingInterval = new(1000); DateTimeOffset lastWeekTimestamp = DateTimeOffset.Now.AddDays(-7); var options = new GetTranslationStatusesOptions { CreatedAfter = lastWeekTimestamp }; foreach (TranslationStatusResult translationStatus in client.GetTranslationStatuses(options)) { if (translationStatus.Status == DocumentTranslationStatus.NotStarted || translationStatus.Status == DocumentTranslationStatus.Running) { DocumentTranslationOperation operation = new DocumentTranslationOperation(translationStatus.Id, client); operation.UpdateStatus(); while (!operation.HasCompleted) { if (operation.GetRawResponse().Headers.TryGetValue("Retry-After", out string value)) { pollingInterval = TimeSpan.FromSeconds(Convert.ToInt32(value)); } Thread.Sleep(pollingInterval); operation.UpdateStatus(); } } operationsCount++; totalDocs += translationStatus.DocumentsTotal; docsCanceled += translationStatus.DocumentsCanceled; docsSucceeded += translationStatus.DocumentsSucceeded; docsFailed += translationStatus.DocumentsFailed; } Console.WriteLine($"# of operations: {operationsCount}"); Console.WriteLine($"Total Documents: {totalDocs}"); Console.WriteLine($"Succeeded Document: {docsSucceeded}"); Console.WriteLine($"Failed Document: {docsFailed}"); Console.WriteLine($"Cancelled Documents: {docsCanceled}"); }
public async Task SingleSourceSingleTargetListDocumentsTest() { Uri sourceUri = await CreateSourceContainerAsync(oneTestDocuments); Uri targetUri = await CreateTargetContainerAsync(); string translateTo = "fr"; DocumentTranslationClient client = GetClient(); var input = new DocumentTranslationInput(sourceUri, targetUri, translateTo); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); AsyncPageable <DocumentStatusResult> documentsFromOperation = await operation.WaitForCompletionAsync(PollingInterval); List <DocumentStatusResult> documentsFromOperationList = await documentsFromOperation.ToEnumerableAsync(); Assert.AreEqual(1, documentsFromOperationList.Count); CheckDocumentStatusResult(documentsFromOperationList[0], translateTo); AsyncPageable <DocumentStatusResult> documentsFromGetAll = operation.GetAllDocumentStatusesAsync(); List <DocumentStatusResult> documentsFromGetAllList = await documentsFromGetAll.ToEnumerableAsync(); Assert.AreEqual(documentsFromOperationList[0].Status, documentsFromGetAllList[0].Status); Assert.AreEqual(documentsFromOperationList[0].HasCompleted, documentsFromGetAllList[0].HasCompleted); Assert.AreEqual(documentsFromOperationList[0].DocumentId, documentsFromGetAllList[0].DocumentId); Assert.AreEqual(documentsFromOperationList[0].SourceDocumentUri, documentsFromGetAllList[0].SourceDocumentUri); Assert.AreEqual(documentsFromOperationList[0].TranslatedDocumentUri, documentsFromGetAllList[0].TranslatedDocumentUri); Assert.AreEqual(documentsFromOperationList[0].TranslationProgressPercentage, documentsFromGetAllList[0].TranslationProgressPercentage); Assert.AreEqual(documentsFromOperationList[0].TranslateTo, documentsFromGetAllList[0].TranslateTo); Assert.AreEqual(documentsFromOperationList[0].CreatedOn, documentsFromGetAllList[0].CreatedOn); // Ignore because of flaky behavior. Service issue has been created. // https://github.com/Azure/azure-sdk-for-net/issues/20116 // Assert.AreEqual(documentsFromOperationList[0].LastModified, documentsFromGetAllList[0].LastModified); }
public async Task MultipleInputsAsync() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); Uri source1SasUriUri = new Uri("<source1 SAS URI>"); Uri source2SasUri = new Uri("<source2 SAS URI>"); Uri frenchTargetSasUri = new Uri("<french target SAS URI>"); Uri arabicTargetSasUri = new Uri("<arabic target SAS URI>"); Uri spanishTargetSasUri = new Uri("<spanish target SAS URI>"); Uri frenchGlossarySasUri = new Uri("<french glossary SAS URI>"); #region Snippet:MultipleInputsAsync //@@ Uri source1SasUriUri = <source1 SAS URI>; //@@ Uri source2SasUri = <source2 SAS URI>; //@@ Uri frenchTargetSasUri = <french target SAS URI>; //@@ Uri arabicTargetSasUri = <arabic target SAS URI>; //@@ Uri spanishTargetSasUri = <spanish target SAS URI>; //@@ Uri frenchGlossarySasUri = <french glossary SAS URI>; var glossaryFormat = "TSV"; var input1 = new DocumentTranslationInput(source1SasUriUri, frenchTargetSasUri, "fr", new TranslationGlossary(frenchGlossarySasUri, glossaryFormat)); input1.AddTarget(spanishTargetSasUri, "es"); var input2 = new DocumentTranslationInput(source2SasUri, arabicTargetSasUri, "ar"); input2.AddTarget(frenchTargetSasUri, "fr", new TranslationGlossary(frenchGlossarySasUri, glossaryFormat)); var inputs = new List <DocumentTranslationInput>() { input1, input2 }; DocumentTranslationOperation operation = await client.StartTranslationAsync(inputs); await operation.WaitForCompletionAsync(); await foreach (DocumentStatusResult document in operation.GetValuesAsync()) { Console.WriteLine($"Document with Id: {document.DocumentId}"); Console.WriteLine($" Status:{document.Status}"); if (document.Status == TranslationStatus.Succeeded) { Console.WriteLine($" Translated Document Uri: {document.TranslatedDocumentUri}"); Console.WriteLine($" Translated to language: {document.TranslateTo}."); Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); } else { Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); Console.WriteLine($" Error Code: {document.Error.ErrorCode}"); Console.WriteLine($" Message: {document.Error.Message}"); } } #endregion }
public async Task WrongDocumentEncoding() { var document = new List <TestDocument> { new TestDocument("Document1.txt", string.Empty), }; Uri source = await CreateSourceContainerAsync(document); Uri target = await CreateTargetContainerAsync(); DocumentTranslationClient client = GetClient(); var input = new DocumentTranslationInput(source, target, "fr"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); AsyncPageable <DocumentStatus> documents = await operation.WaitForCompletionAsync(); Assert.IsTrue(operation.HasCompleted); Assert.IsTrue(operation.HasValue); Assert.AreEqual(DocumentTranslationStatus.Failed, operation.Status); Assert.AreEqual(1, operation.DocumentsTotal); Assert.AreEqual(0, operation.DocumentsSucceeded); Assert.AreEqual(1, operation.DocumentsFailed); Assert.AreEqual(0, operation.DocumentsCancelled); Assert.AreEqual(0, operation.DocumentsInProgress); Assert.AreEqual(0, operation.DocumentsNotStarted); List <DocumentStatus> documentsList = await documents.ToEnumerableAsync(); Assert.AreEqual(1, documentsList.Count); Assert.AreEqual(DocumentTranslationStatus.Failed, documentsList[0].Status); Assert.AreEqual(new DocumentTranslationErrorCode("WrongDocumentEncoding"), documentsList[0].Error.ErrorCode); }
public async Task ContainerWithSupportedAndUnsupportedFiles() { var documentsList = new List <TestDocument> { new TestDocument("Document1.txt", "First english test document"), new TestDocument("File2.jpg", "jpg"), }; Uri source = await CreateSourceContainerAsync(documentsList); Uri target = await CreateTargetContainerAsync(); DocumentTranslationClient client = GetClient(); var input = new DocumentTranslationInput(source, target, "fr"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); await operation.WaitForCompletionAsync(); if (operation.DocumentsSucceeded < 1) { await PrintNotSucceededDocumentsAsync(operation); } Assert.IsTrue(operation.HasCompleted); Assert.IsTrue(operation.HasValue); Assert.AreEqual(1, operation.DocumentsTotal); Assert.AreEqual(1, operation.DocumentsSucceeded); Assert.AreEqual(0, operation.DocumentsFailed); Assert.AreEqual(0, operation.DocumentsCancelled); Assert.AreEqual(0, operation.DocumentsInProgress); Assert.AreEqual(0, operation.DocumentsNotStarted); }
public async Task ExistingFileInTargetContainer() { Uri source = await CreateSourceContainerAsync(oneTestDocuments); Uri target = await CreateTargetContainerAsync(oneTestDocuments); DocumentTranslationClient client = GetClient(); var input = new DocumentTranslationInput(source, target, "fr"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); AsyncPageable <DocumentStatus> documents = await operation.WaitForCompletionAsync(); Assert.IsTrue(operation.HasCompleted); Assert.IsTrue(operation.HasValue); Assert.AreEqual(DocumentTranslationStatus.Failed, operation.Status); Assert.AreEqual(1, operation.DocumentsTotal); Assert.AreEqual(0, operation.DocumentsSucceeded); Assert.AreEqual(1, operation.DocumentsFailed); Assert.AreEqual(0, operation.DocumentsCancelled); Assert.AreEqual(0, operation.DocumentsInProgress); Assert.AreEqual(0, operation.DocumentsNotStarted); List <DocumentStatus> documentsList = await documents.ToEnumerableAsync(); Assert.AreEqual(1, documentsList.Count); Assert.AreEqual(DocumentTranslationStatus.Failed, documentsList[0].Status); Assert.AreEqual(new DocumentTranslationErrorCode("TargetFileAlreadyExists"), documentsList[0].Error.ErrorCode); }
public void BadRequestSnippet() { #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; string apiKey = "<Document Translator Resource API Key>"; #else string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #endif var credentials = new AzureKeyCredential(apiKey); var client = new DocumentTranslationClient(new Uri(endpoint), credentials); #region Snippet:BadRequest var invalidInput = new DocumentTranslationInput(new TranslationSource(new Uri(endpoint)), new List <TranslationTarget>()); try { DocumentTranslationOperation operation = client.StartTranslation(invalidInput); } catch (RequestFailedException e) { Console.WriteLine(e.ToString()); } #endregion }
public async Task SingleSourceMultipleTargetsTest() { Uri source = await CreateSourceContainerAsync(oneTestDocuments); Uri targetFrench = await CreateTargetContainerAsync(); Uri targetSpanish = await CreateTargetContainerAsync(); Uri targetArabic = await CreateTargetContainerAsync(); DocumentTranslationClient client = GetClient(); var input = new DocumentTranslationInput(source, targetFrench, "fr"); input.AddTarget(targetSpanish, "es"); input.AddTarget(targetArabic, "ar"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); await operation.WaitForCompletionAsync(); if (operation.DocumentsSucceeded < 3) { await PrintNotSucceededDocumentsAsync(operation); } Assert.IsTrue(operation.HasCompleted); Assert.IsTrue(operation.HasValue); Assert.AreEqual(3, operation.DocumentsTotal); Assert.AreEqual(3, operation.DocumentsSucceeded); Assert.AreEqual(0, operation.DocumentsFailed); Assert.AreEqual(0, operation.DocumentsCancelled); Assert.AreEqual(0, operation.DocumentsInProgress); Assert.AreEqual(0, operation.DocumentsNotStarted); }
protected Task WaitForJobCancellation(List <string> jobIDs, DocumentTranslationClient client) { if (Mode == RecordedTestMode.Playback) { return(Task.CompletedTask); } using (Recording.DisableRecording()) { var options = new GetTranslationStatusesOptions(); foreach (var result in jobIDs) { options.Ids.Add(result); } bool cancellationHasPropagated = false; // flag for successful cancelling return(TestRetryHelper.RetryAsync(async() => { var statuses = await client.GetTranslationStatusesAsync(options: options).ToEnumerableAsync(); cancellationHasPropagated = statuses.TrueForAll(status => status.Status == DocumentTranslationStatus.Canceled); if (!cancellationHasPropagated) { throw new InvalidOperationException("Cancellation not propagated to all documents"); } else { return (Response)null; } }, maxIterations: 100, delay: TimeSpan.FromSeconds(5))); } }
public async Task <List <string> > CreateTranslationJobsAsync(DocumentTranslationClient client, int jobsCount = 1, int docsPerJob = 1, DocumentTranslationStatus jobTerminalStatus = default) { // create source container if (jobTerminalStatus == DocumentTranslationStatus.Canceled) { docsPerJob = 20; // in order to avoid job completing before canceling } var testDocs = CreateDummyTestDocuments(count: docsPerJob); var sourceContainer = await CreateSourceContainerAsync(testDocs); // create a translation job var resultIds = new List <string>(); for (int i = 1; i <= jobsCount; i++) { var targetContainer = await CreateTargetContainerAsync(); var input = new DocumentTranslationInput(sourceContainer, targetContainer, "fr"); var translationOp = await client.StartTranslationAsync(input); resultIds.Add(translationOp.Id); if (jobTerminalStatus == DocumentTranslationStatus.Succeeded) { await translationOp.WaitForCompletionAsync(); } else if (jobTerminalStatus == DocumentTranslationStatus.Canceled) { await translationOp.CancelAsync(default);
public async Task GetDocumentStatusTest() { Uri sourceUri = await CreateSourceContainerAsync(oneTestDocuments); Uri targetUri = await CreateTargetContainerAsync(); string translateTo = "fr"; DocumentTranslationClient client = GetClient(); var input = new DocumentTranslationInput(sourceUri, targetUri, translateTo); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); await operation.WaitForCompletionAsync(); AsyncPageable <DocumentStatus> documents = operation.GetAllDocumentStatusesAsync(); List <DocumentStatus> documentsList = await documents.ToEnumerableAsync(); Assert.AreEqual(1, documentsList.Count); DocumentStatus document = await operation.GetDocumentStatusAsync(documentsList[0].Id); CheckDocumentStatus(document, translateTo); }
public async Task SingleSourceSingleTargetTest(bool usetokenCredential) { Uri source = await CreateSourceContainerAsync(oneTestDocuments); Uri target = await CreateTargetContainerAsync(); DocumentTranslationClient client = GetClient(useTokenCredential: usetokenCredential); var input = new DocumentTranslationInput(source, target, "fr"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); await operation.WaitForCompletionAsync(); if (operation.DocumentsSucceeded < 1) { await PrintNotSucceededDocumentsAsync(operation); } Assert.IsTrue(operation.HasCompleted); Assert.IsTrue(operation.HasValue); Assert.AreEqual(1, operation.DocumentsTotal); Assert.AreEqual(1, operation.DocumentsSucceeded); Assert.AreEqual(0, operation.DocumentsFailed); Assert.AreEqual(0, operation.DocumentsCancelled); Assert.AreEqual(0, operation.DocumentsInProgress); Assert.AreEqual(0, operation.DocumentsNotStarted); }
/// <summary> /// Main activity method /// </summary> /// <param name="context"></param> protected override void Execute(CodeActivityContext context) { var inputFileSelection = Document.Get(context); string[] files = inputFileSelection.Split("|".ToCharArray()); List <string> filesForTranslation = new List <string>(); List <string> translatedFiles = new List <string>(); if (files.Length == 1) { if (!File.Exists(files[0])) { // Check if only one file is selected and if it exists throw new System.IO.FileNotFoundException("The document specified is not found. Make sure the file exists or full path is typed correctly."); } else { filesForTranslation.Add(files[0]); } } else { foreach (var selectedFile in files) { if (File.Exists(selectedFile)) { filesForTranslation.Add(selectedFile); } } if (filesForTranslation.Count == 0) { // All files specified are not found. throw new System.IO.FileNotFoundException("All files specified are not found. Make sure the file exists or full path is typed correctly."); } } var targetLanguageCode = TargetLanguageCode.Get(context); var apiKey = ApiKey.Get(context); if (apiKey != null && apiKey != "") { // Sets to the user's apiKey, if supplied; if not, defaults to a free key MicrosoftTranslationClient.ApiKey = apiKey; } try { translatedFiles = DocumentTranslationClient.TranslateDocument(String.Join(",", filesForTranslation), targetLanguageCode); TranslatedDoc.Set(context, translatedFiles); } catch (System.UnauthorizedAccessException uex) { throw new System.UnauthorizedAccessException($"FULL OUTPUT: {uex.Message}\n{MicrosoftTranslationClient.InvalidApiKeyResolution}"); } catch (System.Exception ex) { throw new System.Exception(ex.Message); } }
public void DocumentStatus() { #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; string apiKey = "<Document Translator Resource API Key>"; #else string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #endif var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #if SNIPPET Uri sourceUri = new Uri("<source SAS URI>"); Uri targetUri = new Uri("<target SAS URI>") #else Uri sourceUri = CreateSourceContainer(oneTestDocuments); Uri targetUri = CreateTargetContainer(); #endif var input = new DocumentTranslationInput(sourceUri, targetUri, "es"); DocumentTranslationOperation operation = client.StartTranslation(input); TimeSpan pollingInterval = new(1000); var documentscompleted = new HashSet <string>(); while (true) { operation.UpdateStatus(); Pageable <DocumentStatusResult> documentsStatus = operation.GetDocumentStatuses(); foreach (DocumentStatusResult docStatus in documentsStatus) { if (documentscompleted.Contains(docStatus.Id)) { continue; } if (docStatus.Status == DocumentTranslationStatus.Succeeded || docStatus.Status == DocumentTranslationStatus.Failed) { documentscompleted.Add(docStatus.Id); Console.WriteLine($"Document {docStatus.TranslatedDocumentUri} completed with status {docStatus.Status}"); } } if (operation.HasCompleted) { break; } else { if (operation.GetRawResponse().Headers.TryGetValue("Retry-After", out string value)) { pollingInterval = TimeSpan.FromSeconds(Convert.ToInt32(value)); } Thread.Sleep(pollingInterval); } } }
public void ClientCannotAuthenticateWithFakeApiKey() { DocumentTranslationClient client = GetClient(credential: new AzureKeyCredential("fakeKey")); RequestFailedException ex = Assert.ThrowsAsync <RequestFailedException>(async() => await client.GetDocumentFormatsAsync()); Assert.AreEqual("401", ex.ErrorCode); }
public void StartTranslation() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); Uri sourceUri = new Uri("<source SAS URI>"); Uri targetUri = new Uri("<target SAS URI>"); #region Snippet:StartTranslation //@@ Uri sourceUri = <source SAS URI>; //@@ Uri targetUri = <target SAS URI>; var input = new DocumentTranslationInput(sourceUri, targetUri, "es"); DocumentTranslationOperation operation = client.StartTranslation(input); TimeSpan pollingInterval = new TimeSpan(1000); while (!operation.HasCompleted) { Thread.Sleep(pollingInterval); operation.UpdateStatus(); Console.WriteLine($" Status: {operation.Status}"); Console.WriteLine($" Created on: {operation.CreatedOn}"); Console.WriteLine($" Last modified: {operation.LastModified}"); Console.WriteLine($" Total documents: {operation.DocumentsTotal}"); Console.WriteLine($" Succeeded: {operation.DocumentsSucceeded}"); Console.WriteLine($" Failed: {operation.DocumentsFailed}"); Console.WriteLine($" In Progress: {operation.DocumentsInProgress}"); Console.WriteLine($" Not started: {operation.DocumentsNotStarted}"); } foreach (DocumentStatusResult document in operation.GetValues()) { Console.WriteLine($"Document with Id: {document.DocumentId}"); Console.WriteLine($" Status:{document.Status}"); if (document.Status == TranslationStatus.Succeeded) { Console.WriteLine($" Translated Document Uri: {document.TranslatedDocumentUri}"); Console.WriteLine($" Translated to language: {document.TranslateTo}."); Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); } else { Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); Console.WriteLine($" Error Code: {document.Error.ErrorCode}"); Console.WriteLine($" Message: {document.Error.Message}"); } } #endregion }
public async Task PollIndividualDocumentsAsync() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); Uri sourceUri = new Uri("<source SAS URI>"); Uri targetUri = new Uri("<target SAS URI>"); #region Snippet:PollIndividualDocumentsAsync //@@ Uri sourceUri = <source SAS URI>; //@@ Uri targetUri = <target SAS URI>; var input = new DocumentTranslationInput(sourceUri, targetUri, "es"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); TimeSpan pollingInterval = new(1000); AsyncPageable <DocumentStatusResult> documents = operation.GetAllDocumentStatusesAsync(); await foreach (DocumentStatusResult document in documents) { Console.WriteLine($"Polling Status for document{document.TranslatedDocumentUri}"); Response <DocumentStatusResult> status = await operation.GetDocumentStatusAsync(document.DocumentId); while (!status.Value.HasCompleted) { if (operation.GetRawResponse().Headers.TryGetValue("Retry-After", out string value)) { pollingInterval = TimeSpan.FromSeconds(Convert.ToInt32(value)); } await Task.Delay(pollingInterval); status = await operation.GetDocumentStatusAsync(document.DocumentId); } if (status.Value.Status == TranslationStatus.Succeeded) { Console.WriteLine($" Translated Document Uri: {document.TranslatedDocumentUri}"); Console.WriteLine($" Translated to language: {document.TranslateTo}."); Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); } else { Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); Console.WriteLine($" Error Code: {document.Error.ErrorCode}"); Console.WriteLine($" Message: {document.Error.Message}"); } } #endregion }
public async Task StartTranslationAsync() { #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; string apiKey = "<Document Translator Resource API Key>"; #else string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #endif var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #region Snippet:StartTranslationAsync #if SNIPPET Uri sourceUri = new Uri("<source SAS URI>"); Uri targetUri = new Uri("<target SAS URI>"); #else Uri sourceUri = await CreateSourceContainerAsync(oneTestDocuments); Uri targetUri = await CreateTargetContainerAsync(); #endif var input = new DocumentTranslationInput(sourceUri, targetUri, "es"); DocumentTranslationOperation operation = await client.StartTranslationAsync(input); await operation.WaitForCompletionAsync(); Console.WriteLine($" Status: {operation.Status}"); Console.WriteLine($" Created on: {operation.CreatedOn}"); Console.WriteLine($" Last modified: {operation.LastModified}"); Console.WriteLine($" Total documents: {operation.DocumentsTotal}"); Console.WriteLine($" Succeeded: {operation.DocumentsSucceeded}"); Console.WriteLine($" Failed: {operation.DocumentsFailed}"); Console.WriteLine($" In Progress: {operation.DocumentsInProgress}"); Console.WriteLine($" Not started: {operation.DocumentsNotStarted}"); await foreach (DocumentStatusResult document in operation.Value) { Console.WriteLine($"Document with Id: {document.Id}"); Console.WriteLine($" Status:{document.Status}"); if (document.Status == DocumentTranslationStatus.Succeeded) { Console.WriteLine($" Translated Document Uri: {document.TranslatedDocumentUri}"); Console.WriteLine($" Translated to language code: {document.TranslatedToLanguageCode}."); Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); } else { Console.WriteLine($" Error Code: {document.Error.ErrorCode}"); Console.WriteLine($" Message: {document.Error.Message}"); } } #endregion }
public void PollIndividualDocuments() { #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; string apiKey = "<Document Translator Resource API Key>"; #else string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #endif var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #if SNIPPET Uri sourceUri = new Uri("<source SAS URI>"); Uri targetUri = new Uri("<target SAS URI>"); #else Uri sourceUri = CreateSourceContainer(oneTestDocuments); Uri targetUri = CreateTargetContainer(); #endif var input = new DocumentTranslationInput(sourceUri, targetUri, "es"); DocumentTranslationOperation operation = client.StartTranslation(input); TimeSpan pollingInterval = new(1000); foreach (DocumentStatusResult document in operation.GetDocumentStatuses()) { Console.WriteLine($"Polling Status for document{document.SourceDocumentUri}"); Response <DocumentStatusResult> responseDocumentStatus = operation.GetDocumentStatus(document.Id); while (responseDocumentStatus.Value.Status != DocumentTranslationStatus.Failed && responseDocumentStatus.Value.Status != DocumentTranslationStatus.Succeeded) { if (responseDocumentStatus.GetRawResponse().Headers.TryGetValue("Retry-After", out string value)) { pollingInterval = TimeSpan.FromSeconds(Convert.ToInt32(value)); } Thread.Sleep(pollingInterval); responseDocumentStatus = operation.GetDocumentStatus(document.Id); } if (responseDocumentStatus.Value.Status == DocumentTranslationStatus.Succeeded) { Console.WriteLine($" Translated Document Uri: {document.TranslatedDocumentUri}"); Console.WriteLine($" Translated to language code: {document.TranslatedToLanguageCode}."); Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); } else { Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}"); Console.WriteLine($" Error Code: {document.Error.ErrorCode}"); Console.WriteLine($" Message: {document.Error.Message}"); } } }
public void CreateDocumentTranslationClient() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #region Snippet:CreateDocumentTranslationClient //@@ string endpoint = "<endpoint>"; //@@ string apiKey = "<apiKey>"; var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #endregion }
public void CreateDocumentTranslationClientTokenCredential() { #region Snippet:CreateDocumentTranslationClientTokenCredential #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; #else string endpoint = TestEnvironment.Endpoint; #endif var client = new DocumentTranslationClient(new Uri(endpoint), new DefaultAzureCredential()); #endregion }
public void CreateDocumentTranslationClient() { #region Snippet:CreateDocumentTranslationClient #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; string apiKey = "<Document Translator Resource API Key>"; #else string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #endif var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #endregion }
public async Task OperationsHistoryAsync() { #if SNIPPET string endpoint = "<Document Translator Resource Endpoint>"; string apiKey = "<Document Translator Resource API Key>"; #else string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #endif var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #region Snippet:OperationsHistoryAsync int operationsCount = 0; int totalDocs = 0; int docsCanceled = 0; int docsSucceeded = 0; int docsFailed = 0; DateTimeOffset lastWeekTimestamp = DateTimeOffset.Now.AddDays(-7); var options = new GetTranslationStatusesOptions { CreatedAfter = lastWeekTimestamp }; await foreach (TranslationStatusResult translationStatus in client.GetTranslationStatusesAsync(options)) { if (translationStatus.Status == DocumentTranslationStatus.NotStarted || translationStatus.Status == DocumentTranslationStatus.Running) { DocumentTranslationOperation operation = new DocumentTranslationOperation(translationStatus.Id, client); await operation.WaitForCompletionAsync(); } operationsCount++; totalDocs += translationStatus.DocumentsTotal; docsCanceled += translationStatus.DocumentsCanceled; docsSucceeded += translationStatus.DocumentsSucceeded; docsFailed += translationStatus.DocumentsFailed; } Console.WriteLine($"# of operations: {operationsCount}"); Console.WriteLine($"Total Documents: {totalDocs}"); Console.WriteLine($"Succeeded Document: {docsSucceeded}"); Console.WriteLine($"Failed Document: {docsFailed}"); Console.WriteLine($"Canceled Documents: {docsCanceled}"); #endregion }
public void OperationsHistory() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; var client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #region Snippet:OperationsHistory int operationsCount = 0; int totalDocs = 0; int docsCancelled = 0; int docsSucceeded = 0; int docsFailed = 0; TimeSpan pollingInterval = new(1000); foreach (TranslationStatus translationStatus in client.GetAllTranslationStatuses()) { if (translationStatus.Status != DocumentTranslationStatus.Failed && translationStatus.Status != DocumentTranslationStatus.Succeeded) { DocumentTranslationOperation operation = new DocumentTranslationOperation(translationStatus.Id, client); while (!operation.HasCompleted) { if (operation.GetRawResponse().Headers.TryGetValue("Retry-After", out string value)) { pollingInterval = TimeSpan.FromSeconds(Convert.ToInt32(value)); } Thread.Sleep(pollingInterval); operation.UpdateStatus(); } } operationsCount++; totalDocs += translationStatus.DocumentsTotal; docsCancelled += translationStatus.DocumentsCancelled; docsSucceeded += translationStatus.DocumentsSucceeded; docsFailed += translationStatus.DocumentsFailed; } Console.WriteLine($"# of operations: {operationsCount}"); Console.WriteLine($"Total Documents: {totalDocs}"); Console.WriteLine($"Succeeded Document: {docsSucceeded}"); Console.WriteLine($"Failed Document: {docsFailed}"); Console.WriteLine($"Cancelled Documents: {docsCancelled}"); #endregion }
public async Task GetDocumentFormatsTest() { DocumentTranslationClient client = GetClient(); var documentFormats = await client.GetDocumentFormatsAsync(); Assert.GreaterOrEqual(documentFormats.Value.Count, 0); foreach (FileFormat fileFormat in documentFormats.Value) { Assert.IsFalse(string.IsNullOrEmpty(fileFormat.Format)); Assert.IsNotNull(fileFormat.FileExtensions); Assert.IsNotNull(fileFormat.FormatVersions); } }