in src/main/kotlin/org/jetbrains/slackUnfurls/slackUnfurlsInSpace/BaseSlackClient.kt [19:38]
protected suspend fun <T : SlackApiTextResponse> fetch(action: String, handler: suspend (String) -> T?) : T? {
return tokens
.also { if (it == null) log.warn("Ignoring $action because no Slack tokens are present") }
?.let {
try {
log.info("First attempt for $action")
handler(it.accessToken).let { response: T? ->
if (response != null && !response.isOk) {
handleSlackError(action, response.error, handler)
} else {
log.info("Success for $action")
response
}
}
} catch (ex: SlackApiException) {
log.error("Failure fetching data from Slack", ex)
handleSlackError(action, ex.error.error, handler)
}
}
}