public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log) { var textTranslator = new GoogleTextTranslator(); try { // From StringValues fromValues; req.Form.TryGetValue("from", out fromValues); var from = fromValues.ToString(); // To StringValues toValues; req.Form.TryGetValue("to", out toValues); if (toValues.Count == 0) { throw new Exception("Missing field `to`"); } var to = toValues.ToString(); // File if (req.Form.Files.Count == 0) { throw new Exception("Missing file"); } var file = req.Form.Files[0]; var stream = file.OpenReadStream(); // Since this stream is read-only, we create a copy that we mutate var memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); // Reset the position to the start memoryStream.Position = 0; // Select the appropriate translator var mimeType = file.ContentType; var documentTranslator = DocumentTranslatorByMimeType(mimeType); // Perform the translation // This modifies the memoryStream in place, so we don't get a return value back. await documentTranslator.TranslateDocument(memoryStream, textTranslator, to, from); // Return the new file return new FileContentResult(memoryStream.ToArray(), mimeType); } catch (Exception error) { Console.Error.WriteLine(error); return new ObjectResult(new { error = error }) { StatusCode = 500 }; } }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log) { try { var translator = new GoogleTextTranslator(); var languages = await translator.ListSupportedLanguages(); return(new OkObjectResult(languages)); } catch (Exception error) { Console.Error.WriteLine(error); return(new ObjectResult(new { error }) { StatusCode = 500 }); } }