Pārlūkot izejas kodu

repair bootstrap route

herlanS_ 4 gadi atpakaļ
vecāks
revīzija
9a82ef02b2

+ 11 - 12
src/main/kotlin/co/id/datacomsolusindo/ipphonebridge/BridgeFIlter.kt

@@ -19,10 +19,10 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
 import org.springframework.web.servlet.resource.PathResourceResolver
+import java.io.File
 import java.io.IOException
 import java.io.Serializable
 import java.net.InetAddress
-import java.nio.charset.StandardCharsets
 import java.util.*
 import java.util.concurrent.TimeUnit
 import javax.servlet.*
@@ -72,7 +72,7 @@ class BridgeFilter(private val template: SimpMessagingTemplate, val resourceLoad
             return
         } else {
             val search = isResourceAvailable(toPath)
-            if (search != null && search != "assets/bootstrap.js") {
+            if (search != null && !search.endsWith("assets/bootstrap.js")) {
                 res.sendRedirect("/resources/$search")
             } else {
                 println("client $client")
@@ -113,8 +113,8 @@ class BridgeFilter(private val template: SimpMessagingTemplate, val resourceLoad
                     it.entries
                             .filter { f -> resFromSocket.statusCode < 400 || (resFromSocket.statusCode >= 400 && f.key == "Content-Type") }
                             .forEach { en ->
-                        res.setHeader(en.key, en.value.joinToString(","))
-                    }
+                                res.setHeader(en.key, en.value.joinToString(","))
+                            }
                 }
 
                 resFromSocket.body?.let {
@@ -133,15 +133,14 @@ class BridgeFilter(private val template: SimpMessagingTemplate, val resourceLoad
 
     fun isResourceAvailable(path: String, itr: Int = 1): String? {
         val splPath = path.split("/").takeLast(itr)
-        if (splPath.size >= itr) {
+        val f = File("web")
+        if (splPath.size >= itr && f.isDirectory) {
             val search = splPath.joinToString("/")
-            println("search $search")
-            val resource = resourceLoader.getResource("file:web/$search")
-            return if (resource.exists() && resource.file.isFile) {
-                return search
-            } else {
-                isResourceAvailable(path, itr + 1)
-            }
+//            println("search $search")
+            return f.listFiles()?.filter { it.isDirectory }?.map { it.name }?.map {
+                Pair(it, resourceLoader.getResource("file:web/$it/$search"))
+            }?.filter { it.second.exists() && it.second.file.isFile }?.map { "${it.first}/$search" }?.firstOrNull()
+                    ?: isResourceAvailable(path, itr + 1)
         }
         return null
     }