Passed
Push — master ( b14078...3674b6 )
by payever
03:28
created

BidirectionalActionProcessor   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 7
c 1
b 0
f 0
dl 0
loc 39
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A processOutwardAction() 0 3 1
A processInwardAction() 0 3 1
1
<?php
2
/**
3
 * PHP version 5.4 and 7
4
 *
5
 * @package   Payever\ThirdParty
6
 * @author    Hennadii.Shymanskyi <[email protected]>
7
 * @copyright 2017-2019 payever GmbH
8
 * @license   MIT <https://opensource.org/licenses/MIT>
9
 */
10
11
namespace Payever\ExternalIntegration\ThirdParty\Action;
12
13
use Payever\ExternalIntegration\Inventory\Http\RequestEntity\InventoryChangedRequestEntity;
14
use Payever\ExternalIntegration\Products\Http\RequestEntity\ProductRemovedRequestEntity;
15
use Payever\ExternalIntegration\Products\Http\RequestEntity\ProductRequestEntity;
16
17
class BidirectionalActionProcessor
18
{
19
    /** @var InwardActionProcessor */
20
    private $inwardActionProcessor;
21
22
    /** @var OutwardActionProcessor */
23
    private $outwardActionProcessor;
24
25
    public function __construct(
26
        InwardActionProcessor $inwardActionProcessor,
27
        OutwardActionProcessor $outwardActionProcessor
28
    ) {
29
        $this->inwardActionProcessor = $inwardActionProcessor;
30
        $this->outwardActionProcessor = $outwardActionProcessor;
31
    }
32
33
    /**
34
     * Do the job of processing payever third-party action request
35
     *
36
     * @param string $action - action name {@see ActionEnum}
37
     * @param array|string|null $payload - user can pass payload directly if it's coming from custom source
38
     *
39
     * @throws \Exception - bubbles up anything thrown inside
40
     */
41
    public function processInwardAction($action, $payload = null)
42
    {
43
        $this->inwardActionProcessor->process($action, $payload);
44
    }
45
46
    /**
47
     * @param string $action - {@see ActionEnum}
48
     * @param InventoryChangedRequestEntity|ProductRequestEntity|ProductRemovedRequestEntity|array|string $payload
49
     *
50
     * @throws \RuntimeException - when given action is unknown
51
     * @throws \Exception - bubbles up anything thrown by API
52
     */
53
    public function processOutwardAction($action, $payload)
54
    {
55
        $this->outwardActionProcessor->process($action, $payload);
56
    }
57
}
58