feat: HttpRequestからSignature Baseを生成する処理を簡単にするやつを追加
This commit is contained in:
parent
cc55006fea
commit
2b71e2f10b
|
@ -11,6 +11,11 @@ class SignatureBaseBuilder {
|
||||||
return signatureBase
|
return signatureBase
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun component(component: Component): SignatureBaseBuilder {
|
||||||
|
signatureBase.addComponent(component)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
fun method(method: String): SignatureBaseBuilder {
|
fun method(method: String): SignatureBaseBuilder {
|
||||||
signatureBase.addComponent(DerivedComponent(DerivedComponentConstants.METHOD, "", method))
|
signatureBase.addComponent(DerivedComponent(DerivedComponentConstants.METHOD, "", method))
|
||||||
return this
|
return this
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package dev.usbharu.httpsignature.utils
|
||||||
|
|
||||||
|
import dev.usbharu.httpsignature.common.Component
|
||||||
|
import dev.usbharu.httpsignature.common.HttpRequest
|
||||||
|
|
||||||
|
abstract class AbstractHttpRequestComponentExtractor(protected val fieldProcessor: FieldProcessor) :
|
||||||
|
HttpRequestComponentExtractor {
|
||||||
|
override fun extract(name: String, request: HttpRequest): List<Component> {
|
||||||
|
val extractValue = extractValue(name, request)
|
||||||
|
return fieldProcessor.process(name, extractValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun extractValue(name: String, request: HttpRequest): List<String>
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
package dev.usbharu.httpsignature.utils
|
||||||
|
|
||||||
|
data class CoveredComponent(val fieldName: String, val componentParameterType: String)
|
|
@ -0,0 +1,7 @@
|
||||||
|
package dev.usbharu.httpsignature.utils
|
||||||
|
|
||||||
|
import dev.usbharu.httpsignature.common.Component
|
||||||
|
|
||||||
|
fun interface FieldProcessor {
|
||||||
|
fun process(name: String, value: List<String>): List<Component>
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package dev.usbharu.httpsignature.utils
|
||||||
|
|
||||||
|
import dev.usbharu.httpsignature.common.Component
|
||||||
|
import dev.usbharu.httpsignature.common.HttpRequest
|
||||||
|
|
||||||
|
interface HttpRequestComponentExtractor {
|
||||||
|
fun extract(name: String, request: HttpRequest): List<Component>
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package dev.usbharu.httpsignature.utils
|
||||||
|
|
||||||
|
import dev.usbharu.httpsignature.common.HttpRequest
|
||||||
|
import dev.usbharu.httpsignature.common.SignatureBaseBuilder
|
||||||
|
|
||||||
|
class HttpRequestSignatureBaseUtils {
|
||||||
|
|
||||||
|
private val fieldProcessorMap = mutableMapOf<String, HttpRequestComponentExtractor>()
|
||||||
|
|
||||||
|
fun from(httpRequest: HttpRequest, coveredComponents: List<CoveredComponent>): SignatureBaseBuilder {
|
||||||
|
val builder = SignatureBaseBuilder()
|
||||||
|
coveredComponents
|
||||||
|
.flatMap {
|
||||||
|
val extractor = (fieldProcessorMap[it.componentParameterType]
|
||||||
|
?: throw IllegalArgumentException("HttpRequestComponentExtractor ${it.componentParameterType} not found."))
|
||||||
|
extractor.extract(it.fieldName, httpRequest)
|
||||||
|
}.forEach {
|
||||||
|
builder.component(it)
|
||||||
|
}
|
||||||
|
return builder
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue