fixed incorrect mediaType returned for book pages

This commit is contained in:
Gauthier Roebroeck 2019-08-18 22:16:59 +08:00
parent 264be393b8
commit d900318b42
3 changed files with 5 additions and 20 deletions

View file

@ -29,19 +29,4 @@ class BookManager(
bookRepository.save(book) bookRepository.save(book)
} }
fun getPageContent(book: Book, number: Int): ByteArray {
logger.info { "Get page #$number for book: ${book.url}" }
if (book.metadata.status == Status.UNKNOWN) {
logger.info { "Book metadata is unknown, parsing it now" }
parseAndPersist(book)
}
if (book.metadata.status != Status.READY) {
logger.warn { "Book metadata is not ready, cannot get pages" }
throw MetadataNotReadyException()
}
return bookParser.getPageStrema(book, number).readBytes()
}
} }

View file

@ -39,7 +39,7 @@ class BookParser(
return BookMetadata(mediaType = mediaType, status = Status.READY, pages = pages) return BookMetadata(mediaType = mediaType, status = Status.READY, pages = pages)
} }
fun getPageStrema(book: Book, number: Int): InputStream { fun getPageStream(book: Book, number: Int): InputStream {
logger.info { "Get page #$number for book: ${book.url}" } logger.info { "Get page #$number for book: ${book.url}" }
if (book.metadata.status != Status.READY) { if (book.metadata.status != Status.READY) {

View file

@ -5,7 +5,7 @@ import org.gotson.komga.domain.model.Serie
import org.gotson.komga.domain.model.Status import org.gotson.komga.domain.model.Status
import org.gotson.komga.domain.persistence.BookRepository import org.gotson.komga.domain.persistence.BookRepository
import org.gotson.komga.domain.persistence.SerieRepository import org.gotson.komga.domain.persistence.SerieRepository
import org.gotson.komga.domain.service.BookManager import org.gotson.komga.domain.service.BookParser
import org.gotson.komga.domain.service.MetadataNotReadyException import org.gotson.komga.domain.service.MetadataNotReadyException
import org.springframework.data.domain.Page import org.springframework.data.domain.Page
import org.springframework.data.domain.Pageable import org.springframework.data.domain.Pageable
@ -26,7 +26,7 @@ import java.io.File
class SerieController( class SerieController(
private val serieRepository: SerieRepository, private val serieRepository: SerieRepository,
private val bookRepository: BookRepository, private val bookRepository: BookRepository,
private val bookManager: BookManager private val bookParser: BookParser
) { ) {
@GetMapping @GetMapping
@ -98,10 +98,10 @@ class SerieController(
try { try {
return bookRepository.findByIdOrNull((bookId))?.let { book -> return bookRepository.findByIdOrNull((bookId))?.let { book ->
val pageContent = bookManager.getPageContent(book, pageNumber) val pageContent = bookParser.getPageStream(book, pageNumber).readBytes()
val mediaType = try { val mediaType = try {
MediaType.parseMediaType(book.metadata.mediaType!!) MediaType.parseMediaType(book.metadata.pages[pageNumber - 1].mediaType)
} catch (ex: Exception) { } catch (ex: Exception) {
MediaType.APPLICATION_OCTET_STREAM MediaType.APPLICATION_OCTET_STREAM
} }