override fun doHandle()

in src/main/kotlin/org/jetbrains/teamcity/github/controllers/WebHooksController.kt [100:145]


    override fun doHandle(request: HttpServletRequest, response: HttpServletResponse): ModelAndView? {
        val action = request.getParameter("action")
        val popup = PropertiesUtil.getBoolean(request.getParameter("popup"))
        var element: JsonElement
        try {
            when (action) {
                in listOf("add", "check", "delete", "ping", "install") -> {
                    element = doHandleAction(request, action, popup)
                }
                "tokenGranted" -> {
                    return ModelAndView(myTokenGrantedPath)
                }
                "check-all" -> {
                    element = doHandleCheckAllAction(request, popup)
                }
                "get-info" -> {
                    element = doHandleGetInfoAction(request)
                }
                else -> {
                    LOG.warn("Unknown action '$action'")
                    response.status = HttpServletResponse.SC_NOT_FOUND
                    return simpleView("Unknown action '$action'")
                }
            }
        } catch(e: MyRequestException) {
            element = e.element
        }
        if (element is JsonObject) {
            element.addProperty("action", action)
        }
        if (!popup) {
            response.contentType = MediaType.APPLICATION_JSON_VALUE
            val writer = JsonWriter(OutputStreamWriter(response.outputStream))
            Gson().toJson(element, writer)
            writer.flush()
            return null
        } else {
            if (element is JsonObject) {
                val url = element.getAsJsonPrimitive("redirect")?.asString
                if (url != null) {
                    return redirectTo(url, response)
                }
            }
        }
        return SimpleView.createTextView("Unrecognized request: " + WebUtil.getRequestDump(request) + ", action result: " + element.toString())
    }