BaseResponse   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 105
Duplicated Lines 0 %

Test Coverage

Coverage 91.49%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 38
c 1
b 0
f 0
dl 0
loc 105
ccs 43
cts 47
cp 0.9149
rs 10
wmc 14

8 Methods

Rating   Name   Duplication   Size   Complexity  
A getErrors() 0 20 4
A getMessageCode() 0 6 2
A __get() 0 3 1
A getResultCode() 0 3 1
A __construct() 0 3 1
A contents() 0 3 1
A getMessages() 0 16 3
A __isset() 0 3 1
1
<?php
2
3
namespace CommerceGuys\AuthNet\Response;
4
5
use CommerceGuys\AuthNet\DataTypes\Message;
6
use Psr\Http\Message\ResponseInterface as HttpResponseInterface;
7
8
/**
9
 * Class BaseResponse
10
 * @package CommerceGuys\AuthNet\Response
11
 */
12
abstract class BaseResponse implements ResponseInterface
13
{
14
    /**
15
     * @var \Psr\Http\Message\ResponseInterface
16
     */
17
    protected $response;
18
19
    /**
20
     * @var object
21
     */
22
    protected $contents;
23
24
    /**
25
     * BaseResponse constructor.
26
     * @param \Psr\Http\Message\ResponseInterface $response
27
     */
28 15
    public function __construct(HttpResponseInterface $response)
29
    {
30 15
        $this->response = $response;
31 15
    }
32
33
    /**
34
     * Returns the response raw data.
35
     *
36
     * @return mixed
37
     */
38 1
    public function contents()
39
    {
40 1
        return $this->contents;
41
    }
42
43 13
    public function getResultCode()
44
    {
45 13
        return $this->contents->messages->resultCode;
46
    }
47
48
    /**
49
     * {@inheritdoc}
50
     */
51 13
    public function getMessages()
52
    {
53 13
        if (is_array($this->contents->messages->message)) {
54 7
            $messages = [];
55 7
            foreach ($this->contents->messages->message as $item) {
56 7
                $messages[] = new Message([
57 7
                  'code' => $item->code,
58 7
                  'text' => $item->text,
59 7
                ]);
60 7
            }
61 7
            return $messages;
62
        } else {
63
            return [
64 12
              new Message([
65 12
                  'code' => $this->contents->messages->message->code,
66 12
                  'text' => $this->contents->messages->message->text,
67 12
              ])
68 12
            ];
69
        }
70
    }
71
72
    /**
73
     * {@inheritdoc}
74
     */
75
    public function getMessageCode()
76
    {
77
        if (is_array($this->contents->transactionResponse->messages->message)) {
78
            return $this->contents->transactionResponse->messages->message[0]->code;
79
        } else {
80
            return $this->contents->transactionResponse->messages->message->code;
81
        }
82
    }
83
84 2
    public function getErrors()
85
    {
86 2
        if (!isset($this->contents->transactionResponse->errors)) {
87 1
            return [];
88
        }
89
90 1
        if (is_array($this->contents->transactionResponse->errors)) {
91 1
            $messages = [];
92 1
            foreach ($this->contents->transactionResponse->errors as $item) {
93 1
                $messages[] = new Message([
94 1
                  'code' => $item->errorCode,
95 1
                  'text' => $item->errorText,
96 1
                ]);
97 1
            }
98 1
            return $messages;
99
        } else {
100
            return [
101 1
              new Message([
102 1
                'code' => $this->contents->transactionResponse->errors->error->errorCode,
103 1
                'text' => $this->contents->transactionResponse->errors->error->errorText,
104 1
              ])
105 1
            ];
106
        }
107
    }
108
109 9
    public function __isset($name)
110
    {
111 9
        return isset($this->contents->$name);
112
    }
113
114 6
    public function __get($name)
115
    {
116 6
        return $this->contents->$name;
117
    }
118
}
119