public async Task <TranslateResponseModel> GetDefinitionAsync(DefinitionRequestModel request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } //Getting a definition is translation a word with the same Dest and From language. var translateRequest = new TranslateRequestModel { Dest = request.Language, From = request.Language, Page = request.Page, PageSize = request.PageSize, Phrase = request.Phrase }; var response = await _translator.GetTranslationAsync(translateRequest); return(response); }
public async Task <TranslateResponseModel> GetTranslationAsync(TranslateRequestModel request) { var traslationResponse = new TranslateResponseModel(); using (var client = new HttpClient()) { client.BaseAddress = new Uri(_translateEndPoint); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); var queryString = String.Format(_queryString, request.From.ThreeLetterISOLanguageName, request.Dest.ThreeLetterISOLanguageName, request.Phrase); var response = await client.GetAsync(queryString); if (response.IsSuccessStatusCode) { traslationResponse = response.Content.ReadAsAsync <TranslateResponseModel>().Result; } } return(traslationResponse); }
public async Task <IActionResult> Translate(TranslateRequestModel model) { var message = string.Empty; var documentTranslationClient = GetDocumentTranslationClient(); var documentTranslationInputs = new List <DocumentTranslationInput>(); var expiresOn = DateTimeOffset.UtcNow.AddDays(365); foreach (var language in model.TargetLanguages) { var translationTargets = new List <TranslationTarget>(); var sourceUri = storageService.GenerateSourceContainerSasUri(azureTranslatorOptions.SourceBlobContainerName, expiresOn); var translationSource = new TranslationSource(new Uri(sourceUri)); translationSource.LanguageCode = model.CriteriaLanguage; var sourceName = documentNamingStrategy.GetTranslatedDocumentName(model.Name, language); var nameTokens = sourceName.Split("."); var namePart = String.Join(".", nameTokens.Take(nameTokens.Length - 1)); translationSource.Filter = new DocumentFilter { Prefix = namePart, Suffix = string.Empty, }; var translationTarget = new TranslationTarget(new Uri(storageService.GenerateTargetContainerSasUri(azureTranslatorOptions.TargetBlobContainerName, expiresOn)), language); translationTargets.Add(translationTarget); kr.bbon.Azure.Translator.Services.Models.AzureStorage.Blob.BlobCreateResultModel blobfound = null; try { blobfound = await storageService.FindByNameAsync(azureTranslatorOptions.TargetBlobContainerName, sourceName); } catch (Exception ex) { blobfound = null; } if (blobfound != null) { var error = new ErrorModel { Code = "Target blob exists", Message = $"If target blob exists, translation job will be failed. Please make sure to remove target blob ({sourceName}) in target container.", }; throw new ApiHttpStatusException <ErrorModel>(HttpStatusCode.BadRequest, error.Message, error); } var documentTranslationInput = new DocumentTranslationInput(translationSource, translationTargets); documentTranslationInputs.Add(documentTranslationInput); } if (documentTranslationInputs.Count == 0) { message = "Request is invaild"; var errorModel = new ErrorModel { Code = "BadRequest", Message = message }; throw new ApiHttpStatusException <ErrorModel>(HttpStatusCode.BadRequest, message, errorModel); } var operation = await documentTranslationClient.StartTranslationAsync(documentTranslationInputs); //var documentStatus = await operation.WaitForCompletionAsync(); //await foreach (var document in documentStatus.Value) //{ //} return(StatusCode(System.Net.HttpStatusCode.Accepted, new DocumentTranslationResponseModel { Id = operation.Id, })); }
public async Task <IActionResult> TranslateAsync(TranslateRequestModel model) { var message = ""; try { if (!ModelState.IsValid) { message = "Request body is invalid."; throw new ApiHttpStatusException <ErrorModel <int> >(HttpStatusCode.BadRequest, message, new ErrorModel <int> { Code = (int)HttpStatusCode.BadRequest, Message = message, }); } //var result = await storageService.FindByNameAsync(model.Name); //var containerSasUri = storageService.GenerateContainerSasUri(); var nameTokens = model.Name.Split('.'); var namePart = string.Join(".", nameTokens.Take(nameTokens.Length - 1)); var containerSasUri = "https://chtranslatorstroage.blob.core.windows.net/document-translation?sp=rwl&st=2021-08-03T07:46:05Z&se=2021-08-03T15:46:05Z&spr=https&sv=2020-08-04&sr=c&sig=D8uNMCPgOpEN9AGG6d%2BCS1TOAnEhXON1NNliUtpM174%3D"; var documentTranslationRequestModel = new DocumentTranslationRequestModel { Inputs = new BatchInput[] { new BatchInput { Source = new SourceInput { //SourceUrl = storageService.GenerateBlobSasUri(model.Name, BlobSasPermissions.List | BlobSasPermissions.Read, DateTimeOffset.UtcNow + TimeSpan.FromDays(3)), //SourceUrl = storageService.GenerateContainerSasUri(BlobContainerSasPermissions.All, DateTimeOffset.UtcNow + TimeSpan.FromDays(3)), SourceUrl = containerSasUri, StorageSource = StorageSources.AzureBlob, Filter = new Filter { //Prefix = namePart, //Suffix = ".html", Suffix = model.Name, }, Language = model.CriteriaLanguage, }, //StorageType = StorageInputTypes.File, StorageType = StorageInputTypes.Folder, Targets = model.TargetLanguages.Select(language => new TargetInput { //TargetUrl = storageService.GenerateBlobSasUri(documentNamingStrategy.GetTranslatedDocumentName(model.Name,language), BlobSasPermissions.List | BlobSasPermissions.Write | BlobSasPermissions.Create , DateTimeOffset.UtcNow + TimeSpan.FromDays(3)), //TargetUrl = storageService.GenerateContainerSasUri(BlobContainerSasPermissions.All, DateTimeOffset.UtcNow + TimeSpan.FromDays(3)), //TargetUrl="https://chtranslatorstroage.blob.core.windows.net/document-translation?sp=rw&st=2021-08-03T07:46:05Z&se=2021-08-03T15:46:05Z&spr=https&sv=2020-08-04&sr=c&sig=7%2FxohLKKDT2qywxgiFgpqVGdMXOm7lo5opITh1V2Vr4%3D", TargetUrl = containerSasUri, Language = language, StorageSource = StorageSources.AzureBlob, }), }, }, }; var translationRequestResult = await documentTranslationService.RequestTranslation(documentTranslationRequestModel); return(StatusCode(HttpStatusCode.Accepted, translationRequestResult)); } catch (ApiException ex) { return(StatusCode(ex.StatusCode, ex.Message, ex.GetDetails())); } catch (Exception ex) { logger.LogError(ex, ex.Message); return(StatusCode(HttpStatusCode.InternalServerError, ex.Message)); } }