Completed
Push — develop ( 3dabae...af53e6 )
by Nate
02:32
created

Upsert   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 1
dl 0
loc 62
ccs 0
cts 29
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 12 1
A addPayload() 0 8 2
A addUri() 0 10 2
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://github.com/flipbox/relay-hubspot/blob/master/LICENSE
6
 * @link       https://github.com/flipbox/relay-hubspot
7
 */
8
9
namespace Flipbox\Relay\HubSpot\Builder\Resources\Timeline\Event;
10
11
use Flipbox\Relay\HubSpot\AuthorizationInterface;
12
use Flipbox\Relay\HubSpot\Builder\HttpRelayBuilder;
13
use Flipbox\Relay\HubSpot\Middleware\JsonRequest as JsonMiddleware;
14
use Flipbox\Relay\HubSpot\Middleware\ResourceV1;
15
use Psr\Log\LoggerInterface;
16
17
/**
18
 * @author Flipbox Factory <[email protected]>
19
 * @since 1.0.0
20
 */
21
class Upsert extends HttpRelayBuilder
22
{
23
    /**
24
     * The node
25
     */
26
    const NODE = 'integrations';
27
28
    /**
29
     * The resource
30
     */
31
    const RESOURCE = 'timeline/event';
32
33
    /**
34
     * @param string $appId
35
     * @param array $payload
36
     * @param AuthorizationInterface $authorization
37
     * @param LoggerInterface|null $logger
38
     * @param array $config
39
     */
40
    public function __construct(
41
        string $appId,
42
        array $payload,
43
        AuthorizationInterface $authorization,
44
        LoggerInterface $logger = null,
45
        $config = []
46
    ) {
47
        parent::__construct($authorization, $logger, $config);
48
49
        $this->addUri($appId, $logger)
50
            ->addPayload($payload, $logger);
51
    }
52
53
    /**
54
     * @param array $payload
55
     * @param LoggerInterface|null $logger
56
     * @return $this
57
     */
58
    protected function addPayload(array $payload, LoggerInterface $logger = null)
59
    {
60
        return $this->addAfter('body', [
61
            'class' => JsonMiddleware::class,
62
            'payload' => $payload,
63
            'logger' => $logger ?: $this->getLogger()
64
        ], 'uri');
65
    }
66
67
    /**
68
     * @param string $appId
69
     * @param LoggerInterface|null $logger
70
     * @return $this
71
     */
72
    protected function addUri(string $appId, LoggerInterface $logger = null)
73
    {
74
        return $this->addBefore('uri', [
75
            'class' => ResourceV1::class,
76
            'method' => 'PUT',
77
            'node' => self::NODE,
78
            'resource' => $appId . '/' . self::RESOURCE,
79
            'logger' => $logger ?: $this->getLogger()
80
        ]);
81
    }
82
}
83