Skip to content

Commit a556a84

Browse files
committed
切换到ktor
1 parent 611ffaa commit a556a84

31 files changed

+467
-246
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,10 @@ out/
3636
### VS Code ###
3737
.vscode/
3838

39-
src/main/resources/application.yaml
39+
src/main/resources/application.conf
4040

4141
logs
4242

4343
config.yaml
44+
45+
.DS_Store

build.gradle.kts

Lines changed: 34 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,56 @@
1-
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2-
import org.gradle.api.tasks.testing.logging.TestLogEvent.*
3-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1+
val ktor_version: String by project
2+
val kotlin_version: String by project
3+
val logback_version: String by project
44

55
plugins {
6-
kotlin("jvm") version "1.5.10"
76
application
8-
id("com.github.johnrengelman.shadow") version "7.0.0"
9-
kotlin("plugin.serialization") version "1.5.10"
7+
kotlin("jvm") version "1.5.31"
8+
kotlin("plugin.serialization") version "1.5.31"
109
}
1110

12-
group = "cn.edu.buaa.scs"
13-
version = "1.0.0-SNAPSHOT"
11+
group = "scs.buaa.edu.cn"
12+
version = "0.0.1"
13+
application {
14+
mainClass.set("io.ktor.server.netty.EngineMain")
15+
}
1416

1517
repositories {
1618
mavenCentral()
1719
}
1820

19-
val vertxVersion = "4.2.1"
20-
val junitJupiterVersion = "5.7.0"
21+
dependencies {
22+
implementation("io.ktor:ktor-server-core:$ktor_version")
23+
implementation("io.ktor:ktor-server-netty:$ktor_version")
2124

22-
val mainVerticleName = "cn.edu.buaa.scs.cloudapi.MainVerticle"
23-
val launcherClassName = "cn.edu.buaa.scs.cloudapi.LauncherKt"
25+
// coroutine
26+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")
27+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:1.5.2")
2428

25-
val watchForChange = "src/**/*"
26-
val doOnChange = "${projectDir}/gradlew classes"
29+
// kotlin-log
30+
implementation("io.github.microutils:kotlin-logging:2.0.11")
31+
implementation("ch.qos.logback:logback-classic:$logback_version")
2732

28-
application {
29-
mainClass.set(launcherClassName)
30-
}
33+
// auth
34+
implementation("io.ktor:ktor-auth:$ktor_version")
3135

32-
dependencies {
33-
implementation(platform("io.vertx:vertx-stack-depchain:$vertxVersion"))
34-
implementation("io.vertx:vertx-web-client")
35-
implementation("io.vertx:vertx-web")
36-
implementation("io.vertx:vertx-lang-kotlin")
37-
implementation("io.vertx:vertx-redis-client")
38-
implementation(kotlin("stdlib-jdk8"))
36+
// serialization
37+
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0")
38+
implementation("io.ktor:ktor-jackson:$ktor_version")
3939

40-
// kotlin coroutines
41-
val coroutinesVersion = "1.5.10"
42-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")
43-
// yaml
44-
implementation("com.charleskorn.kaml:kaml:0.36.0")
40+
// Redis
41+
implementation("io.lettuce:lettuce-core:6.1.5.RELEASE")
4542

4643
// database
44+
val ktorm_version = "3.4.1"
4745
implementation("com.zaxxer:HikariCP:5.0.0")
48-
implementation("org.ktorm:ktorm-core:3.4.1")
46+
implementation("org.ktorm:ktorm-core:$ktorm_version")
47+
implementation("org.ktorm:ktorm-jackson:$ktorm_version")
48+
implementation("org.ktorm:ktorm-support-mysql:$ktorm_version")
49+
implementation("org.ktorm:ktorm-support-mysql:3.4.1")
4950
implementation("mysql:mysql-connector-java:8.0.25")
5051

51-
// log
52-
implementation("io.github.microutils:kotlin-logging:1.6.22")
53-
implementation("org.slf4j:slf4j-api:1.7.25")
54-
implementation("ch.qos.logback:logback-core:1.2.6")
55-
implementation("ch.qos.logback:logback-classic:1.2.6")
5652

5753
// test
58-
testImplementation("io.vertx:vertx-junit5")
59-
testImplementation("org.junit.jupiter:junit-jupiter:$junitJupiterVersion")
60-
}
61-
62-
val compileKotlin: KotlinCompile by tasks
63-
compileKotlin.kotlinOptions.jvmTarget = "11"
64-
65-
tasks.withType<ShadowJar> {
66-
archiveClassifier.set("fat")
67-
manifest {
68-
attributes(mapOf("Main-Verticle" to mainVerticleName))
69-
}
70-
mergeServiceFiles()
71-
}
72-
73-
tasks.withType<Test> {
74-
useJUnitPlatform()
75-
testLogging {
76-
events = setOf(PASSED, SKIPPED, FAILED)
77-
}
78-
}
54+
testImplementation("io.ktor:ktor-server-tests:$ktor_version")
55+
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
56+
}

