fun request()

in src/main/kotlin/org/jetbrains/teamcity/impl/RestApiFacade.kt [70:103]


    fun request(method: String, user: SUser, contentType: String, path: String, query: String, requestAttrs: Map<String, Any>): String? {
        try {
            return mySecurityContext.runAs<String>(user) {
                val controller = myRestController ?: return@runAs null

                val request = myFakeHttpRequestsFactory.get(path, query)
                request.setHeader("Accept", contentType)
                request.method = method

                val response = FakeHttpServletResponse()
                request.setAttribute("INTERNAL_REQUEST", true)
                SessionUser.setUser(request, user)

                requestAttrs.forEach(request::setAttribute)

                try {
                    controller.handleRequestInternal(request, response)
                } catch (e: Exception) {
                    throw InternalRestApiCallException(400, e)
                }

                if (response.status >= 400) {
                    Loggers.SERVER.warn("Unexpected response while executing internal Rest API request:" + path + "?" + query + ", response: " + response.returnedContent)
                    throw InternalRestApiCallException(response.status, response.returnedContent)
                }

                response.returnedContent
            }
        } catch (e: InternalRestApiCallException) {
            throw e
        } catch (throwable: Throwable) {
            throw InternalRestApiCallException(400, throwable)
        }
    }