Add public icon list endpoint
All checks were successful
build-and-deploy / build-deploy (push) Successful in 33s

This commit is contained in:
androidlover5842
2026-01-27 22:36:09 +05:30
parent 0485d6a3c7
commit 8b430cbbcf
3 changed files with 34 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
package com.android.trisolarisserver.controller
import org.springframework.beans.factory.annotation.Value
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import java.nio.file.Files
import java.nio.file.Paths
@RestController
@RequestMapping("/icons")
class IconFiles(
@Value("\${storage.icons.png.root:/home/androidlover5842/docs/icons/png}")
private val pngRoot: String
) {
@GetMapping("/png")
fun listPng(): List<String> {
val dir = Paths.get(pngRoot)
if (!Files.exists(dir) || !Files.isDirectory(dir)) {
return emptyList()
}
Files.newDirectoryStream(dir).use { stream ->
return stream
.filter { Files.isRegularFile(it) }
.map { it.fileName.toString() }
.filter { it.lowercase().endsWith(".png") }
.sorted()
.toList()
}
}
}

View File

@@ -29,6 +29,7 @@ class FirebaseAuthFilter(
|| path.matches(Regex("^/properties/[^/]+/rooms/[^/]+/images$")) || path.matches(Regex("^/properties/[^/]+/rooms/[^/]+/images$"))
|| path.matches(Regex("^/properties/[^/]+/room-types$")) || path.matches(Regex("^/properties/[^/]+/room-types$"))
|| (path == "/image-tags" && request.method.equals("GET", true)) || (path == "/image-tags" && request.method.equals("GET", true))
|| path == "/icons/png"
} }
override fun doFilterInternal( override fun doFilterInternal(

View File

@@ -30,6 +30,7 @@ class SecurityConfig(
it.requestMatchers("/properties/*/rooms/*/images").permitAll() it.requestMatchers("/properties/*/rooms/*/images").permitAll()
it.requestMatchers("/properties/*/room-types").permitAll() it.requestMatchers("/properties/*/room-types").permitAll()
it.requestMatchers(org.springframework.http.HttpMethod.GET, "/image-tags").permitAll() it.requestMatchers(org.springframework.http.HttpMethod.GET, "/image-tags").permitAll()
it.requestMatchers("/icons/png").permitAll()
it.anyRequest().authenticated() it.anyRequest().authenticated()
} }
.exceptionHandling { .exceptionHandling {