public async Task <IActionResult> Post(IFormFile file, TranslatedFileViewModel model) { var pipeline = new Markdig.MarkdownPipelineBuilder().UseAdvancedExtensions().Build(); model.Languages.AddRange(LanguagesList()); var filePath = Path.Combine( Directory.GetCurrentDirectory(), "wwwroot", file.FileName); if (file.Length > 0) { using (var stream = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(stream); } var tr = System.IO.File.ReadAllText(filePath); System.IO.File.Delete(filePath); model.OriginalHtml = Markdown.ToHtml(tr); model.OriginalText = tr.Replace("\r\n", "<br>"); var translatedText = await Translate(tr, model); model.TranslatedHtml = Markdown.ToHtml(translatedText, pipeline); model.TranslatedText = translatedText.Replace("\r\n", "<br>"); model.TranslatedPlainText = translatedText; model.from = OriginLanguage; } return(View("Index", model)); }
private async Task <string> Translate(string text, TranslatedFileViewModel model) { uri = uri + "&to=" + model.to; System.Object[] body = new System.Object[] { new { Text = text } }; var requestBody = JsonConvert.SerializeObject(body); using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { request.Method = HttpMethod.Post; request.RequestUri = new Uri(uri); request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json"); request.Headers.Add("Ocp-Apim-Subscription-Key", key); var response = await client.SendAsync(request); var responseBody = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <List <Translated> >(responseBody); var textResult = result.FirstOrDefault().translations.FirstOrDefault(x => x.to.Equals(model.to)).text; OriginLanguage = result.FirstOrDefault().detectedLanguage.language; return(FilterResponse(textResult)); } }
public IActionResult Index() { TranslatedFileViewModel model = new TranslatedFileViewModel(); model.Languages.AddRange(LanguagesList()); return(View(model)); }