mirror of https://github.com/usbharu/Hideout.git
feat: ActivityPubのusersのルーティングを追加
This commit is contained in:
parent
f02ca9e5b0
commit
469b886caf
|
@ -73,6 +73,10 @@ dependencies {
|
||||||
testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
|
testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
|
||||||
|
|
||||||
implementation("org.drewcarlson:kjob-core:0.6.0")
|
implementation("org.drewcarlson:kjob-core:0.6.0")
|
||||||
|
testImplementation("io.ktor:ktor-server-test-host-jvm:2.2.4")
|
||||||
|
|
||||||
|
testImplementation("org.slf4j:slf4j-simple:2.0.7")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
jib {
|
jib {
|
||||||
|
|
|
@ -11,9 +11,6 @@ import io.ktor.server.routing.*
|
||||||
fun Routing.usersAP(activityPubService: ActivityPubService){
|
fun Routing.usersAP(activityPubService: ActivityPubService){
|
||||||
route("/users/{name}"){
|
route("/users/{name}"){
|
||||||
createChild(ContentTypeRouteSelector(ContentType.Application.Activity)).handle {
|
createChild(ContentTypeRouteSelector(ContentType.Application.Activity)).handle {
|
||||||
val json = call.receiveText()
|
|
||||||
val activityTypes = activityPubService.parseActivity(json)
|
|
||||||
activityPubService.processActivity(json,activityTypes)
|
|
||||||
call.respond(HttpStatusCode.NotImplemented)
|
call.respond(HttpStatusCode.NotImplemented)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,10 +18,10 @@ fun Routing.usersAP(activityPubService: ActivityPubService){
|
||||||
|
|
||||||
class ContentTypeRouteSelector(private val contentType: ContentType) : RouteSelector() {
|
class ContentTypeRouteSelector(private val contentType: ContentType) : RouteSelector() {
|
||||||
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation {
|
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation {
|
||||||
return if (context.call.request.contentType() == contentType) {
|
return if (ContentType.parse(context.call.request.accept() ?: return RouteSelectorEvaluation.FailedParameter) == contentType) {
|
||||||
RouteSelectorEvaluation.Constant
|
RouteSelectorEvaluation.Constant
|
||||||
} else {
|
} else {
|
||||||
RouteSelectorEvaluation.Failed
|
RouteSelectorEvaluation.FailedParameter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package dev.usbharu.hideout
|
||||||
|
|
||||||
|
import io.ktor.server.application.*
|
||||||
|
|
||||||
|
fun Application.empty(){
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package dev.usbharu.hideout.routing.activitypub
|
||||||
|
|
||||||
|
import dev.usbharu.hideout.plugins.configureRouting
|
||||||
|
import dev.usbharu.hideout.service.activitypub.ActivityPubService
|
||||||
|
import dev.usbharu.hideout.service.activitypub.ActivityType
|
||||||
|
import dev.usbharu.hideout.service.signature.HttpSignatureVerifyService
|
||||||
|
import dev.usbharu.hideout.util.HttpUtil.Activity
|
||||||
|
import io.ktor.client.request.*
|
||||||
|
import io.ktor.http.*
|
||||||
|
import io.ktor.server.config.*
|
||||||
|
import io.ktor.server.testing.*
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
|
||||||
|
|
||||||
|
class UsersAPTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testHandleUsersName() = testApplication {
|
||||||
|
environment {
|
||||||
|
config = ApplicationConfig("empty.conf")
|
||||||
|
}
|
||||||
|
application {
|
||||||
|
configureRouting(object : HttpSignatureVerifyService {
|
||||||
|
override fun verify(headers: Headers): Boolean {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}, object : ActivityPubService {
|
||||||
|
override fun parseActivity(json: String): ActivityType {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun processActivity(json: String, type: ActivityType) {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
client.get("/users/test"){
|
||||||
|
accept(ContentType.Application.Activity)
|
||||||
|
}.let {
|
||||||
|
assertEquals(HttpStatusCode.NotImplemented, it.status)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
ktor {
|
||||||
|
development = true
|
||||||
|
deployment {
|
||||||
|
port = 8080
|
||||||
|
port = ${?PORT}
|
||||||
|
watch = [classes, resources]
|
||||||
|
}
|
||||||
|
application {
|
||||||
|
modules = [dev.usbharu.hideout.EmptyKt.empty]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hideout {
|
||||||
|
hostname = "https://localhost:8080"
|
||||||
|
hostname = ${?HOSTNAME}
|
||||||
|
database {
|
||||||
|
url = "jdbc:h2:./test;MODE=POSTGRESQL"
|
||||||
|
driver = "org.h2.Driver"
|
||||||
|
username = ""
|
||||||
|
password = ""
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue