@@ -8,6 +8,7 @@ import com.amazonaws.services.lambda.runtime.Context
8
8
import com.amazonaws.services.lambda.runtime.RequestHandler
9
9
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent
10
10
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
11
+ import io.github.cdimascio.dotenv.Dotenv
11
12
import kotlinx.coroutines.runBlocking
12
13
13
14
class SentryDiscordWebhookHandler (
@@ -16,24 +17,13 @@ class SentryDiscordWebhookHandler(
16
17
17
18
override fun handleRequest (input : Any , context : Context ): APIGatewayProxyResponseEvent {
18
19
val event = parseEvent(input)
19
- val fields = mutableListOf<DiscordEmbedField >().apply {
20
- listOf (" environment" , " level" , " type" , " location" , " issue_id" ).forEach { element ->
21
- if (event[element] != null ) {
22
- add(DiscordEmbedField (element, event[element] as String ))
23
- }
24
- }
20
+ val message = makeDiscordMessageBy(event)
21
+ val discordWebhook = when (event[" environment" ]) {
22
+ " prod" -> Dotenv .load()[" DISCORD_SERVER_ALERT_WEBHOOK" ]
23
+ else -> Dotenv .load()[" DISCORD_SERVER_TEST_WEBHOOK" ]
25
24
}
26
25
27
- val message = DiscordMessage .of(
28
- DiscordEmbed .error(
29
- event[" title" ] as String ,
30
- event[" message" ] as String ,
31
- event[" web_url" ] as String ,
32
- fields
33
- )
34
- )
35
-
36
- return runBlocking { discordClient.send(message) }
26
+ return runBlocking { discordClient.sendAlertServer(message, discordWebhook) }
37
27
.let {
38
28
APIGatewayProxyResponseEvent ()
39
29
.withStatusCode(200 )
@@ -49,4 +39,23 @@ class SentryDiscordWebhookHandler(
49
39
}
50
40
return data[" event" ] as Map <* , * >
51
41
}
42
+
43
+ private fun makeDiscordMessageBy (event : Map <* , * >): DiscordMessage {
44
+ val fields = mutableListOf<DiscordEmbedField >().apply {
45
+ listOf (" environment" , " level" , " type" , " location" , " issue_id" ).forEach { element ->
46
+ if (event[element] != null ) {
47
+ add(DiscordEmbedField (element, event[element] as String ))
48
+ }
49
+ }
50
+ }
51
+
52
+ return DiscordMessage .of(
53
+ DiscordEmbed .error(
54
+ event[" title" ] as String ,
55
+ event[" message" ] as String ,
56
+ event[" web_url" ] as String ,
57
+ fields
58
+ )
59
+ )
60
+ }
52
61
}
0 commit comments