Completed
Push — master ( d33ecb...a355ea )
by Nate
03:02 queued 01:39
created

Resource   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 64
c 0
b 0
f 0
wmc 3
lcom 1
cbo 3
ccs 0
cts 26
cp 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 13 1
A prepareUri() 0 12 1
A getPath() 0 4 1
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\Middleware;
10
11
use Flipbox\Relay\Middleware\AbstractMiddleware;
12
use Psr\Http\Message\RequestInterface;
13
use Psr\Http\Message\ResponseInterface;
14
15
/**
16
 * @author Flipbox Factory <[email protected]>
17
 * @since 1.0.0
18
 *
19
 * The anatomy of an API Resource Uri is constructed with this class.  This is the breakdown:
20
 * {scheme}://{host}/{node}/{version}/{path}
21
 */
22
class Resource extends AbstractMiddleware
23
{
24
    /**
25
     * The request method
26
     */
27
    public $method = 'GET';
28
29
    /**
30
     * The API Scheme
31
     */
32
    const SCHEME = 'https';
33
34
    /**
35
     * The API Host
36
     */
37
    const HOST = 'api.hubapi.com';
38
39
    /**
40
     * The resource path
41
     */
42
    public $resource;
43
44
    /**
45
     * @inheritdoc
46
     */
47
    public function __invoke(
48
        RequestInterface $request,
49
        ResponseInterface $response,
50
        callable $next = null
51
    ) {
52
        parent::__invoke($request, $response, $next);
53
54
        $request = $this->prepareUri(
55
            $request->withMethod($this->method)
56
        );
57
58
        return $next($request, $response);
59
    }
60
61
    /**
62
     * @param RequestInterface $request
63
     * @return RequestInterface
64
     */
65
    protected function prepareUri(RequestInterface $request)
66
    {
67
        $uri = $request->getUri()
68
            ->withHost(static::HOST)
69
            ->withScheme(static::SCHEME);
70
71
        return $request->withUri(
72
            $uri->withPath(
73
                $this->getPath()
74
            )
75
        );
76
    }
77
78
    /**
79
     * @return string
80
     */
81
    protected function getPath(): string
82
    {
83
        return "{$this->resource}";
84
    }
85
}
86