History   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 36
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
B __invoke() 0 25 1
A __construct() 0 4 1
1
<?php
2
3
namespace Muzzle\Middleware;
4
5
use Muzzle\Messages\AssertableRequest;
6
use Muzzle\Messages\AssertableResponse;
7
use Muzzle\Messages\Transaction;
8
use Muzzle\Transactions;
9
10
class History
11
{
12
13
    private $container;
14
15
    public function __construct(Transactions $container)
16
    {
17
18
        $this->container = $container;
19
    }
20
21
    public function __invoke(callable $handler)
22
    {
23
24
        return function ($request, array $options = []) use ($handler) {
25
26
            return $handler($request, $options)->then(
27
                function ($value) use ($request, $options) {
28
29
                    $transaction = (new Transaction)
30
                        ->setRequest(AssertableRequest::fromBaseRequest($request))
31
                        ->setResponse(AssertableResponse::fromBaseResponse($value))
32
                        ->setOptions($options);
33
                    $this->container->push($transaction);
34
35
                    return $value;
36
                },
37
                function ($reason) use ($request, $options) {
38
39
                    $transaction = (new Transaction)
40
                        ->setRequest(AssertableRequest::fromBaseRequest($request))
41
                        ->setError($reason)
42
                        ->setOptions($options);
43
                    $this->container->push($transaction);
44
45
                    return \GuzzleHttp\Promise\rejection_for($reason);
46
                }
47
            );
48
        };
49
    }
50
}
51