Middleware::fromResponseTimeLogger()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 1
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * @codingStandardsIgnoreStart
4
 *
5
 * @author       Barney Hanlon <[email protected]>
6
 * @copyright    Barney Hanlon 2017
7
 * @license      https://opensource.org/licenses/MIT
8
 *
9
 * @codingStandardsIgnoreEnd
10
 */
11
12
namespace Shrikeh\GuzzleMiddleware\TimerLogger;
13
14
use Psr\Log\LoggerInterface;
15
use Shrikeh\GuzzleMiddleware\TimerLogger\Handler\StartTimer;
16
use Shrikeh\GuzzleMiddleware\TimerLogger\Handler\StopTimer;
17
use Shrikeh\GuzzleMiddleware\TimerLogger\ResponseTimeLogger\ResponseTimeLogger;
18
use Shrikeh\GuzzleMiddleware\TimerLogger\ResponseTimeLogger\ResponseTimeLoggerInterface;
19
20
/**
21
 * Class Middleware.
22
 */
23
final class Middleware
24
{
25
    /**
26
     * @var callable
27
     */
28
    private $startHandler;
29
30
    /**
31
     * @var callable
32
     */
33
    private $stopHandler;
34
35
    /**
36
     * @param LoggerInterface $logger The PSR-3 LoggerInterface
37
     *
38
     * @return self
39
     */
40
    public static function quickStart(LoggerInterface $logger)
41
    {
42
        return self::fromResponseTimeLogger(ResponseTimeLogger::quickStart($logger));
43
    }
44
45
    /**
46
     * @param ResponseTimeLoggerInterface $responseTimeLogger A timer logger
47
     *
48
     * @return self
49
     */
50
    public static function fromResponseTimeLogger(ResponseTimeLoggerInterface $responseTimeLogger)
51
    {
52
        /*
53
         * @scrutinizer ignore-type
54
         */
55
        return new self(
56
            StartTimer::createFrom($responseTimeLogger),
57
            StopTimer::createFrom($responseTimeLogger)
58
        );
59
    }
60
61
    /**
62
     * Middleware constructor.
63
     *
64
     * @param callable $startHandler A start handler to register
65
     * @param callable $stopHandler  A stop handler to register
66
     */
67
    public function __construct(callable $startHandler, callable $stopHandler)
68
    {
69
        $this->startHandler = $startHandler;
70
        $this->stopHandler = $stopHandler;
71
    }
72
73
    /**
74
     * @return callable
75
     */
76
    public function __invoke()
77
    {
78
        return $this->tap();
79
    }
80
81
    /**
82
     * @return callable
83
     */
84
    public function tap()
85
    {
86
        return \GuzzleHttp\Middleware::tap($this->startHandler, $this->stopHandler);
87
    }
88
}
89