in integrations/github/src/main/kotlin/io/klibs/integration/github/GitHubIntegrationKohsukeLibrary.kt [136:183]
override fun getReadmeWithModifiedSinceCheck(
repositoryId: Long,
modifiedSince: Instant
): ReadmeFetchResult {
readmeRequestCounter.increment()
val sample = Timer.start(meterRegistry)
try {
val url = "$GITHUB_API_URL/repositories/$repositoryId/readme"
val ifModifiedSince = ZonedDateTime.ofInstant(modifiedSince, ZoneOffset.UTC)
.format(DateTimeFormatter.RFC_1123_DATE_TIME)
val requestBuilder = Request.Builder()
.url(url)
.get()
.addHeader("Accept", "application/vnd.github.raw")
.addHeader("If-Modified-Since", ifModifiedSince)
gitHubIntegrationProperties.personalAccessToken?.takeIf { it.isNotBlank() }?.let { token ->
requestBuilder.addHeader("Authorization", "Bearer $token")
}
okHttpClient.newCall(requestBuilder.build()).execute().use { response ->
return when (response.code) {
200 -> {
val body = response.body?.string() ?: ""
ReadmeFetchResult.Content(body)
}
304 -> {
logger.debug("README of {} content not modified since {}.", repositoryId, modifiedSince)
ReadmeFetchResult.NotModified
}
404 -> {
logger.debug("README of {} not found.", repositoryId)
ReadmeFetchResult.NotFound
}
else -> {
logger.error("ERROR: ${response.code} from GitHub API at $url.")
ReadmeFetchResult.Error(status = response.code)
}
}
}
} finally {
sample.stop(meterRegistry.timer("klibs.github.request.time"))
lastSuccessfulRequestTime.set(Instant.now())
}
}