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)
}
}