feat: HttpRequestからSignature Baseを生成する処理を簡単にするやつを追加
This commit is contained in:
parent
cc55006fea
commit
2b71e2f10b
|
@ -11,6 +11,11 @@ class SignatureBaseBuilder {
|
|||
return signatureBase
|
||||
}
|
||||
|
||||
fun component(component: Component): SignatureBaseBuilder {
|
||||
signatureBase.addComponent(component)
|
||||
return this
|
||||
}
|
||||
|
||||
fun method(method: String): SignatureBaseBuilder {
|
||||
signatureBase.addComponent(DerivedComponent(DerivedComponentConstants.METHOD, "", method))
|
||||
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