generated from pricelees/issue-pr-template
31 lines
1.2 KiB
Kotlin
31 lines
1.2 KiB
Kotlin
package roomescape.payment.infrastructure.client
|
|
|
|
import com.fasterxml.jackson.core.JsonParser
|
|
import com.fasterxml.jackson.core.TreeNode
|
|
import com.fasterxml.jackson.databind.DeserializationContext
|
|
import com.fasterxml.jackson.databind.JsonNode
|
|
import com.fasterxml.jackson.databind.deser.std.StdDeserializer
|
|
import roomescape.payment.web.PaymentCancel
|
|
import java.io.IOException
|
|
import java.time.OffsetDateTime
|
|
|
|
class PaymentCancelResponseDeserializer(
|
|
vc: Class<PaymentCancel.Response>? = null
|
|
) : StdDeserializer<PaymentCancel.Response>(vc) {
|
|
@Throws(IOException::class)
|
|
override fun deserialize(
|
|
jsonParser: JsonParser,
|
|
deserializationContext: DeserializationContext?
|
|
): PaymentCancel.Response {
|
|
val cancels: JsonNode = jsonParser.codec.readTree<TreeNode>(jsonParser)
|
|
.get("cancels")
|
|
.get(0) as JsonNode
|
|
|
|
return PaymentCancel.Response(
|
|
cancels.get("cancelStatus").asText(),
|
|
cancels.get("cancelReason").asText(),
|
|
cancels.get("cancelAmount").asLong(),
|
|
OffsetDateTime.parse(cancels.get("canceledAt").asText())
|
|
)
|
|
}
|
|
} |