refactor: SignatureBaseを抽象化

This commit is contained in:
usbharu 2024-09-25 11:19:15 +09:00
parent db0ff2c825
commit 9f02f19ca7
Signed by: usbharu
GPG Key ID: 95CBCF7046307B77
3 changed files with 46 additions and 39 deletions

View File

@ -0,0 +1,39 @@
package dev.usbharu.httpsignature.common
class DefaultSignatureBase : SignatureBase {
private val list = mutableListOf<Component>()
fun addComponent(component: Component) {
if (list.indexOf(component) != -1) {
throw IllegalArgumentException("Component with identifier ${component.componentIdentifier} already exists.")
}
list.add(component)
}
override fun generateSignatureBase(signatureParameters: List<SignatureParameter>): String {
val signatureBase =
list.joinToString(
separator = "",
postfix = "\n"
) { component -> "${component.componentIdentifier}: ${component.componentValue}" }
val signatureParams = "\"@signature-params\": " + generateSignatureParameterString(signatureParameters)
return signatureBase + signatureParams
}
override fun generateSignatureParameterString(signatureParameters: List<SignatureParameter>): String {
return (listOf(
list.joinToString(
" ",
"(",
")"
) { it.componentIdentifier }
) + signatureParameters.map { "${it.name}=${it.value}" }).joinToString(";")
}
override fun coveredComponents(): List<String> {
return list.map { it.componentIdentifier }
}
}

View File

@ -1,39 +1,7 @@
package dev.usbharu.httpsignature.common
class SignatureBase() {
private val list = mutableListOf<Component>()
fun addComponent(component: Component) {
if (list.indexOf(component) != -1) {
throw IllegalArgumentException("Component with identifier ${component.componentIdentifier} already exists.")
}
list.add(component)
}
fun generateSignatureBase(signatureParameters: List<SignatureParameter>): String {
val signatureBase =
list.joinToString(
separator = "",
postfix = "\n"
) { component -> "${component.componentIdentifier}: ${component.componentValue}" }
val signatureParams = "\"@signature-params\": " + generateSignatureParameterString(signatureParameters)
return signatureBase + signatureParams
}
fun generateSignatureParameterString(signatureParameters: List<SignatureParameter>): String {
return (listOf(
list.joinToString(
" ",
"(",
")"
) { it.componentIdentifier }
) + signatureParameters.map { "${it.name}=${it.value}" }).joinToString(";")
}
fun coveredComponents(): List<String> {
return list.map { it.componentIdentifier }
}
}
interface SignatureBase {
fun generateSignatureBase(signatureParameters: List<SignatureParameter>): String
fun generateSignatureParameterString(signatureParameters: List<SignatureParameter>): String
fun coveredComponents(): List<String>
}

View File

@ -5,9 +5,9 @@ import java.net.http.HttpRequest
import kotlin.jvm.optionals.getOrNull
class SignatureBaseBuilder {
private val signatureBase = SignatureBase()
private val signatureBase = DefaultSignatureBase()
fun build(): SignatureBase {
fun build(): DefaultSignatureBase {
return signatureBase
}