Skip to content

Commit 42b418a

Browse files
committed
slack-melding ved ordrefeilmelding
1 parent ba7dc65 commit 42b418a

File tree

7 files changed

+76
-57
lines changed

7 files changed

+76
-57
lines changed

build.gradle.kts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ repositories {
1414

1515
dependencies {
1616
implementation("com.natpryce:konfig:1.6.10.0")
17-
implementation("org.influxdb:influxdb-java:2.22")
17+
implementation("org.influxdb:influxdb-java:2.23")
1818
implementation("com.github.navikt:rapids-and-rivers:2022110411121667556720.8a951a765583") {
1919
exclude(group = "ch.qos.logback")
2020
}
@@ -30,15 +30,18 @@ dependencies {
3030
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jacksonVersion")
3131

3232
// Ktor
33-
val ktorVersion = "2.1.3"
34-
implementation("io.ktor:ktor-server-auth:$ktorVersion")
35-
implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion")
36-
implementation("io.ktor:ktor-server-call-logging:$ktorVersion")
37-
implementation("io.ktor:ktor-serialization-jackson:$ktorVersion")
33+
fun ktor(name: String) = "io.ktor:ktor-$name:2.1.3"
34+
implementation(ktor("serialization-jackson"))
35+
implementation(ktor("server-auth"))
36+
implementation(ktor("server-content-negotiation"))
37+
implementation(ktor("server-call-logging"))
38+
implementation(ktor("client-core"))
39+
implementation(ktor("client-cio"))
40+
implementation(ktor("client-content-negotiation"))
3841

3942
// Testing
4043
testImplementation(kotlin("test"))
41-
testImplementation("io.ktor:ktor-server-test-host:$ktorVersion")
44+
testImplementation(ktor("server-test-host"))
4245
testImplementation("io.mockk:mockk:1.13.2")
4346
}
4447

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package no.nav.hjelpemidler
2+
3+
import io.ktor.client.HttpClient
4+
import io.ktor.client.call.body
5+
import io.ktor.client.engine.cio.CIO
6+
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
7+
import io.ktor.client.request.post
8+
import io.ktor.client.request.setBody
9+
import io.ktor.http.ContentType
10+
import io.ktor.http.contentType
11+
import io.ktor.serialization.jackson.jackson
12+
import kotlinx.coroutines.Dispatchers
13+
import kotlinx.coroutines.runBlocking
14+
import mu.KotlinLogging
15+
import no.nav.hjelpemidler.configuration.Configuration
16+
17+
object Slack {
18+
private val log = KotlinLogging.logger {}
19+
private val client = HttpClient(CIO) {
20+
install(ContentNegotiation) {
21+
jackson()
22+
}
23+
}
24+
25+
fun post(url: String = Configuration.application["SLACK_HOOK"]!!, text: String, channel: String) =
26+
runBlocking(Dispatchers.IO) {
27+
val response = client
28+
.post(url) {
29+
contentType(ContentType.Application.Json)
30+
setBody(
31+
mapOf(
32+
"text" to text,
33+
"channel" to channel,
34+
"username" to "hm-oebs-listener",
35+
"icon_emoji" to ":this-is-fine-fire:"
36+
)
37+
)
38+
}
39+
log.info(response.body<String>())
40+
}
41+
}

src/main/kotlin/no/nav/hjelpemidler/api/HotSak.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
22
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
33
import mu.KotlinLogging
44
import no.nav.hjelpemidler.Context
5+
import no.nav.hjelpemidler.Slack
56
import no.nav.hjelpemidler.configuration.Configuration
67
import no.nav.hjelpemidler.model.OrdrelinjeMessage
78
import no.nav.hjelpemidler.model.OrdrelinjeOebs
89
import no.nav.hjelpemidler.model.toHotsakOrdrelinje
9-
import no.nav.hjelpemidler.slack.PostToSlack
1010
import java.time.LocalDateTime
1111
import java.util.UUID
1212

@@ -15,17 +15,15 @@ private val sikkerlogg = KotlinLogging.logger("tjenestekall")
1515
private val mapperJson = jacksonObjectMapper().registerModule(JavaTimeModule())
1616

1717
fun parseHotsakOrdrelinje(context: Context, ordrelinje: OrdrelinjeOebs) {
18-
if (ordrelinje.hotSakSaksnummer == null || ordrelinje.hotSakSaksnummer.isBlank()) {
18+
if (ordrelinje.hotSakSaksnummer.isNullOrBlank()) {
1919
logg.warn("Melding frå OEBS manglar HOTSAK saksnummer")
2020
ordrelinje.fnrBruker = "MASKERT"
2121
val message = mapperJson.writerWithDefaultPrettyPrinter().writeValueAsString(ordrelinje)
2222
sikkerlogg.warn("Vedtak HOTSAK-melding med manglende informasjon: $message")
2323
context.metrics.manglendeFeltForVedtakHOTSAK()
24-
25-
PostToSlack.post(
26-
Configuration.application["SLACK_HOOK"]!!,
27-
"*${Configuration.profile}* - Manglende felt i Hotsak Oebs ordrelinje: ```$message```",
28-
"#digihot-hotsak-varslinger-dev"
24+
Slack.post(
25+
text = "*${Configuration.profile}* - Manglende felt i Hotsak Oebs ordrelinje: ```$message```",
26+
channel = "#digihot-hotsak-varslinger-dev"
2927
)
3028
throw RuntimeException("Ugyldig Hotsak ordrelinje")
3129
}

src/main/kotlin/no/nav/hjelpemidler/api/InfotrygdSak.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
22
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
33
import mu.KotlinLogging
44
import no.nav.hjelpemidler.Context
5+
import no.nav.hjelpemidler.Slack
56
import no.nav.hjelpemidler.configuration.Configuration
67
import no.nav.hjelpemidler.model.OrdrelinjeMessage
78
import no.nav.hjelpemidler.model.OrdrelinjeOebs
89
import no.nav.hjelpemidler.model.toOrdrelinje
9-
import no.nav.hjelpemidler.slack.PostToSlack
1010
import java.time.LocalDateTime
1111
import java.util.UUID
1212

@@ -21,11 +21,9 @@ fun parseInfotrygdOrdrelinje(context: Context, ordrelinje: OrdrelinjeOebs) {
2121
val message = mapperJson.writerWithDefaultPrettyPrinter().writeValueAsString(ordrelinje)
2222
sikkerlogg.warn("Vedtak Infotrygd-melding med manglande informasjon: $message")
2323
context.metrics.manglendeFeltForVedtakInfotrygd()
24-
25-
PostToSlack.post(
26-
Configuration.application["SLACK_HOOK"]!!,
27-
"*${Configuration.profile}* - Manglande felt i Vedtak Infotrygd-melding: ```$message```",
28-
"#digihot-brukers-hjelpemiddelside-dev"
24+
Slack.post(
25+
text = "*${Configuration.profile}* - Manglande felt i Vedtak Infotrygd-melding: ```$message```",
26+
channel = "#digihot-brukers-hjelpemiddelside-dev"
2927
)
3028
throw RuntimeException("Ugyldig Infotrygd ordelinje")
3129
}

src/main/kotlin/no/nav/hjelpemidler/api/OrdreAPI.kt

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import io.ktor.server.routing.Route
77
import io.ktor.server.routing.post
88
import mu.KotlinLogging
99
import no.nav.hjelpemidler.Context
10+
import no.nav.hjelpemidler.Slack
11+
import no.nav.hjelpemidler.configuration.Configuration
1012
import java.time.LocalDateTime
1113
import java.util.UUID
1214

@@ -16,7 +18,7 @@ fun Route.ordreAPI(context: Context) {
1618
post("/ordrekvittering") {
1719
val kvittering = call.receive<Ordrekvittering>()
1820
log.info {
19-
"Mottok ordrekvittering, id=${kvittering.id}, saksnummer=${kvittering.saksnummer}, ordrenummer: ${kvittering.ordrenummer}"
21+
"Mottok ordrekvittering, $kvittering"
2022
}
2123
context.publish(
2224
kvittering.saksnummer,
@@ -27,12 +29,16 @@ fun Route.ordreAPI(context: Context) {
2729
post("/ordrefeilmelding") {
2830
val feilmelding = call.receive<Ordrefeilmelding>()
2931
log.warn {
30-
"Mottok ordrefeilmelding, id=${feilmelding.id}, saksnummer=${feilmelding.saksnummer}, feilmelding: ${feilmelding.feilmelding}"
32+
"Mottok ordrefeilmelding, $feilmelding"
3133
}
3234
context.publish(
3335
feilmelding.saksnummer,
3436
OrdrefeilmeldingMottatt(feilmelding = feilmelding)
3537
)
38+
Slack.post(
39+
text = "*${Configuration.profile}* - $feilmelding",
40+
channel = "#papaya-alerts"
41+
)
3642
call.response.status(HttpStatusCode.OK)
3743
}
3844
}
@@ -43,15 +49,21 @@ data class Ordrekvittering(
4349
val ordrenummer: String,
4450
val system: String,
4551
val status: String,
46-
)
52+
) {
53+
override fun toString(): String =
54+
"id: $id, saksnummer: $saksnummer, ordrenummer: $ordrenummer, system: $system, status: $status"
55+
}
4756

4857
data class Ordrefeilmelding(
4958
val id: String,
5059
val saksnummer: String,
5160
val feilmelding: String,
5261
val system: String,
5362
val status: String,
54-
)
63+
) {
64+
override fun toString(): String =
65+
"id: $id, saksnummer: $saksnummer, feilmelding: $feilmelding, system: $system, status: $status"
66+
}
5567

5668
data class OrdrekvitteringMottatt(
5769
val eventId: UUID = UUID.randomUUID(),

src/main/kotlin/no/nav/hjelpemidler/slack/PostToSlack.kt

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/test/kotlin/no/nav/hjelpemidler/ParsingTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.fasterxml.jackson.module.kotlin.readValue
88
import no.nav.hjelpemidler.model.OrdrelinjeOebs
99
import no.nav.hjelpemidler.model.RåOrdrelinje
1010
import java.time.LocalDate
11-
import kotlin.math.exp
1211
import kotlin.test.Test
1312
import kotlin.test.assertEquals
1413
import kotlin.time.ExperimentalTime

0 commit comments

Comments
 (0)