mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-13 16:40:01 +00:00
Fix plugin logo not loading in standalone build
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
package de.grimsi.gameyfin.core
|
||||
|
||||
import org.apache.tika.Tika
|
||||
import org.springframework.core.io.InputStreamResource
|
||||
import org.springframework.core.io.ByteArrayResource
|
||||
import org.springframework.http.HttpHeaders
|
||||
import org.springframework.http.MediaType
|
||||
import org.springframework.http.ResponseEntity
|
||||
import org.springframework.web.context.request.RequestContextHolder
|
||||
import org.springframework.web.context.request.ServletRequestAttributes
|
||||
import java.io.InputStream
|
||||
|
||||
|
||||
class Utils {
|
||||
@@ -32,21 +31,21 @@ class Utils {
|
||||
}
|
||||
}
|
||||
|
||||
fun inputStreamToResponseEntity(stream: InputStream?): ResponseEntity<InputStreamResource> {
|
||||
if (stream == null) return ResponseEntity.notFound().build()
|
||||
fun inputStreamToResponseEntity(bytes: ByteArray?): ResponseEntity<ByteArrayResource> {
|
||||
if (bytes == null) return ResponseEntity.notFound().build()
|
||||
|
||||
val inputStreamResource = InputStreamResource(stream)
|
||||
val byteArrayResource = ByteArrayResource(bytes)
|
||||
|
||||
val headers = HttpHeaders()
|
||||
val contentLength = stream.available().toLong()
|
||||
val contentType = tika.detect(stream)
|
||||
val contentLength = bytes.size.toLong()
|
||||
val contentType = tika.detect(bytes)
|
||||
|
||||
headers.contentLength = contentLength
|
||||
headers.contentType = MediaType.parseMediaType(contentType)
|
||||
|
||||
return ResponseEntity.ok()
|
||||
.headers(headers)
|
||||
.body(inputStreamResource)
|
||||
.body(byteArrayResource)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -6,7 +6,6 @@ import org.pf4j.ExtensionPoint
|
||||
import org.pf4j.PluginWrapper
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
import org.springframework.stereotype.Service
|
||||
import java.io.InputStream
|
||||
|
||||
@Service
|
||||
class PluginManagementService(
|
||||
@@ -71,7 +70,7 @@ class PluginManagementService(
|
||||
}
|
||||
}
|
||||
|
||||
fun getLogo(pluginId: String): InputStream? {
|
||||
fun getLogo(pluginId: String): ByteArray? {
|
||||
val plugin = pluginManager.getPlugin(pluginId).plugin as GameyfinPlugin
|
||||
return plugin.getLogo()
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import de.grimsi.gameyfin.games.entities.Image
|
||||
import de.grimsi.gameyfin.games.entities.ImageType
|
||||
import de.grimsi.gameyfin.users.UserService
|
||||
import jakarta.annotation.security.RolesAllowed
|
||||
import org.springframework.core.io.ByteArrayResource
|
||||
import org.springframework.core.io.InputStreamResource
|
||||
import org.springframework.http.HttpHeaders
|
||||
import org.springframework.http.MediaType
|
||||
@@ -37,7 +38,7 @@ class ImageEndpoint(
|
||||
}
|
||||
|
||||
@GetMapping("/plugins/{id}/logo")
|
||||
fun getPluginLogo(@PathVariable("id") pluginId: String): ResponseEntity<InputStreamResource>? {
|
||||
fun getPluginLogo(@PathVariable("id") pluginId: String): ResponseEntity<ByteArrayResource>? {
|
||||
val logo = pluginManagementService.getLogo(pluginId)
|
||||
return Utils.inputStreamToResponseEntity(logo)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package de.grimsi.gameyfin.pluginapi.core
|
||||
|
||||
import org.pf4j.Plugin
|
||||
import org.pf4j.PluginWrapper
|
||||
import java.io.InputStream
|
||||
|
||||
abstract class GameyfinPlugin(wrapper: PluginWrapper) : Plugin(wrapper) {
|
||||
|
||||
@@ -40,12 +39,12 @@ abstract class GameyfinPlugin(wrapper: PluginWrapper) : Plugin(wrapper) {
|
||||
return false
|
||||
}
|
||||
|
||||
fun getLogo(): InputStream? {
|
||||
fun getLogo(): ByteArray? {
|
||||
for (format in SUPPORTED_LOGO_FORMATS) {
|
||||
val resourcePath = "$LOGO_FILE_NAME.$format"
|
||||
val inputStream = wrapper.pluginClassLoader.getResourceAsStream(resourcePath)
|
||||
if (inputStream != null) {
|
||||
return inputStream
|
||||
return inputStream.readAllBytes()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user