Example #1
0
        public async Task <IActionResult> ImagePost()
        {
            Console.WriteLine("Getting request");
            try
            {
                var imagesBaseFilePath = settings.MiniPonicsImagesBaseFilePath;
                var file = Request.Form.Files[0];

                var now = DateTimeOffset.Now.TruncateToMinute();

                if (file.Length > 0)
                {
                    var fileExtension = ContentDispositionHeaderValue
                                        .Parse(file.ContentDisposition)
                                        .FileName
                                        .Trim()
                                        .Split(new[] { '.' })
                                        .LastOrDefault()
                                        .ToString();
                    var fileName  = $"{now:O}.{fileExtension}";
                    var directory = Path.Combine(
                        imagesBaseFilePath,
                        now.Year.ToString(),
                        now.Month.ToString(),
                        now.Day.ToString());
                    Directory.CreateDirectory(directory);
                    var fullPath = Path.Combine(directory, fileName);

                    await using (var stream = new FileStream(fullPath, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);

                        await miniPonicsImageDataRepository.Save(new MiniPonicsImageData
                        {
                            EventDate     = now,
                            ImageFilePath = fullPath
                        });
                    }

                    return(NoContent());
                }

                return(BadRequest());
            }
            catch (Exception e)
            {
                Console.WriteLine($"Error in {nameof(MiniPonicsController)}: {e}");
                return(StatusCode(500, "Internal server error"));
            }
        }
Example #2
0
        public async Task <IActionResult> Post([FromBody] DarkSkyLog forecast)
        {
            await darkSkyLogRepository.Save(forecast);

            return(NoContent());
        }