protected suspend fun fetch()

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