From 9f02f19ca759a53e754fadcfc25e807853d5f8d3 Mon Sep 17 00:00:00 2001 From: usbharu Date: Wed, 25 Sep 2024 11:19:15 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20SignatureBase=E3=82=92=E6=8A=BD?= =?UTF-8?q?=E8=B1=A1=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/DefaultSignatureBase.kt | 39 +++++++++++++++++ .../httpsignature/common/SignatureBase.kt | 42 +++---------------- .../common/SignatureBaseBuilder.kt | 4 +- 3 files changed, 46 insertions(+), 39 deletions(-) create mode 100644 src/main/kotlin/dev/usbharu/httpsignature/common/DefaultSignatureBase.kt 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 }