Skip to content

Commit f2c34a6

Browse files
committed
- switch from normal general exceptions to specific exceptions
1 parent aa95263 commit f2c34a6

File tree

3 files changed

+48
-3
lines changed

3 files changed

+48
-3
lines changed

src/MailQ/Connector.php

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace MailQ;
44

5+
use MailQ\Exceptions\MailQException;
6+
use MailQ\Exceptions\UnresolvedMxDomainException;
7+
58
class Connector {
69

710
private $apiKey;
@@ -86,11 +89,32 @@ private function createResponse($ch,$response) {
8689

8790
function processError(Response $responseData,$response) {
8891
switch ($responseData->getHttpCode()) {
89-
case 401: throw new \Exception($responseData->getHttpCode()." Invalid API key.");
90-
case 405: throw new \Exception($responseData->getHttpCode()." Method not allowed.");
91-
default: throw new \Exception($responseData->getHttpCode().": ".$response);
92+
case 401: throw new MailQException("Invalid API key.",$responseData->getHttpCode());
93+
case 405: throw new MailQException(" Method not allowed.",$responseData->getHttpCode());
94+
default: $this->handleDefaultException($responseData,$response);
9295
}
9396
}
97+
98+
private function handleDefaultException(Response $responseData,$response) {
99+
$errorData = json_decode($response);
100+
if ($errorData) {
101+
if (isset($errorData->error)) {
102+
$this->createSpecificException($errorData->error);
103+
}
104+
}
105+
else {
106+
throw new MailQException("Unknonw exception",$responseData->getHttpCode());
107+
}
108+
}
109+
110+
private function createSpecificException($errorData) {
111+
if ($errorData->message == 'Could not resolve MX domain.') {
112+
throw new UnresolvedMxDomainException($errorData->message,$errorData->code);
113+
}
114+
else {
115+
throw new MailQException($errorData->message,$errorData->code);
116+
}
117+
}
94118

95119
/**
96120
* Storing headers from curl
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace MailQ\Exceptions;
4+
5+
class MailQException extends \Exception {
6+
7+
public function __construct($message = "", $code = 0) {
8+
parent::__construct($message, $code);
9+
}
10+
11+
12+
13+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace MailQ\Exceptions;
4+
5+
class UnresolvedMxDomainException extends MailQException {
6+
7+
8+
}

0 commit comments

Comments
 (0)