mirror of https://github.com/usbharu/Hideout.git
feat: mastodon 互換APIを追加
This commit is contained in:
parent
7665286270
commit
021f6b0d45
|
@ -18,6 +18,10 @@ package dev.usbharu.hideout.mastodon.interfaces.api
|
||||||
|
|
||||||
import dev.usbharu.hideout.core.application.post.RegisterLocalPost
|
import dev.usbharu.hideout.core.application.post.RegisterLocalPost
|
||||||
import dev.usbharu.hideout.core.application.post.RegisterLocalPostApplicationService
|
import dev.usbharu.hideout.core.application.post.RegisterLocalPostApplicationService
|
||||||
|
import dev.usbharu.hideout.core.application.reaction.CreateReaction
|
||||||
|
import dev.usbharu.hideout.core.application.reaction.RemoveReaction
|
||||||
|
import dev.usbharu.hideout.core.application.reaction.UserCreateReactionApplicationService
|
||||||
|
import dev.usbharu.hideout.core.application.reaction.UserRemoveReactionApplicationService
|
||||||
import dev.usbharu.hideout.core.domain.model.post.Visibility
|
import dev.usbharu.hideout.core.domain.model.post.Visibility
|
||||||
import dev.usbharu.hideout.core.infrastructure.springframework.oauth2.SpringSecurityOauth2PrincipalContextHolder
|
import dev.usbharu.hideout.core.infrastructure.springframework.oauth2.SpringSecurityOauth2PrincipalContextHolder
|
||||||
import dev.usbharu.hideout.mastodon.application.status.GetStatus
|
import dev.usbharu.hideout.mastodon.application.status.GetStatus
|
||||||
|
@ -32,7 +36,9 @@ import org.springframework.stereotype.Controller
|
||||||
class SpringStatusApi(
|
class SpringStatusApi(
|
||||||
private val registerLocalPostApplicationService: RegisterLocalPostApplicationService,
|
private val registerLocalPostApplicationService: RegisterLocalPostApplicationService,
|
||||||
private val getStatusApplicationService: GetStatusApplicationService,
|
private val getStatusApplicationService: GetStatusApplicationService,
|
||||||
private val principalContextHolder: SpringSecurityOauth2PrincipalContextHolder
|
private val principalContextHolder: SpringSecurityOauth2PrincipalContextHolder,
|
||||||
|
private val userCreateReactionApplicationService: UserCreateReactionApplicationService,
|
||||||
|
private val userRemoveReactionApplicationService: UserRemoveReactionApplicationService
|
||||||
) : StatusApi {
|
) : StatusApi {
|
||||||
override suspend fun apiV1StatusesIdEmojiReactionsEmojiDelete(id: String, emoji: String): ResponseEntity<Status> =
|
override suspend fun apiV1StatusesIdEmojiReactionsEmojiDelete(id: String, emoji: String): ResponseEntity<Status> =
|
||||||
super.apiV1StatusesIdEmojiReactionsEmojiDelete(id, emoji)
|
super.apiV1StatusesIdEmojiReactionsEmojiDelete(id, emoji)
|
||||||
|
@ -49,6 +55,20 @@ class SpringStatusApi(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun apiV1StatusesIdFavouritePost(id: String): ResponseEntity<Status> {
|
||||||
|
val principal = principalContextHolder.getPrincipal()
|
||||||
|
|
||||||
|
userCreateReactionApplicationService.execute(CreateReaction(postId = id.toLong(), null, "❤"), principal)
|
||||||
|
return ResponseEntity.ok(getStatusApplicationService.execute(GetStatus(id), principal))
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun apiV1StatusesIdUnfavouritePost(id: String): ResponseEntity<Status> {
|
||||||
|
val principal = principalContextHolder.getPrincipal()
|
||||||
|
|
||||||
|
userRemoveReactionApplicationService.execute(RemoveReaction(postId = id.toLong(), null, "❤"), principal)
|
||||||
|
return ResponseEntity.ok(getStatusApplicationService.execute(GetStatus(id), principal))
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun apiV1StatusesPost(statusesRequest: StatusesRequest): ResponseEntity<Status> {
|
override suspend fun apiV1StatusesPost(statusesRequest: StatusesRequest): ResponseEntity<Status> {
|
||||||
val principal = principalContextHolder.getPrincipal()
|
val principal = principalContextHolder.getPrincipal()
|
||||||
val execute = registerLocalPostApplicationService.execute(
|
val execute = registerLocalPostApplicationService.execute(
|
||||||
|
|
|
@ -177,6 +177,48 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/Status"
|
$ref: "#/components/schemas/Status"
|
||||||
|
|
||||||
|
/api/v1/statuses/{id}/favourite:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- status
|
||||||
|
security:
|
||||||
|
- OAuth2:
|
||||||
|
- "write:favourites"
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: 成功
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Status"
|
||||||
|
|
||||||
|
/api/v1/statuses/{id}/unfavourite:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- status
|
||||||
|
security:
|
||||||
|
- OAuth2:
|
||||||
|
- "write:favourites"
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: 成功
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/Status"
|
||||||
|
|
||||||
/api/v1/statuses/{id}/emoji_reactions/{emoji}:
|
/api/v1/statuses/{id}/emoji_reactions/{emoji}:
|
||||||
put:
|
put:
|
||||||
tags:
|
tags:
|
||||||
|
|
Loading…
Reference in New Issue