diff --git a/Sources/src/main/kotlin/allin/data/UserDataSource.kt b/Sources/src/main/kotlin/allin/data/UserDataSource.kt index 273de87..a116264 100644 --- a/Sources/src/main/kotlin/allin/data/UserDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/UserDataSource.kt @@ -14,5 +14,5 @@ interface UserDataSource { fun canHaveDailyGift(username: String): Boolean fun addImage(userid: String, image: ByteArray) fun removeImage(userid: String) - fun getImage(userid: String): ByteArray? + fun getImage(userid: String): String? } \ No newline at end of file diff --git a/Sources/src/main/kotlin/allin/data/mock/MockBetDataSource.kt b/Sources/src/main/kotlin/allin/data/mock/MockBetDataSource.kt index 7c522ea..c53d894 100644 --- a/Sources/src/main/kotlin/allin/data/mock/MockBetDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/mock/MockBetDataSource.kt @@ -55,7 +55,6 @@ class MockBetDataSource(private val mockData: MockDataSource.MockData) : BetData }.map { it } } } - } override fun getBetById(id: String): Bet? = diff --git a/Sources/src/main/kotlin/allin/data/mock/MockUserDataSource.kt b/Sources/src/main/kotlin/allin/data/mock/MockUserDataSource.kt index 369dcb9..46d0b04 100644 --- a/Sources/src/main/kotlin/allin/data/mock/MockUserDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/mock/MockUserDataSource.kt @@ -65,7 +65,7 @@ class MockUserDataSource(private val mockData: MockDataSource.MockData) : UserDa TODO("Not yet implemented") } - override fun getImage(userid: String): ByteArray? { + override fun getImage(userid: String): String? { TODO("Not yet implemented") } diff --git a/Sources/src/main/kotlin/allin/data/postgres/PostgresUserDataSource.kt b/Sources/src/main/kotlin/allin/data/postgres/PostgresUserDataSource.kt index 40329f5..566b21d 100644 --- a/Sources/src/main/kotlin/allin/data/postgres/PostgresUserDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/postgres/PostgresUserDataSource.kt @@ -92,7 +92,18 @@ class PostgresUserDataSource(private val database: Database) : UserDataSource { database.usersimage.removeIf { it.id eq userid } } - override fun getImage(userid: String): ByteArray? = - database.usersimage.find { it.id eq userid }?.image + /*override fun getImage(userid: String): ByteArray? = + database.usersimage.find { it.id eq userid }?.image*/ + override fun getImage(userid: String): String? { + val resultSet = database.executeWithResult("SELECT encode(image, 'base64') AS image FROM userimage WHERE user_id = '${userid}'")?: return null + + if (resultSet.next()) { + val base64Image: String? = resultSet.getString("image") + if (base64Image != null) { + return base64Image + } + } + return null + } } \ No newline at end of file diff --git a/Sources/src/main/kotlin/allin/routing/userRouter.kt b/Sources/src/main/kotlin/allin/routing/userRouter.kt index da43808..06ec225 100644 --- a/Sources/src/main/kotlin/allin/routing/userRouter.kt +++ b/Sources/src/main/kotlin/allin/routing/userRouter.kt @@ -111,16 +111,14 @@ fun Application.userRouter() { get("/users/images/{fileName}") { val fileName = call.parameters["fileName"] - val urlfile = "images/$fileName" - val file = File("$urlfile.png") if (file.exists()) { call.respondFile(file) } else { val imageBytes = userDataSource.getImage(fileName.toString()) if (imageBytes != null) { - imageManagerUser.saveImage(urlfile, imageBytes.toString()) + imageManagerUser.saveImage(urlfile, imageBytes) call.respondFile(file) } else { call.respond(HttpStatusCode.NotFound, "File not found") diff --git a/Sources/src/main/kotlin/allin/utils/ImageManager.kt b/Sources/src/main/kotlin/allin/utils/ImageManager.kt index 6429544..18b977b 100644 --- a/Sources/src/main/kotlin/allin/utils/ImageManager.kt +++ b/Sources/src/main/kotlin/allin/utils/ImageManager.kt @@ -4,8 +4,10 @@ import java.io.File import java.util.* class ImageManager { + fun saveImage(urlfile: String, base64Image: String): ByteArray? { - val imageBytes = Base64.getDecoder().decode(base64Image) + val cleanedBase64Image = cleanBase64(base64Image) + val imageBytes = Base64.getDecoder().decode(cleanedBase64Image) val file = File("${urlfile}.png") file.parentFile.mkdirs() file.writeBytes(imageBytes) @@ -19,4 +21,6 @@ class ImageManager { } fun imageAvailable(urlfile: String) = File(urlfile).exists() + + fun cleanBase64(base64Image: String) = base64Image.replace("\n", "").replace("\r", "") } \ No newline at end of file