2021-11-24 07:52:27 +00:00
|
|
|
package dev.inmo.postssystem.features.roles.client
|
|
|
|
|
|
|
|
import dev.inmo.postssystem.features.roles.common.*
|
|
|
|
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
|
|
|
|
import dev.inmo.micro_utils.ktor.common.buildStandardUrl
|
|
|
|
import kotlinx.serialization.KSerializer
|
|
|
|
import kotlinx.serialization.builtins.serializer
|
|
|
|
|
2021-11-27 19:11:04 +00:00
|
|
|
class WriteClientRolesStorage<T : Role>(
|
2021-11-24 07:52:27 +00:00
|
|
|
private val baseUrl: String,
|
2022-06-12 12:54:28 +00:00
|
|
|
private val client: HttpClient,
|
2021-11-24 07:52:27 +00:00
|
|
|
private val serializer: KSerializer<T>
|
2021-11-27 19:11:04 +00:00
|
|
|
) : WriteRolesStorage<T> {
|
|
|
|
private val wrapperSerializer = RolesStorageIncludeExcludeWrapper.serializer(
|
2021-11-24 07:52:27 +00:00
|
|
|
serializer
|
|
|
|
)
|
|
|
|
private val userRolesFullUrl = buildStandardUrl(
|
|
|
|
baseUrl,
|
|
|
|
usersRolesRootPathPart
|
|
|
|
)
|
|
|
|
private val includeFullUrl = buildStandardUrl(
|
|
|
|
userRolesFullUrl,
|
|
|
|
usersRolesIncludePathPart
|
|
|
|
)
|
|
|
|
private val excludeFullUrl = buildStandardUrl(
|
|
|
|
userRolesFullUrl,
|
|
|
|
usersRolesExcludePathPart
|
|
|
|
)
|
|
|
|
|
|
|
|
override suspend fun include(
|
2021-11-27 19:11:04 +00:00
|
|
|
subject: RoleSubject,
|
|
|
|
role: T
|
2021-11-24 07:52:27 +00:00
|
|
|
): Boolean = unifiedRequester.unipost(
|
|
|
|
includeFullUrl,
|
2021-11-27 19:11:04 +00:00
|
|
|
wrapperSerializer to RolesStorageIncludeExcludeWrapper(
|
|
|
|
subject, role
|
2021-11-24 07:52:27 +00:00
|
|
|
),
|
|
|
|
Boolean.serializer()
|
|
|
|
)
|
|
|
|
|
|
|
|
override suspend fun exclude(
|
2021-11-27 19:11:04 +00:00
|
|
|
subject: RoleSubject,
|
|
|
|
role: T
|
2021-11-24 07:52:27 +00:00
|
|
|
): Boolean = unifiedRequester.unipost(
|
|
|
|
excludeFullUrl,
|
2021-11-27 19:11:04 +00:00
|
|
|
wrapperSerializer to RolesStorageIncludeExcludeWrapper(
|
|
|
|
subject, role
|
2021-11-24 07:52:27 +00:00
|
|
|
),
|
|
|
|
Boolean.serializer()
|
|
|
|
)
|
|
|
|
}
|