Passed
Push — master ( 9815c8...791a47 )
by Dāvis
03:45
created

MessageFormatter::sludioUri()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Sludio\HelperBundle\Guzzle\GuzzleHttp;
4
5
use GuzzleHttp\MessageFormatter as BaseMessageFormatter;
6
use Psr\Http\Message\MessageInterface;
7
use Psr\Http\Message\RequestInterface;
8
use Psr\Http\Message\ResponseInterface;
9
use Sludio\HelperBundle\Script\Utils\Helper;
10
11
class MessageFormatter extends BaseMessageFormatter
12
{
13
    public $template;
14
15
    private function sludioRequest($arguments)
16
    {
17
        return Psr7\str($arguments['request']);
18
    }
19
20
    private function sludioResponse($arguments)
21
    {
22
        return $arguments['response'] ? Psr7\str($arguments['response']) : '';
23
    }
24
25
    private function sludioReqHeaders($arguments)
26
    {
27
        return trim($arguments['request']->getMethod().' '.$arguments['request']->getRequestTarget()).' HTTP/'.$arguments['request']->getProtocolVersion()."\r\n".$this->headers($arguments['request']);
28
    }
29
30
    private function sludioResHeaders($arguments)
31
    {
32
        return $arguments['response'] ? sprintf('HTTP/%s %d %s', $arguments['response']->getProtocolVersion(), $arguments['response']->getStatusCode(), $arguments['response']->getReasonPhrase())."\r\n".$this->headers($arguments['response']) : 'NULL';
33
    }
34
35
    private function sludioReqBody($arguments)
36
    {
37
        return $arguments['request']->getBody();
38
    }
39
40
    private function sludioResBody($arguments)
41
    {
42
        return $arguments['response'] ? $arguments['response']->getBody() : 'NULL';
43
    }
44
45
    private function sludioTs()
46
    {
47
        return gmdate('c');
48
    }
49
50
    private function sludioDateIso8601()
51
    {
52
        return $this->sludioTs();
53
    }
54
55
    private function sludioDateCommonLog()
56
    {
57
        return date('d/M/Y:H:i:s O');
58
    }
59
60
    private function sludioMethod($arguments)
61
    {
62
        return $arguments['request']->getMethod();
63
    }
64
65
    private function sludioVersion($arguments)
66
    {
67
        return $arguments['request']->getProtocolVersion();
68
    }
69
70
    private function sludioUri($arguments)
71
    {
72
        return $arguments['request']->getUri();
73
    }
74
75
    private function sludioUrl($arguments)
76
    {
77
        return $this->sludioUri($arguments);
78
    }
79
80
    private function sludioTarget($arguments)
81
    {
82
        return $arguments['request']->getRequestTarget();
83
    }
84
85
    private function sludioReqVersion($arguments)
86
    {
87
        return $arguments['request']->getProtocolVersion();
88
    }
89
90
    private function sludioResVersion($arguments)
91
    {
92
        return $arguments['response'] ? $arguments['response']->getProtocolVersion() : 'NULL';
93
    }
94
95
    private function sludioHost($arguments)
96
    {
97
        return $arguments['request']->getHeaderLine('Host');
98
    }
99
100
    private function sludioHostname()
101
    {
102
        return gethostname();
103
    }
104
105
    private function sludioCode($arguments)
106
    {
107
        return $arguments['response'] ? $arguments['response']->getStatusCode() : 'NULL';
108
    }
109
110
    private function sludioPhrase($arguments)
111
    {
112
        return $arguments['response'] ? $arguments['response']->getReasonPhrase() : 'NULL';
113
    }
114
115
    private function sludioError($arguments)
116
    {
117
        return $arguments['error'] ? $arguments['error'] instanceof \Exception ? $arguments['error']->getMessage() : (string)$arguments['error'] : 'NULL';
118
    }
119
120
    /**
121
     * {@inheritdoc}
122
     */
123
    public function format(RequestInterface $request, ResponseInterface $response = null, $error = null)
124
    {
125
        $cache = [];
126
127
        return preg_replace_callback('/{\s*([A-Za-z_\-\.0-9]+)\s*}/', function (array $matches) use ($request, $response, $error, &$cache) {
128
            if (isset($cache[$matches[1]])) {
129
                return $cache[$matches[1]];
130
            }
131
132
            $cache[$matches[1]] = '';
133
134
            $method = Helper::toCamelCase('sludio_'.$matches[1]);
135
            if (method_exists($this, $method)) {
136
                $result = $this->{$method}([
137
                    'request' => $request,
138
                    'response' => $response,
139
                    'error' => $error,
140
                ]);
141
            } else {
142
                if (strpos($matches[1], 'req_header_') === 0) {
143
                    $cache[$matches[1]] = $request->getHeaderLine(substr($matches[1], 11));
144
                } elseif (strpos($matches[1], 'res_header_') === 0) {
145
                    $cache[$matches[1]] = $response ? $response->getHeaderLine(substr($matches[1], 11)) : 'NULL';
146
                }
147
            }
148
149
            return $result;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $result does not seem to be defined for all execution paths leading up to this point.
Loading history...
150
        }, $this->template);
151
    }
152
}