ConnectMiddleware   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 3
dl 0
loc 74
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A __invoke() 0 15 1
A appendHeaders() 0 8 2
A appendQueryParams() 0 9 2
1
<?php
2
/**
3
 * This file is part of the adlogix/guzzle-atlassian-connect-middleware package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
9
namespace Adlogix\GuzzleAtlassianConnect\Middleware;
10
11
use Adlogix\GuzzleAtlassianConnect\Security\AuthenticationInterface;
12
use GuzzleHttp\Psr7\Uri;
13
use Psr\Http\Message\RequestInterface;
14
15
/**
16
 * Class ConnectMiddleware
17
 * @package Adlogix\GuzzleAtlassianConnect\Middleware
18
 * @author  Cedric Michaux <[email protected]>
19
 */
20
class ConnectMiddleware
21
{
22
    /**
23
     * @var AuthenticationInterface
24
     */
25
    private $auth;
26
27
    /**
28
     * @var string
29
     */
30
    private $appContext;
31
32
    /**
33
     * ConnectMiddleware constructor.
34
     *
35
     * @param AuthenticationInterface $auth
36
     * @param string                  $appContext
37
     */
38
    public function __construct(AuthenticationInterface $auth, $appContext)
39
    {
40
        $this->auth = $auth;
41
        $this->appContext = $appContext;
42
    }
43
44
    /**
45
     * @param callable $handler
46
     *
47
     * @return \Closure
48
     */
49
    public function __invoke(callable $handler)
50
    {
51
        return function (RequestInterface $request, array $options) use (&$handler) {
52
53
            $url = rawurldecode(str_replace($this->appContext, "", $request->getUri()));
54
55
            $this->auth->setQueryString($request->getMethod(), $url);
56
57
            $request = $this->appendHeaders($request);
58
            $request = $this->appendQueryParams($request);
59
60
61
            return $handler($request, $options);
62
        };
63
    }
64
65
    /**
66
     * @param RequestInterface $request
67
     *
68
     * @return RequestInterface
69
     */
70
    private function appendHeaders(RequestInterface $request)
71
    {
72
        $headers = $this->auth->getHeaders();
73
        foreach ($headers as $key => $value) {
74
            $request = $request->withHeader($key, $value);
75
        }
76
        return $request;
77
    }
78
79
    /**
80
     * @param RequestInterface $request
81
     *
82
     * @return RequestInterface
83
     */
84
    private function appendQueryParams(RequestInterface $request)
85
    {
86
        $queryParams = $this->auth->getQueryParameters();
87
        foreach ($queryParams as $key => $value) {
88
            $uri = Uri::withQueryValue($request->getUri(), $key, $value);
89
            $request = $request->withUri($uri);
90
        }
91
        return $request;
92
    }
93
}
94