From da0f137e43105dab639fd3c6d9616ed62bbc8fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20L=C3=B8vgaard?= Date: Mon, 17 Jun 2024 13:15:33 +0200 Subject: [PATCH] Add webhook consumer --- src/Consumer/WebhookConsumer.php | 39 +++++++++++++++++++ src/Consumer/WebhookConsumerInterface.php | 17 ++++++++ .../Webhook/WebhookDataStockAdjust.php | 21 ++++++++++ 3 files changed, 77 insertions(+) create mode 100644 src/Consumer/WebhookConsumer.php create mode 100644 src/Consumer/WebhookConsumerInterface.php create mode 100644 src/DataTransferObject/Webhook/WebhookDataStockAdjust.php diff --git a/src/Consumer/WebhookConsumer.php b/src/Consumer/WebhookConsumer.php new file mode 100644 index 0000000..aedff6d --- /dev/null +++ b/src/Consumer/WebhookConsumer.php @@ -0,0 +1,39 @@ +getMapperBuilder() + ->mapper() + ->map( + $dataClass, + json_decode($json, true, 512, \JSON_THROW_ON_ERROR), + ); + } + + public function setMapperBuilder(MapperBuilder $mapperBuilder): void + { + $this->mapperBuilder = $mapperBuilder; + } + + public function getMapperBuilder(): MapperBuilder + { + if (null === $this->mapperBuilder) { + $this->mapperBuilder = (new MapperBuilder()) + ->allowSuperfluousKeys() + ; + } + + return $this->mapperBuilder; + } +} diff --git a/src/Consumer/WebhookConsumerInterface.php b/src/Consumer/WebhookConsumerInterface.php new file mode 100644 index 0000000..4c0eef0 --- /dev/null +++ b/src/Consumer/WebhookConsumerInterface.php @@ -0,0 +1,17 @@ + $dataClass + * + * @return T + */ + public function consume(string $json, string $dataClass): object; +} diff --git a/src/DataTransferObject/Webhook/WebhookDataStockAdjust.php b/src/DataTransferObject/Webhook/WebhookDataStockAdjust.php new file mode 100644 index 0000000..482f08b --- /dev/null +++ b/src/DataTransferObject/Webhook/WebhookDataStockAdjust.php @@ -0,0 +1,21 @@ +