mirror of
https://github.com/usbharu/http-signature.git
synced 2026-09-26 20:31:09 +00:00
feat: HttpRequestからSignature Baseを生成する処理を簡単にするやつを追加
This commit is contained in:
@@ -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
|
||||
|
||||
+14
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user