diff --git a/src/main/kotlin/com/github/djaler/evilbot/config/RestConfig.kt b/src/main/kotlin/com/github/djaler/evilbot/config/RestConfig.kt index 13672dc..15b02f0 100644 --- a/src/main/kotlin/com/github/djaler/evilbot/config/RestConfig.kt +++ b/src/main/kotlin/com/github/djaler/evilbot/config/RestConfig.kt @@ -1,12 +1,18 @@ package com.github.djaler.evilbot.config import com.fasterxml.jackson.databind.ObjectMapper -import io.ktor.client.* -import io.ktor.client.plugins.* -import io.ktor.client.plugins.contentnegotiation.* -import io.ktor.client.plugins.logging.* -import io.ktor.http.* -import io.ktor.serialization.jackson.* +import io.ktor.client.HttpClient +import io.ktor.client.plugins.HttpTimeout +import io.ktor.client.plugins.api.createClientPlugin +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.client.plugins.logging.LogLevel +import io.ktor.client.plugins.logging.Logging +import io.ktor.client.statement.bodyAsText +import io.ktor.client.statement.request +import io.ktor.http.ContentType +import io.ktor.serialization.jackson.JacksonConverter +import io.sentry.Breadcrumb +import io.sentry.Sentry import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration @@ -24,6 +30,33 @@ class RestConfig { install(Logging) { level = LogLevel.ALL } + + install(SentryPlugin) } } } + +val SentryPlugin = createClientPlugin("SentryPlugin") { + onRequest { request, content -> + Sentry.addBreadcrumb( + Breadcrumb.http( + request.url.toString(), + request.method.toString() + ).apply { + setData("content", content) + } + ) + } + + onResponse {response -> + val request = response.request + Sentry.addBreadcrumb( + Breadcrumb.http( + request.url.toString(), + request.method.toString() + ).apply { + setData("response", response.bodyAsText()) + } + ) + } +}