Skip to content

Commit

Permalink
Remove Input
Browse files Browse the repository at this point in the history
  • Loading branch information
nickelsen committed Sep 30, 2024
1 parent 09810fb commit 11a936f
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 53 deletions.
14 changes: 8 additions & 6 deletions src/commonMain/kotlin/com/monta/slack/notifier/SlackClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ import com.monta.slack.notifier.model.JobStatus
import com.monta.slack.notifier.model.JobType
import com.monta.slack.notifier.model.SlackBlock
import com.monta.slack.notifier.model.SlackMessage
import com.monta.slack.notifier.service.Input
import com.monta.slack.notifier.util.buildTitle
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

class SlackClient(
private val input: Input,
private val serviceName: String?,
private val serviceEmoji: String?,
private val slackChannelId: String,
private val appendAttachments: Boolean,
private val slackHttpClient: SlackHttpClient,
) {
suspend fun create(
Expand Down Expand Up @@ -119,7 +121,7 @@ class SlackClient(
messageId: String? = null,
previousAttachments: List<SlackMessage.Attachment>? = null,
): SlackMessage {
val attachments = if (input.appendAttachments) {
val attachments = if (appendAttachments) {
previousAttachments.orEmpty() + SlackMessage.Attachment(
color = jobStatus.color,
fields = listOf(
Expand Down Expand Up @@ -156,9 +158,9 @@ class SlackClient(

return generateSlackMessageFromEvent(
githubEvent = githubEvent,
serviceName = input.serviceName,
serviceEmoji = input.serviceEmoji,
slackChannelId = input.slackChannelId,
serviceName = serviceName,
serviceEmoji = serviceEmoji,
slackChannelId = slackChannelId,
messageId = messageId,
attachments = attachments
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@ package com.monta.slack.notifier
import com.monta.slack.notifier.SlackClient.MessageResponse
import com.monta.slack.notifier.SlackClient.Response
import com.monta.slack.notifier.model.SlackMessage
import com.monta.slack.notifier.service.Input
import com.monta.slack.notifier.util.JsonUtil
import com.monta.slack.notifier.util.client
import io.ktor.client.HttpClient
import io.ktor.client.request.get
import io.ktor.client.request.header
import io.ktor.client.request.post
Expand All @@ -17,17 +15,18 @@ import io.ktor.http.*
import io.ktor.utils.io.charsets.*

Check warning on line 15 in src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt#L15 <detekt.NoWildcardImports>

Wildcard import
Raw output
/github/workspace/src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt:15:1: warning: Wildcard import (detekt.NoWildcardImports)

Check warning on line 15 in src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt#L15 <detekt.WildcardImport>

io.ktor.utils.io.charsets.* is a wildcard import. Replace it with fully qualified imports.
Raw output
/github/workspace/src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt:15:1: warning: io.ktor.utils.io.charsets.* is a wildcard import. Replace it with fully qualified imports. (detekt.WildcardImport)

open class SlackHttpClient(
private val input: Input,
private val slackToken: String,
private val slackChannelId: String,
) {

open suspend fun getSlackMessageById(
messageId: String,
): MessageResponse? {
val response = client.get {
header("Authorization", "Bearer ${input.slackToken}")
header("Authorization", "Bearer ${slackToken}")

Check warning on line 26 in src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt#L26 <detekt.StringTemplate>

Redundant curly braces
Raw output
/github/workspace/src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt:26:40: warning: Redundant curly braces (detekt.StringTemplate)
url {
url("https://slack.com/api/conversations.history")
parameters.append("channel", input.slackChannelId)
parameters.append("channel", slackChannelId)
parameters.append("oldest", messageId)
parameters.append("inclusive", "true")
parameters.append("limit", "1")
Expand All @@ -47,7 +46,7 @@ open class SlackHttpClient(

open suspend fun makeSlackRequest(url: String, message: SlackMessage): Response? {
val response = client.post(url) {
header("Authorization", "Bearer ${input.slackToken}")
header("Authorization", "Bearer ${slackToken}")

Check warning on line 49 in src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt

View workflow job for this annotation

GitHub Actions / detekt

[detekt] src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt#L49 <detekt.StringTemplate>

Redundant curly braces
Raw output
/github/workspace/src/commonMain/kotlin/com/monta/slack/notifier/SlackHttpClient.kt:49:40: warning: Redundant curly braces (detekt.StringTemplate)
contentType(ContentType.Application.Json.withParameter("charset", Charsets.UTF_8.name))
setBody(message)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ import com.monta.slack.notifier.model.GithubEvent
import com.monta.slack.notifier.model.JobStatus
import com.monta.slack.notifier.model.JobType
import com.monta.slack.notifier.model.serializers.BaseGithubContext
import com.monta.slack.notifier.service.Input
import com.monta.slack.notifier.service.PublishSlackService
import com.monta.slack.notifier.util.client
import com.monta.slack.notifier.util.populateEventFromJson
import com.monta.slack.notifier.util.readStringFromFile
import kotlinx.coroutines.runBlocking
Expand Down Expand Up @@ -84,16 +82,12 @@ class PublishSlackCommand : CliktCommand() {
override fun run() {
runBlocking {
val githubEvent = getGithubEvent()
val input = Input(
PublishSlackService(
serviceName = serviceName.valueOrNull(),
serviceEmoji = serviceEmoji.valueOrNull(),
slackToken = slackToken,
slackChannelId = slackChannelId,
appendAttachments = appendStatusUpdates.toBoolean()
)
PublishSlackService(
input = input,
slackHttpClient = SlackHttpClient(input)
appendAttachments = appendStatusUpdates.toBoolean(),
slackHttpClient = SlackHttpClient(slackToken, slackChannelId)
).publish(
githubEvent = githubEvent,
jobType = JobType.fromString(jobType),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,18 @@ import com.monta.slack.notifier.model.JobStatus
import com.monta.slack.notifier.model.JobType
import com.monta.slack.notifier.util.writeToOutput

data class Input(
val serviceName: String?,
val serviceEmoji: String?,
val slackToken: String,
val slackChannelId: String,
val appendAttachments: Boolean = false,
)

class PublishSlackService(
input: Input,
slackHttpClient: SlackHttpClient,
private val serviceName: String?,
private val serviceEmoji: String?,
private val slackChannelId: String,
private val appendAttachments: Boolean = false,
private val slackHttpClient: SlackHttpClient,
) {
private val slackClient = SlackClient(
input = input,
serviceName = serviceName,
serviceEmoji = serviceEmoji,
slackChannelId = slackChannelId,
appendAttachments = appendAttachments,
slackHttpClient = slackHttpClient
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import io.kotest.matchers.shouldBe
import kotlinx.coroutines.test.runTest
import kotlin.test.Test

class TestSlackHttpClient(input: Input) : SlackHttpClient(input) {
class TestSlackHttpClient(slackToken: String, slackChannelId: String) : SlackHttpClient(slackToken, slackChannelId) {

val sentMessages = mutableListOf<SlackMessage>()

Expand All @@ -34,16 +34,12 @@ class TestSlackHttpClient(input: Input) : SlackHttpClient(input) {
class PublishSlackServiceTest {
@Test
fun test_replacing_attachments() {
val input = Input(
val testSlackHttpClient = TestSlackHttpClient("token", "#monta")
val service = PublishSlackService(
serviceName = "gineau pig",
serviceEmoji = "🐷",
slackToken = "token",
slackChannelId = "#anni-test",
appendAttachments = false
)
val testSlackHttpClient = TestSlackHttpClient(input)
val service = PublishSlackService(
input = input,
slackChannelId = "#monta",
appendAttachments = false,
testSlackHttpClient
)
runTest {
Expand All @@ -53,7 +49,7 @@ class PublishSlackServiceTest {
"repository",
"master",
"1",
"nickelsen",
"monta",
"a1b2c3d4",
"message",
"workflow",
Expand All @@ -73,7 +69,7 @@ class PublishSlackServiceTest {
"repository",
"master",
"1",
"nickelsen",
"monta",
"a1b2c3d4",
"message",
"workflow",
Expand All @@ -95,16 +91,12 @@ class PublishSlackServiceTest {

@Test
fun test_appending_attachments() {
val input = Input(
val testSlackHttpClient = TestSlackHttpClient("token", "#monta")
val service = PublishSlackService(
serviceName = "gineau pig",
serviceEmoji = "🐷",
slackToken = "token",
slackChannelId = "#anni-test",
appendAttachments = true
)
val testSlackHttpClient = TestSlackHttpClient(input)
val service = PublishSlackService(
input = input,
slackChannelId = "#monta",
appendAttachments = true,
testSlackHttpClient
)
runTest {
Expand All @@ -114,7 +106,7 @@ class PublishSlackServiceTest {
"repository",
"master",
"1",
"nickelsen",
"monta",
"a1b2c3d4",
"message",
"workflow",
Expand All @@ -134,7 +126,7 @@ class PublishSlackServiceTest {
"repository",
"master",
"1",
"nickelsen",
"monta",
"a1b2c3d4",
"message",
"workflow",
Expand Down

0 comments on commit 11a936f

Please sign in to comment.