using Bibblan.Business.Clients; using Bibblan.Business.Services; using GraphQL; using GraphQL.Client.Abstractions; using Microsoft.AspNetCore.Mvc; namespace Bibblan.Controllers { [ApiController] [Route("api/[controller]")] public class BibblanController : ControllerBase { DatabaseService _db; CalibreService _calibre; HardcoverClient _hardCover; public BibblanController(DatabaseService databaseService, CalibreService calibre, HardcoverClient hcclient) { _db = databaseService; _calibre = calibre; _hardCover = hcclient; } [HttpGet("cover")] public IActionResult GetCover(string path) { //TODO: Bör kanske inte gå direkt mot calibres filer.. var bytes = _calibre.Cover(path); if (bytes == null) return NotFound(); return File(bytes, "image/jpeg", true); } [HttpGet("books")] public IActionResult GetBooks(string query = null) { BookFilter? filter = query != null ? new BookFilter { Query = query } : null; var books = _db.GetBooks(100,filter).ToList(); return Ok(books); } [HttpGet("books/{id}")] public IActionResult GetBook(int id) { var book = _db.GetBookDetails(id); return Ok(book); } [HttpGet("authors")] public IActionResult GetAuthors(string query = null) { BookFilter? filter = query != null ? new BookFilter { Query = query } : null; var authors = _db.GetAuthors(100, filter).ToList(); return Ok(authors); } [HttpGet("books/author/{authorid}")] public IActionResult GetBooksByAuthor(int authorid) { var authors = _db.GetBooks(100, new BookFilter { Author = authorid }).ToList(); return Ok(authors); } [HttpGet("authorcover/{authorid}")] public IActionResult GetAuthorCover(int authorid) { //TODO: fixa vid tillfälle return Ok(new { desc = "picture of banana goes here"}); } [HttpGet("series")] public IActionResult GetSeries(string query = null) { BookFilter? filter = query != null ? new BookFilter { Query = query } : null; var series = _db.GetSeries(100, filter).ToList(); return Ok(series); } [HttpGet("tags")] public IActionResult GetTags(string query = null) { BookFilter? filter = query != null ? new BookFilter { Query = query } : null; var tags = _db.GetTags(filter).ToList(); return Ok(tags); } //test [HttpGet("lookupbook")] public async Task LookupBook(string title, string author) { var result = await _hardCover.LookupBook(title, author); return Ok(result); } [HttpGet("lookupauthor")] public async Task LookupAuthor(string name) { var result = await _hardCover.LookupAuthor(name); return Ok(result); } } }