Initial commit

This commit is contained in:
Jānis Kacēns
2024-04-10 12:17:24 +03:00
parent 7ebb28f72a
commit 3889e684b4
152 changed files with 27501 additions and 0 deletions
@@ -0,0 +1,171 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Net.Http.Headers;
using PosterMaker.Interfaces.Services;
using PosterMaker.Models;
using PosterMaker.Models.Enums;
namespace PosterMaker.Controllers;
[ApiController]
[Route("poster")]
public class MagickController : Controller
{
private readonly IMoviePosterMakerService _moviePosterMakerService;
private readonly ILogger<MagickController> _logger;
private readonly ICollectionPosterMakerService _collectionPosterMakerService;
private readonly ISeriesPosterMakerService _seriesPosterMakerService;
public MagickController(IMoviePosterMakerService moviePosterMakerService, ILogger<MagickController> logger,
ICollectionPosterMakerService collectionPosterMakerService, ISeriesPosterMakerService seriesPosterMakerService)
{
_moviePosterMakerService = moviePosterMakerService;
_logger = logger;
_collectionPosterMakerService = collectionPosterMakerService;
_seriesPosterMakerService = seriesPosterMakerService;
}
[HttpPost, DisableRequestSizeLimit]
[RequestFormLimits(MultipartBodyLengthLimit = 268435456)]
[Route("Movie")]
public IActionResult Movie([FromForm]IFormFile image,
[FromForm]string? topSubtitle,
[FromForm]string? title,
[FromForm]string? subtitle,
[FromForm]string? index,
[FromForm]string? title2,
[FromForm]MovieLogoEnum? logo,
[FromForm]LogoOptionEnum? logoOption)
{
_logger.LogInformation("Received information from FE: title: {Title}, title2: {Title2}, subtitle: {Subtitle}, index: {Index}, topSubtitle: {TopSubtitle}", title, title2, subtitle, index, topSubtitle);
var imageProperties = new ImageProperties
{
Title = string.IsNullOrEmpty(title) || title == "undefined" ? "" : title,
Subtitle = string.IsNullOrEmpty(subtitle) || subtitle == "undefined" ? "" : subtitle,
TopSubtitle = string.IsNullOrEmpty(topSubtitle) || topSubtitle == "undefined" ? "" : topSubtitle,
Index = string.IsNullOrEmpty(index) || index == "undefined" ? "" : index,
Title2 = string.IsNullOrEmpty(title2) || title2 == "undefined" ? "" : title2,
Logo = logo,
LogoOption = logoOption
};
try
{
var folderName = Path.Combine("Resources", "Uploads");
var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);
if (image.Length <= 0) return BadRequest();
var fileName = ContentDispositionHeaderValue.Parse(image.ContentDisposition).FileName.ToString();
var fullPath = Path.Combine(pathToSave, fileName);
var dbPath = Path.Combine(folderName, fileName);
using (var stream = new FileStream(fullPath, FileMode.Create))
{
image.CopyTo(stream);
}
var response = _moviePosterMakerService.CreatePoster(dbPath, imageProperties);
return Ok(new FileUploadResponse{PicBytes = Convert.ToBase64String(response)});
}
catch (Exception ex)
{
_logger.LogError("Unhandled error", ex);
return StatusCode(500, $"Internal server error: {ex}");
}
}
[HttpPost, DisableRequestSizeLimit]
[RequestFormLimits(MultipartBodyLengthLimit = 268435456)]
[Route("Collection")]
public IActionResult Collection([FromForm]IFormFile image,
[FromForm]string? title,
[FromForm]string? title2,
[FromForm]MovieLogoEnum? logo,
[FromForm]LogoOptionEnum? logoOption)
{
_logger.LogInformation("Received information from FE: title: {Title}", title);
var imageProperties = new ImageProperties
{
Title = string.IsNullOrEmpty(title) || title == "undefined" ? "" : title,
Title2 = string.IsNullOrEmpty(title2) || title2 == "undefined" ? "" : title2,
Logo = logo,
LogoOption = logoOption
};
try
{
var folderName = Path.Combine("Resources", "Uploads");
var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);
if (image.Length <= 0) return BadRequest();
var fileName = ContentDispositionHeaderValue.Parse(image.ContentDisposition).FileName.ToString();
var fullPath = Path.Combine(pathToSave, fileName);
var dbPath = Path.Combine(folderName, fileName);
using (var stream = new FileStream(fullPath, FileMode.Create))
{
image.CopyTo(stream);
}
var response = _collectionPosterMakerService.CreatePoster(dbPath, imageProperties);
return Ok(new FileUploadResponse{PicBytes = Convert.ToBase64String(response)});
}
catch (Exception ex)
{
_logger.LogError("Unhandled error", ex);
return StatusCode(500, $"Internal server error: {ex}");
}
}
[HttpPost, DisableRequestSizeLimit]
[RequestFormLimits(MultipartBodyLengthLimit = 268435456)]
[Route("Series")]
public IActionResult Series([FromForm]IFormFile image,
[FromForm]string? title,
[FromForm]string? title2,
[FromForm]string? season,
[FromForm]string? subtitle,
[FromForm]string? topSubtitle,
[FromForm]MovieLogoEnum? logo,
[FromForm]LogoOptionEnum? logoOption,
[FromForm]NetworkLogoEnum? networkLogo,
[FromForm]bool? limitedSeries)
{
_logger.LogInformation("Received information from FE: title: {Title}", title);
var imageProperties = new ImageProperties
{
Title = string.IsNullOrEmpty(title) || title == "undefined" ? "" : title,
Title2 = string.IsNullOrEmpty(title2) || title2 == "undefined" ? "" : title2,
Logo = logo,
LogoOption = logoOption,
NetworkLogo = networkLogo,
Season = string.IsNullOrEmpty(season) || season == "undefined" ? "" : season,
Subtitle = string.IsNullOrEmpty(subtitle) || subtitle == "undefined" ? "" : subtitle,
TopSubtitle = string.IsNullOrEmpty(topSubtitle) || topSubtitle == "undefined" ? "" : topSubtitle,
LimitedSeries = limitedSeries
};
try
{
var folderName = Path.Combine("Resources", "Uploads");
var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), folderName);
if (image.Length <= 0) return BadRequest();
var fileName = ContentDispositionHeaderValue.Parse(image.ContentDisposition).FileName.ToString();
var fullPath = Path.Combine(pathToSave, fileName);
var dbPath = Path.Combine(folderName, fileName);
using (var stream = new FileStream(fullPath, FileMode.Create))
{
image.CopyTo(stream);
}
var response = _seriesPosterMakerService.CreatePoster(dbPath, imageProperties);
return Ok(new FileUploadResponse{PicBytes = Convert.ToBase64String(response)});
}
catch (Exception ex)
{
_logger.LogError("Unhandled error", ex);
return StatusCode(500, $"Internal server error: {ex}");
}
}
}