Completed
Push — master ( 5c498e...edddde )
by Hilmi Erdem
01:29
created

JetSmsXmlResponse   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 117
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 10
lcom 2
cbo 0
dl 0
loc 117
ccs 23
cts 23
cp 1
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 2
A isSuccessful() 0 4 1
A message() 0 4 2
A groupId() 0 4 1
A messageReportIdentifiers() 0 6 1
A statusCode() 0 4 1
A status() 0 6 2
1
<?php
2
3
namespace Erdemkeren\JetSms\Http\Responses;
4
5
use BadMethodCallException;
6
7
/**
8
 * Class JetSmsXmlResponse.
9
 */
10
class JetSmsXmlResponse implements JetSmsResponseInterface
11
{
12
    /**
13
     * The predefined status codes of the JetSms Xml api.
14
     *
15
     * @var array
16
     */
17
    protected static $statuses = [
18
        '00' => 'Success',
19
        '10' => 'Invalid client credentials',
20
        '11' => 'Insufficient funds',
21
        '20' => 'Invalid xml',
22
        '81' => 'Out of limits',
23
        '90' => 'System error',
24
    ];
25
26
    /**
27
     * The JetSms Http status code.
28
     *
29
     * @var string
30
     */
31
    protected $statusCode;
32
33
    /**
34
     * The message of the response if any.
35
     *
36
     * @var string|null
37
     */
38
    protected $message;
39
40
    /**
41
     * The group identifier.
42
     *
43
     * @var string|null
44
     */
45
    protected $groupId;
46
47
    /**
48
     * XmlJetSmsHttpResponse constructor.
49
     *
50
     * @param  string $data
51
     */
52 9
    public function __construct($data)
53
    {
54 9
        $response = explode(" ", $data);
55 9
        $this->statusCode = array_shift($response);
56
57 9
        if (! $this->isSuccessful()) {
58 1
            $this->message = implode(' ', $response);
59 1
        } else {
60 8
            $this->groupId =  array_shift($response);
61
        }
62 9
    }
63
64
    /**
65
     * Determine if the operation was successful or not.
66
     *
67
     * @return bool
68
     */
69 9
    public function isSuccessful()
70
    {
71 9
        return $this->statusCode === '00';
72
    }
73
74
    /**
75
     * Get the message of the response.
76
     *
77
     * @return null|string
78
     */
79 2
    public function message()
80
    {
81 2
        return trim($this->message) ?: null;
82
    }
83
84
    /**
85
     * Get the group identifier from the response.
86
     *
87
     * @return string
88
     */
89 1
    public function groupId()
90
    {
91 1
        return $this->groupId;
92
    }
93
94
    /**
95
     * Get the message report identifiers for the messages sent.
96
     * Message report id returns -1 if invalid Msisdns, -2 if invalid message text.
97
     */
98 1
    public function messageReportIdentifiers()
99
    {
100 1
        throw new BadMethodCallException(
101
            "JetSms XML API responses do not return message identifiers. Use groupId instead."
102 1
        );
103
    }
104
105
    /**
106
     * Get the status code.
107
     *
108
     * @return string
109
     */
110 2
    public function statusCode()
111
    {
112 2
        return $this->statusCode;
113
    }
114
115
    /**
116
     * Get the string representation of the status.
117
     *
118
     * @return string
119
     */
120 1
    public function status()
121
    {
122 1
        return array_key_exists($this->statusCode(), self::$statuses)
123 1
            ? self::$statuses[$this->statusCode()]
124 1
            : 'Unknown';
125
    }
126
}
127