From b2463cade8c3998d2b9b422645e96a2a2d6c61ef Mon Sep 17 00:00:00 2001 From: Linnzh Date: Wed, 8 Mar 2023 23:06:03 +0800 Subject: [PATCH] add Itexmo Driver --- publish/sms.php | 10 ++++++ src/Drivers/ItexmoDriver.php | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 src/Drivers/ItexmoDriver.php diff --git a/publish/sms.php b/publish/sms.php index 9768474..60e2b02 100644 --- a/publish/sms.php +++ b/publish/sms.php @@ -160,6 +160,16 @@ ], ], + 'itexmo' => [ + 'driver' => \HyperfExt\Sms\Drivers\ItexmoDriver::class, + 'config' => [ + 'email' => '', + 'password' => '', + 'api_code' => '', + 'sender_id' => '', + ], + ], + 'log' => [ 'driver' => \HyperfExt\Sms\Drivers\LogDriver::class, 'config' => [ diff --git a/src/Drivers/ItexmoDriver.php b/src/Drivers/ItexmoDriver.php new file mode 100644 index 0000000..36a4b6f --- /dev/null +++ b/src/Drivers/ItexmoDriver.php @@ -0,0 +1,63 @@ +to)) { + throw new \InvalidArgumentException('Empty phone number'); + } + + if (empty($smsable->content)) { + throw new \InvalidArgumentException('Empty message'); + } + + $recipient = $smsable->to->getCountryCode() === 63 ? $smsable->to->getNationalNumber() : $smsable->to->getFullNumberWithIDDPrefix('PH'); + $data = [ + 'Email' => $this->config->get('email'), + 'Password' => $this->config->get('password'), + 'Recipients' => [$recipient], + 'Message' => $smsable->content, + 'ApiCode' => $this->config->get('api_code'), + 'SenderId' => $this->config->get('sender_id'), + ]; + + try { + $response = $this->client->postJson(self::SERVER, $data); + $result = $response->toArray(); + + if ($result['Error'] != false) { + throw new DriverErrorException($result['Message'], $result['Code'] ?? -1, $response); + } + + return $result; + } catch (RequestException $e) { + $response = $e->getResponse(); + + return $response->toArray(); + } catch (\Throwable $e) { + throw new DriverErrorException($e->getMessage(), $e->getCode()); + } + } +} \ No newline at end of file