Skip to content

Commit

Permalink
Upgrading to Ktor 2 (#944)
Browse files Browse the repository at this point in the history
  • Loading branch information
craigatk authored Dec 17, 2022
1 parent 06c4534 commit 7b93913
Show file tree
Hide file tree
Showing 37 changed files with 119 additions and 175 deletions.
8 changes: 6 additions & 2 deletions server/server-app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,17 @@ dependencies {
implementation project(':server:persistence:object-store')

implementation "io.ktor:ktor-server-netty:$ktor_version"
implementation "io.ktor:ktor-jackson:$ktor_version"
implementation "io.ktor:ktor-server-cors:$ktor_version"
implementation "io.ktor:ktor-server-caching-headers:$ktor_version"
implementation "io.ktor:ktor-server-compression:$ktor_version"
implementation "io.ktor:ktor-server-content-negotiation:$ktor_version"
implementation "io.ktor:ktor-serialization-jackson:$ktor_version"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jacksonVersion"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion"
implementation "io.insert-koin:koin-ktor:$koin_version"
implementation "io.insert-koin:koin-logger-slf4j:$koin_version"

implementation "io.ktor:ktor-metrics-micrometer:$ktor_version"
implementation "io.ktor:ktor-server-metrics-micrometer:$ktor_version"
implementation 'io.micrometer:micrometer-registry-influx:1.10.2'

implementation "net.javacrumbs.shedlock:shedlock-provider-jdbc-template:4.42.0"
Expand Down
4 changes: 2 additions & 2 deletions server/server-app/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ktor_version=1.6.8
koin_version=3.1.6
ktor_version=2.2.1
koin_version=3.2.2

opentelemetry_version=1.13.0
33 changes: 13 additions & 20 deletions server/server-app/src/main/kotlin/projektor/Application.kt
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
package projektor

import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.PropertyNamingStrategy
import com.fasterxml.jackson.databind.PropertyNamingStrategies
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import io.ktor.application.Application
import io.ktor.application.install
import io.ktor.config.ApplicationConfig
import io.ktor.features.*
import io.ktor.http.CacheControl
import io.ktor.http.ContentType
import io.ktor.http.content.CachingOptions
import io.ktor.jackson.jackson
import io.ktor.metrics.micrometer.MicrometerMetrics
import io.ktor.request.path
import io.ktor.routing.*
import io.ktor.serialization.jackson.*
import io.ktor.server.application.*
import io.ktor.server.config.*
import io.ktor.server.metrics.micrometer.*
import io.ktor.server.plugins.cachingheaders.*
import io.ktor.server.plugins.compression.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.cors.routing.*
import io.ktor.server.routing.*
import io.micrometer.core.instrument.MeterRegistry
import org.koin.ktor.ext.Koin
import org.koin.ktor.ext.inject
import org.koin.ktor.plugin.Koin
import org.koin.logger.SLF4JLogger
import org.slf4j.event.Level
import projektor.attachment.AttachmentConfig
import projektor.attachment.AttachmentDatabaseRepository
import projektor.attachment.AttachmentRepository
Expand Down Expand Up @@ -60,7 +60,6 @@ import projektor.repository.performance.RepositoryPerformanceService
import projektor.repository.testrun.RepositoryTestRunService
import projektor.route.*
import projektor.schedule.Scheduler
import projektor.telemetry.OpenTelemetryRoute
import projektor.testcase.TestCaseService
import projektor.testrun.TestRunRepository
import projektor.testrun.TestRunService
Expand Down Expand Up @@ -111,22 +110,17 @@ fun Application.main(meterRegistry: MeterRegistry? = null) {
install(ContentNegotiation) {
jackson {
registerModule(JavaTimeModule())
propertyNamingStrategy = PropertyNamingStrategy.SNAKE_CASE
propertyNamingStrategy = PropertyNamingStrategies.SNAKE_CASE
disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
}
}
install(CallLogging) {
level = Level.INFO

filter { call -> !call.request.path().startsWith("/health") }
}
install(Koin) {
SLF4JLogger()
modules(appModule)
}
install(CachingHeaders) {
options { outgoingContent ->
options { _, outgoingContent ->
val oneDayInSeconds = 24 * 60 * 60
when (outgoingContent.contentType?.withoutParameters()) {
ContentType.Application.JavaScript -> CachingOptions(CacheControl.MaxAge(maxAgeSeconds = 7 * oneDayInSeconds))
Expand All @@ -150,7 +144,6 @@ fun Application.main(meterRegistry: MeterRegistry? = null) {
matchContentType(ContentType.Application.Json, ContentType.Application.JavaScript)
}
}
install(OpenTelemetryRoute)
install(IgnoreTrailingSlash) // Needed to treat /tests/ and /tests as the same URL

val authService: AuthService by inject()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package projektor.attachment

import io.ktor.config.ApplicationConfig
import io.ktor.server.config.ApplicationConfig
import java.math.BigDecimal

data class AttachmentConfig(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package projektor.auth

import io.ktor.config.ApplicationConfig
import io.ktor.server.config.ApplicationConfig

data class AuthConfig(val publishToken: String?) {
companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package projektor.cleanup

import io.ktor.config.ApplicationConfig
import io.ktor.server.config.ApplicationConfig

data class CleanupConfig(
val maxReportAgeDays: Int?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package projektor.database

import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import io.ktor.config.ApplicationConfig
import io.ktor.server.config.ApplicationConfig
import io.micrometer.core.instrument.MeterRegistry
import org.flywaydb.core.Flyway
import org.jooq.DSLContext
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package projektor.message

import io.ktor.config.ApplicationConfig
import io.ktor.server.config.ApplicationConfig

data class MessageConfig(val globalMessages: List<String>) {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package projektor.metrics

import io.ktor.config.ApplicationConfig
import io.ktor.server.config.ApplicationConfig

data class InfluxMetricsConfig(
val enabled: Boolean,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package projektor.notification

import io.ktor.config.*
import io.ktor.server.config.*

data class NotificationConfig(val serverBaseUrl: String?) {
companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package projektor.notification.github

import io.ktor.config.*
import io.ktor.server.config.*
import projektor.notification.github.auth.PrivateKeyEncoder

data class GitHubNotificationConfig(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package projektor.route

import io.ktor.application.call
import io.ktor.http.HttpStatusCode
import io.ktor.request.header
import io.ktor.request.receiveStream
import io.ktor.response.respond
import io.ktor.response.respondBytes
import io.ktor.routing.Route
import io.ktor.routing.get
import io.ktor.routing.post
import io.ktor.util.getOrFail
import io.ktor.server.application.call
import io.ktor.server.request.*
import io.ktor.server.request.header
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import projektor.attachment.AddAttachmentResult
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.util.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.badge.CoverageBadgeService
import projektor.server.api.PublicId

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.util.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.quality.CodeQualityReportRepository
import projektor.server.api.PublicId
import projektor.server.api.quality.CodeQualityReports
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.request.*
import io.ktor.server.application.*
import io.ktor.server.request.*
import projektor.util.ungzip

object CompressionRequest {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package projektor.route

import io.ktor.application.call
import io.ktor.http.HttpStatusCode
import io.ktor.response.respond
import io.ktor.routing.Route
import io.ktor.routing.get
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import projektor.cleanup.CleanupConfig
import projektor.server.api.config.ServerCleanupConfig
import projektor.server.api.config.ServerConfig
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package projektor.route

import io.ktor.application.call
import io.ktor.http.HttpStatusCode
import io.ktor.request.header
import io.ktor.response.respond
import io.ktor.routing.Route
import io.ktor.routing.get
import io.ktor.routing.post
import io.ktor.util.getOrFail
import io.ktor.server.application.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.getOrFail
import projektor.auth.AuthConfig
import projektor.auth.AuthService
import projektor.coverage.CoverageService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import projektor.error.ProcessingFailureService

fun Route.failure(processingFailureService: ProcessingFailureService) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package projektor.route

import io.ktor.application.call
import io.ktor.http.HttpStatusCode
import io.ktor.response.respond
import io.ktor.routing.Route
import io.ktor.routing.get
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*

fun Route.health() {
get("/health") {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package projektor.route

import io.ktor.application.call
import io.ktor.http.HttpStatusCode
import io.ktor.response.respond
import io.ktor.routing.Route
import io.ktor.routing.get
import io.ktor.util.getOrFail
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.message.MessageService
import projektor.server.api.PublicId

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.util.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.metadata.TestRunMetadataService
import projektor.server.api.PublicId
import projektor.versioncontrol.VersionControlConfig
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import io.ktor.util.*
import projektor.organization.coverage.OrganizationCoverageService

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.util.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.performance.PerformanceResultsService
import projektor.server.api.PublicId
import projektor.server.api.performance.PerformanceResults
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.util.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.compare.PreviousTestRunService
import projektor.server.api.PublicId

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.util.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.compare.PreviousTestRunService
import projektor.coverage.CoverageService
import projektor.repository.coverage.RepositoryCoverageService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package projektor.route

import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.util.*
import io.ktor.server.application.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.server.util.*
import projektor.repository.performance.RepositoryPerformanceService

fun Route.repositoryPerformance(repositoryPerformanceService: RepositoryPerformanceService) {
Expand Down
Loading

0 comments on commit 7b93913

Please sign in to comment.