Coverage Summary for Class: AdminKt (dev.suresh.routes)

Class Method, % Branch, % Line, % Instruction, %
AdminKt 0% (0/5) 0% (0/10) 0% (0/85)
AdminKt$adminRoutes$2 0% (0/1) 0% (0/1) 0% (0/31)
AdminKt$adminRoutes$3$1$1 0% (0/1) 0% (0/4) 0% (0/5) 0% (0/97)
AdminKt$adminRoutes$3$1$2 0% (0/1) 0% (0/8) 0% (0/11) 0% (0/187)
AdminKt$adminRoutes$3$1$3 0% (0/1) 0% (0/4) 0% (0/39)
Total 0% (0/9) 0% (0/12) 0% (0/31) 0% (0/439)


 package dev.suresh.routes
 
 import BuildConfig
 import ch.qos.logback.classic.Level
 import ch.qos.logback.classic.Level.INFO
 import ch.qos.logback.classic.LoggerContext
 import ch.qos.logback.classic.util.ContextInitializer
 import io.ktor.http.ContentType
 import io.ktor.server.auth.authenticate
 import io.ktor.server.http.content.staticResources
 import io.ktor.server.plugins.swagger.*
 import io.ktor.server.response.*
 import io.ktor.server.routing.*
 import org.slf4j.Logger.ROOT_LOGGER_NAME
 import org.slf4j.LoggerFactory
 
 fun Routing.adminRoutes() {
   swaggerUI(path = "docs", swaggerFile = "openapi/documentation.yaml") {
     version = BuildConfig.swaggerUi
     customStyle(BuildConfig.swaggerStyle)
   }
 
   get("/") { call.respondRedirect("/docs") }
 
   authenticate("admin") {
     route("/loglevel") {
       get("/{logger}") {
         val loggerName = call.parameters["logger"] ?: ROOT_LOGGER_NAME
         val loggerCtx = LoggerFactory.getILoggerFactory() as LoggerContext
         when (val logger = loggerCtx.getLogger(loggerName)) {
           null -> call.respondText("Logger '$loggerName' not found", status = NotFound)
           else -> call.respondText("Logger '$loggerName' has level: ${logger.level}")
         }
       }
 
       post("/{logger}/{level}") {
         val loggerName = call.parameters["logger"] ?: ROOT_LOGGER_NAME
         val levelName = call.parameters["level"]?.uppercase() ?: INFO.levelStr
         try {
           val loggerCtx = LoggerFactory.getILoggerFactory() as LoggerContext
           val matching =
               loggerCtx.loggerList
                   .filter { it.name.startsWith(prefix = loggerName, ignoreCase = true) }
                   .onEach { it.level = Level.valueOf(levelName) }
 
           when (matching.isNotEmpty()) {
             true -> call.respondText("Set $loggerName and sub-packages to $levelName")
             else -> call.respondText("Logger '$loggerName' not found", status = NotFound)
           }
         } catch (_: Exception) {
           call.respondText("Invalid log level: $levelName", status = BadRequest)
         }
       }
 
       post("/reset") {
         val loggerCtx = LoggerFactory.getILoggerFactory() as LoggerContext
         loggerCtx.reset()
         ContextInitializer(loggerCtx).autoConfig()
         call.respondText("Logback configuration reset!")
       }
     }
 
     staticResources("/resources", ".") { contentType { ContentType.Text.Plain } }
   }
 }