fix: Acceptヘッダーの判定方法を修正

This commit is contained in:
usbharu 2023-04-29 13:36:41 +09:00
parent 1f4df77f98
commit 8aab1e5907
2 changed files with 8 additions and 10 deletions

View File

@ -31,15 +31,14 @@ fun Routing.usersAP(activityPubUserService: ActivityPubUserService, userService:
} }
class ContentTypeRouteSelector(private vararg val contentType: ContentType) : RouteSelector() { class ContentTypeRouteSelector(private vararg val contentType: ContentType) : RouteSelector() {
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation { override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation {
context.call.application.log.debug("Accept: ${context.call.request.accept()}")
val requestContentType = val requestContentType =
ContentType.parse(context.call.request.accept() ?: return RouteSelectorEvaluation.FailedParameter) ContentType.parse(context.call.request.accept() ?: return RouteSelectorEvaluation.FailedParameter)
context.call.application.log.debug("Content-Type: {}", requestContentType)
return if (contentType.any { contentType -> return if (contentType.find { contentType: ContentType -> contentType.match(requestContentType) }
context.call.application.log.debug(contentType.toString()) .let { true }) {
contentType.match(requestContentType)
}) {
RouteSelectorEvaluation.Constant RouteSelectorEvaluation.Constant
} else { } else {
RouteSelectorEvaluation.FailedParameter RouteSelectorEvaluation.FailedParameter

View File

@ -22,7 +22,6 @@ import io.ktor.client.statement.*
import io.ktor.http.* import io.ktor.http.*
import io.ktor.server.config.* import io.ktor.server.config.*
import io.ktor.server.testing.* import io.ktor.server.testing.*
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.mockito.ArgumentMatchers.anyString import org.mockito.ArgumentMatchers.anyString
import org.mockito.kotlin.doReturn import org.mockito.kotlin.doReturn
@ -99,7 +98,7 @@ class UsersAPTest {
} }
@Test() @Test()
@Disabled // @Disabled
fun `ユーザのURLにAcceptヘッダーをActivityとJson-LDにしてアクセスしたときPersonが返ってくる`() = testApplication { fun `ユーザのURLにAcceptヘッダーをActivityとJson-LDにしてアクセスしたときPersonが返ってくる`() = testApplication {
environment { environment {
config = ApplicationConfig("empty.conf") config = ApplicationConfig("empty.conf")
@ -166,10 +165,10 @@ class UsersAPTest {
} }
@Test @Test
@Disabled // @Disabled
fun contentType_Test() { fun contentType_Test() {
val listOf = listOf(ContentType.Application.JsonLd, ContentType.Application.Activity) val listOf = listOf(ContentType.Application.JsonLd, ContentType.Application.Activity)
assertTrue(listOf.any { contentType -> contentType.match("application/ld+json; profile=\"\\\"https://www.w3.org/ns/activitystreams\\\",application/activity+json\"") }) assertTrue(listOf.find { contentType -> contentType.match("application/ld+json; profile=\"\\\"https://www.w3.org/ns/activitystreams\\\",application/activity+json\"") }.let { true })
assertTrue(ContentType.Application.JsonLd.match("application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"")) assertTrue(ContentType.Application.JsonLd.match("application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""))
} }
} }