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

Class Method, % Branch, % Line, % Instruction, %
AdminKt 0% (0/3) 0% (0/8) 0% (0/55)
AdminKt$adminRoutes$2 0% (0/1) 0% (0/1) 0% (0/27)
AdminKt$adminRoutes$3$1 0% (0/1) 0% (0/4) 0% (0/6) 0% (0/65)
AdminKt$adminRoutes$3$2 0% (0/1) 0% (0/12) 0% (0/14) 0% (0/145)
AdminKt$adminRoutes$3$3 0% (0/1) 0% (0/4) 0% (0/31)
Total 0% (0/7) 0% (0/16) 0% (0/33) 0% (0/323)


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