using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Serwer.Infrastructure.Services;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace Serwer.Api.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ImageController : ControllerBase
    {
        private readonly IImageHandler _imageService;
        public ImageController(IImageHandler imageService)
        {
            _imageService = imageService;
        }

        [Authorize]
        [HttpPost("Process")]
        public async Task<IActionResult> Process([FromForm]IFormFile image)
        {
            if(image == null)
            {
                return NotFound();
            }
            using (var memoryStream = new MemoryStream())
            {
                await image.CopyToAsync(memoryStream);
                var response = await _imageService.Process(image.Name, image.ContentType, memoryStream.ToArray());
                return Ok(response);
            }
        }
    }
}