feat: ActivityPubのTypeパーサを作成

This commit is contained in:
usbharu 2023-04-05 17:54:00 +09:00
parent 1e917e591f
commit 997fb8dce3
Signed by: usbharu
GPG Key ID: 6556747BF94EEBC8
3 changed files with 64 additions and 1 deletions

View File

@ -0,0 +1,8 @@
package dev.usbharu.hideout.exception.ap
class JsonParseException : IllegalArgumentException {
constructor() : super()
constructor(s: String?) : super(s)
constructor(message: String?, cause: Throwable?) : super(message, cause)
constructor(cause: Throwable?) : super(cause)
}

View File

@ -1,7 +1,7 @@
package dev.usbharu.hideout.service.activitypub
interface ActivityPubService {
fun parseActivity(json:String): ActivityType
fun parseActivity(json:String): List<ActivityType>
fun processActivity(json:String, type: ActivityType)
}

View File

@ -0,0 +1,55 @@
package dev.usbharu.hideout.service.activitypub
import com.fasterxml.jackson.databind.JsonNode
import dev.usbharu.hideout.config.Config
import dev.usbharu.hideout.exception.ap.JsonParseException
class ActivityPubServiceImpl : ActivityPubService {
override fun parseActivity(json: String): List<ActivityType> {
val readTree = Config.configData.objectMapper.readTree(json)
if (readTree.isObject.not()) {
throw JsonParseException("Json is not object.")
}
val type = readTree["type"]
if (type.isArray) {
return type.mapNotNull { jsonNode: JsonNode ->
ActivityType.values().filter { it.name.equals(jsonNode.toPrettyString(), true) }
}.flatten()
}
return ActivityType.values().filter { it.name.equals(type.toPrettyString(), true) }
}
override fun processActivity(json: String, type: ActivityType) {
when (type) {
ActivityType.Accept -> TODO()
ActivityType.Add -> TODO()
ActivityType.Announce -> TODO()
ActivityType.Arrive -> TODO()
ActivityType.Block -> TODO()
ActivityType.Create -> TODO()
ActivityType.Delete -> TODO()
ActivityType.Dislike -> TODO()
ActivityType.Flag -> TODO()
ActivityType.Follow -> TODO()
ActivityType.Ignore -> TODO()
ActivityType.Invite -> TODO()
ActivityType.Join -> TODO()
ActivityType.Leave -> TODO()
ActivityType.Like -> TODO()
ActivityType.Listen -> TODO()
ActivityType.Move -> TODO()
ActivityType.Offer -> TODO()
ActivityType.Question -> TODO()
ActivityType.Reject -> TODO()
ActivityType.Read -> TODO()
ActivityType.Remove -> TODO()
ActivityType.TentativeReject -> TODO()
ActivityType.TentativeAccept -> TODO()
ActivityType.Travel -> TODO()
ActivityType.Undo -> TODO()
ActivityType.Update -> TODO()
ActivityType.View -> TODO()
ActivityType.Other -> TODO()
}
}
}