Completed
Push — master ( 00ed35...63fbb3 )
by Oscar
10:20
created

Delay   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 3
c 2
b 0
f 0
lcom 0
cbo 0
dl 0
loc 38
rs 10

2 Methods

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