protected suspend fun fetch()

in space-slack-sync/src/main/kotlin/org/jetbrains/spaceSlackSync/slack/BaseSlackClient.kt [32:47]


    protected suspend fun <T : SlackApiTextResponse> fetch(action: String, handler: suspend (accessToken: String) -> T?): T? {
        return tokens?.let {
            try {
                handler(it.accessToken).let { response: T? ->
                    if (response != null && !response.isOk) {
                        handleSlackError(action, response.error, handler)
                    } else {
                        response
                    }
                }
            } catch (ex: SlackApiException) {
                log.error("Failure fetching data from Slack", ex)
                handleSlackError(action, ex.error.error, handler)
            }
        }
    }