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)
}
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)
}
fun getPageStrema(book: Book, number: Int): InputStream {
fun getPageStream(book: Book, number: Int): InputStream {
logger.info { "Get page #$number for book: ${book.url}" }
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.persistence.BookRepository
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.springframework.data.domain.Page
import org.springframework.data.domain.Pageable
@ -26,7 +26,7 @@ import java.io.File
class SerieController(
private val serieRepository: SerieRepository,
private val bookRepository: BookRepository,
private val bookManager: BookManager
private val bookParser: BookParser
) {
@GetMapping
@ -98,10 +98,10 @@ class SerieController(
try {
return bookRepository.findByIdOrNull((bookId))?.let { book ->
val pageContent = bookManager.getPageContent(book, pageNumber)
val pageContent = bookParser.getPageStream(book, pageNumber).readBytes()
val mediaType = try {
MediaType.parseMediaType(book.metadata.mediaType!!)
MediaType.parseMediaType(book.metadata.pages[pageNumber - 1].mediaType)
} catch (ex: Exception) {
MediaType.APPLICATION_OCTET_STREAM
}