in google-storage-server/src/main/kotlin/jetbrains/buildServer/serverSide/artifacts/google/web/GoogleSignedUrlController.kt [39:84]
override fun doHandle(request: HttpServletRequest, response: HttpServletResponse): ModelAndView? {
if (!isPost(request)) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST)
return null
}
val runningBuild = getRunningBuild(request)
if (runningBuild == null) {
LOG.debug("Failed to provide signed urls for request $request. Can't resolve running build.")
response.sendError(HttpServletResponse.SC_BAD_REQUEST)
return null
}
val parameters = storageSettingsProvider.getStorageSettings(runningBuild)
val blobPaths = GoogleSignedUrlHelper.readBlobPaths(request.reader.readText())
if (blobPaths.isEmpty()) {
LOG.debug("Failed to provide signed urls for request $request. Blob paths collection is empty.")
response.sendError(HttpServletResponse.SC_BAD_REQUEST)
return null
}
try {
val data = blobPaths.entries.associate {
val params = hashMapOf("contentType" to it.value)
it.key to URL(signedUrlProvider.getSignedUrl(HttpMethod.POST, it.key, parameters + params).first)
}
response.writer.append(GoogleSignedUrlHelper.writeSignedUrlMapping(data))
} catch (e: IOException) {
LOG.infoAndDebugDetails(
"Failed to resolve signed upload urls for artifacts of build " + runningBuild.buildId,
e
)
response.status = HttpServletResponse.SC_BAD_GATEWAY
response.writer.append(e.message)
} catch (e: Exception) {
LOG.warnAndDebugDetails(
"Unexpected error while resolving signed upload urls for artifacts of build " + runningBuild.buildId,
e
)
response.status = HttpServletResponse.SC_BAD_GATEWAY
response.writer.append(e.message)
}
return null
}