Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions core/src/main/kotlin/dev/usbharu/multim/api/ApiClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ abstract class ApiClient(var baseUrl: String, val client: HttpClient) {
} catch (e: ServerResponseException) {
return Err(HttpClientServerError(e))
}
Logger.warn(post.bodyAsText())
return runCatching<R> { post.body() }.fold(
onSuccess = { Ok(it) },
onFailure = {
Expand All @@ -81,15 +82,18 @@ abstract class ApiClient(var baseUrl: String, val client: HttpClient) {
baseUrl: String = this.baseUrl
): Result<Unit, ThrowableError> {
Logger.trace("Api Client", "Post without response $baseUrl$path")
return runCatching<Unit> {
try {
client.post(baseUrl + path) {
contentType(ContentType.Application.Json)
setBody(content)
}
}.fold(onSuccess = Ok(), onFailure = {
Logger.warn("Api Client", "FAILURE Post withou response $baseUrl$path")
Err(ThrowableError(it))
})
} catch (e: ClientRequestException) {
return Err(HttpClientClientError(e))
} catch (e: ServerResponseException) {
return Err(HttpClientServerError(e))
}
return Ok(Unit)

}

suspend fun get(
Expand Down
10 changes: 6 additions & 4 deletions core/src/main/kotlin/dev/usbharu/multim/error/MultiMError.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ open class MultiMError(
val _throwable: Throwable? = null,
val errorType: ErrorType
) :
ThrowableError(_throwable ?: Throwable(message),"MultiM ${errorType.message} ERROR : $message")
ThrowableError(_throwable ?: Throwable(message), "MultiM ${errorType.message} ERROR : $message")

class MultiMHttpError(val httpError: HttpError, throwable: Throwable? = httpError.throwable) :
MultiMError(
Expand Down Expand Up @@ -115,7 +115,9 @@ fun <T> Result<T, ThrowableError>.mapMultiMError(): Result<T, MultiMError> {
is HttpClientClientError -> {
Err(MultiMHttpError(this.error.throwable as ClientRequestException))
}

is MultiMError -> {
Err(this.error as MultiMError)
}
else -> {
Err(MultiMError(this.error.message, this.error.throwable, ErrorType.UNKNOWN))
}
Expand All @@ -124,8 +126,8 @@ fun <T> Result<T, ThrowableError>.mapMultiMError(): Result<T, MultiMError> {
}
}

typealias MultiMResult<T> = Result<T,MultiMError>
typealias MultiMResult<T> = Result<T, MultiMError>

fun TODO(throwable: Throwable? = runCatching { kotlin.TODO() }.exceptionOrNull()): Err<MultiMError> {
return Err(MultiMError("Not yet Implement.",throwable,ErrorType.NOT_IMPL))
return Err(MultiMError("Not yet Implement.", throwable, ErrorType.NOT_IMPL))
}
9 changes: 9 additions & 0 deletions impl/misskey/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@ dependencies {
implementation(project(":core"))
}

sourceSets{
test{
kotlin{
compileClasspath+=project(":core").sourceSets.test.get().output
runtimeClasspath+=project(":core").sourceSets.test.get().output
}
}
}

kotlin{

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ import com.github.michaelbull.result.Err
import com.github.michaelbull.result.Ok
import com.github.michaelbull.result.Result
import com.github.michaelbull.result.map
import dev.usbharu.multim.Logger
import dev.usbharu.multim.api.AccountApi
import dev.usbharu.multim.error.ErrorType
import dev.usbharu.multim.error.MultiMError
import dev.usbharu.multim.error.TODO
import dev.usbharu.multim.error.mapMultiMError
import dev.usbharu.multim.misskey.v12.api.MisskeyApis
import dev.usbharu.multim.misskey.v12.common.*
import dev.usbharu.multim.misskey.v12.converter.misskey.v12.NoteConverter.toStatus
Expand Down Expand Up @@ -44,17 +46,15 @@ class MisskeyAccountApi(val misskeyApis: MisskeyApis) : AccountApi {

override suspend fun follow(account: Account): Result<Unit, MultiMError> {
return if (account is MisskeyAccount) {
misskeyApis.following.create(FollowingCreateRequest(account.id))
Ok(Unit)
misskeyApis.following.create(FollowingCreateRequest(account.id)).map { }
} else {
TODO()
}
}

override suspend fun unfollow(account: Account): Result<Unit, MultiMError> {
return if (account is MisskeyAccount) {
misskeyApis.following.delete(FollowingDeleteRequest(account.id))
Ok(Unit)
misskeyApis.following.delete(FollowingDeleteRequest(account.id)).map { }
} else {
// サーバーが認知していないアカウントのフォローを辞めることはできないのでfalse
Err(MultiMError("Can not unfollow", null, ErrorType.API))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package dev.usbharu.multim.misskey.v12.model

import dev.usbharu.multim.misskey.v12.model.components.MisskeyNeedAuth
import dev.usbharu.multim.misskey.v12.model.components.UserLite

@kotlinx.serialization.Serializable
data class FollowingCreateRequest(
val userId: String
)
):MisskeyNeedAuth()

typealias FollowingCreateResponse = UserLite
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package dev.usbharu.multim.misskey.v12.model

import dev.usbharu.multim.misskey.v12.model.components.MisskeyNeedAuth
import dev.usbharu.multim.misskey.v12.model.components.UserLite

@kotlinx.serialization.Serializable
data class FollowingDeleteRequest(
val userId: String
)
) : MisskeyNeedAuth()

typealias FollowingDeleteResponse = UserLite
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package dev.usbharu.multim.misskey.v12.model

import dev.usbharu.multim.misskey.v12.model.components.MisskeyNeedAuth

@kotlinx.serialization.Serializable
data class UsersRelationRequest(val userId: String)
data class UsersRelationRequest(val userId: String) : MisskeyNeedAuth()

@kotlinx.serialization.Serializable
data class UsersRelationResponse(
Expand Down
Loading