diff --git a/src/main/kotlin/dev/usbharu/httpsignature/common/DefaultSignatureBase.kt b/src/main/kotlin/dev/usbharu/httpsignature/common/DefaultSignatureBase.kt new file mode 100644 index 0000000..bf53fe7 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/common/DefaultSignatureBase.kt @@ -0,0 +1,39 @@ +package dev.usbharu.httpsignature.common + +class DefaultSignatureBase : SignatureBase { + + private val list = mutableListOf() + + 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): 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): String { + return (listOf( + list.joinToString( + " ", + "(", + ")" + ) { it.componentIdentifier } + ) + signatureParameters.map { "${it.name}=${it.value}" }).joinToString(";") + } + + override fun coveredComponents(): List { + return list.map { it.componentIdentifier } + } +} diff --git a/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBase.kt b/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBase.kt index dc8ac71..392abb3 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBase.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBase.kt @@ -1,39 +1,7 @@ package dev.usbharu.httpsignature.common -class SignatureBase() { - - private val list = mutableListOf() - - 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): 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): String { - return (listOf( - list.joinToString( - " ", - "(", - ")" - ) { it.componentIdentifier } - ) + signatureParameters.map { "${it.name}=${it.value}" }).joinToString(";") - } - - fun coveredComponents(): List { - return list.map { it.componentIdentifier } - } -} +interface SignatureBase { + fun generateSignatureBase(signatureParameters: List): String + fun generateSignatureParameterString(signatureParameters: List): String + fun coveredComponents(): List +} \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBaseBuilder.kt b/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBaseBuilder.kt index bc04e3f..6111e52 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBaseBuilder.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/common/SignatureBaseBuilder.kt @@ -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 }