deploy.sh

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

gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
kotlin.code.style=official
1+
ktor_version=1.6.5
2+
kotlin_version=1.5.31
3+
logback_version=1.2.3
4+
kotlin.code.style=official

gradle/wrapper/gradle-wrapper.jar

333 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

gradlew

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ case "`uname`" in
7272
Darwin* )
7373
darwin=true
7474
;;
75-
MINGW* )
75+
MSYS* | MINGW* )
7676
msys=true
7777
;;
7878
NONSTOP* )

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
rootProject.name = "cloudapi"
1+
rootProject.name = "cloudapi"
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package cn.edu.buaa.scs
2+
3+
import cn.edu.buaa.scs.plugins.*
4+
import cn.edu.buaa.scs.utils.logger
5+
import com.zaxxer.hikari.HikariConfig
6+
import com.zaxxer.hikari.HikariDataSource
7+
import io.ktor.application.*
8+
import io.lettuce.core.RedisClient
9+
import io.lettuce.core.RedisURI
10+
import org.ktorm.database.Database
11+
import org.ktorm.logging.Slf4jLoggerAdapter
12+
13+
fun main(args: Array<String>): Unit =
14+
io.ktor.server.netty.EngineMain.main(args)
15+
16+
17+
@Suppress("unused")
18+
fun Application.webModule() {
19+
configureCORS()
20+
configureCallID()
21+
configureMonitoring()
22+
configureContentNegotiation()
23+
configureStatusPage()
24+
configureRouting()
25+
}
26+
27+
fun Application.getConfig(name: String, default: String = ""): String =
28+
this.environment.config.propertyOrNull(name)?.getString() ?: default
29+
30+
lateinit var authRedis: RedisClient
31+
32+
@Suppress("unused")
33+
fun Application.redisModule() {
34+
// redis for auth
35+
authRedis = RedisClient.create(
36+
RedisURI.Builder.redis(getConfig("redis.auth.host", "localhost"))
37+
.withPort(getConfig("redis.auth.port", "6379").toInt())
38+
.withPassword(getConfig("redis.auth.password", "").toCharArray())
39+
.build()
40+
)
41+
logger("auth-redis")().info { "auth redis connected" }
42+
}
43+
44+
lateinit var db: Database
45+
fun Application.dbModule() {
46+
val mainDBHost = getConfig("db.main.host", "localhost")
47+
val mainDBPort = getConfig("db.main.port", "3306")
48+
val mainDBName = getConfig("db.main.name")
49+
val mainDBUser = getConfig("db.main.username", "root")
50+
val mainDBPassword = getConfig("db.main.password")
51+
db = Database.connect(
52+
dataSource = HikariDataSource(HikariConfig().apply {
53+
jdbcUrl = "jdbc:mysql://$mainDBHost:$mainDBPort/$mainDBName"
54+
username = mainDBUser
55+
password = mainDBPassword
56+
}),
57+
logger = Slf4jLoggerAdapter(logger("mainDB")().underlyingLogger)
58+
)
59+
logger("mainDB")().info { "main database connected" }
60+
}

src/main/kotlin/cn/edu/buaa/scs/cloudapi/Base.kt

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

src/main/kotlin/cn/edu/buaa/scs/cloudapi/Extension.kt

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

src/main/kotlin/cn/edu/buaa/scs/cloudapi/Launcher.kt

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

src/main/kotlin/cn/edu/buaa/scs/cloudapi/Router.kt

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

src/main/kotlin/cn/edu/buaa/scs/cloudapi/handler/LogHandler.kt

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package cn.edu.buaa.scs.error
2+
3+
@Suppress("unused")
4+
class BadRequestException(message: String = "400") : io.ktor.features.BadRequestException(message)
5+
6+
class AuthenticationException(message: String = "401") : Exception(message)
7+
8+
class AuthorizationException(message: String = "403") : Exception(message)
9+
10+
class NotFoundException(message: String = "404") : Exception(message)

0 commit comments

Comments
 (0)