Esempio n. 1
0
        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 };
            }
        }
Esempio n. 2
0
        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
                });
            }
        }