Delay::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace Psr7Middlewares\Middleware;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use Psr\Http\Message\ResponseInterface;
7
8
/**
9
 * Middleware to simulate delay in responses.
10
 */
11
class Delay
12
{
13
    protected $seconds;
14
15
    /**
16
     * Set the seconds to delay.
17
     *
18
     * @param int|array $seconds Use an array to random values [min, max]
19
     */
20
    public function __construct($seconds = [1, 2])
21
    {
22
        $this->seconds = $seconds;
23
    }
24
25
    /**
26
     * Execute the middleware.
27
     *
28
     * @param ServerRequestInterface $request
29
     * @param ResponseInterface      $response
30
     * @param callable               $next
31
     *
32
     * @return ResponseInterface
33
     */
34
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
35
    {
36
        $ms = $this->seconds;
37
38
        if (is_array($ms)) {
39
            $ms = rand(round($ms[0] * 1000000), round($ms[1] * 1000000));
40
        } else {
41
            $ms = round($ms * 1000000);
42
        }
43
44
        usleep($ms);
45
46
        return $next($request, $response);
47
    }
48
}
49