1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Signifyd\Model\SignifydGateway\Response;
- use Magento\Framework\Json\DecoderInterface;
- /**
- * Reads request and produces webhook message data object based on request params.
- */
- class WebhookMessageReader
- {
- /**
- * @var DecoderInterface
- */
- private $dataDecoder;
- /**
- * @var WebhookMessageFactory
- */
- private $webhookMessageFactory;
- /**
- * @param DecoderInterface $decoder
- * @param WebhookMessageFactory $webhookMessageFactory
- */
- public function __construct(
- DecoderInterface $decoder,
- WebhookMessageFactory $webhookMessageFactory
- ) {
- $this->dataDecoder = $decoder;
- $this->webhookMessageFactory = $webhookMessageFactory;
- }
- /**
- * Returns webhook message data object.
- *
- * @param WebhookRequest $request
- * @return WebhookMessage
- * @throws \InvalidArgumentException
- */
- public function read(WebhookRequest $request)
- {
- try {
- $decodedData = $this->dataDecoder->decode($request->getBody());
- } catch (\Exception $e) {
- throw new \InvalidArgumentException(
- 'Webhook request body is not valid JSON: ' . $e->getMessage(),
- $e->getCode(),
- $e
- );
- }
- $webhookMessage = $this->webhookMessageFactory->create(
- [
- 'data' => $decodedData,
- 'eventTopic' => $request->getEventTopic()
- ]
- );
- return $webhookMessage;
- }
- }
|