Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
arif98741 committed Sep 15, 2024
2 parents bcd86ab + a499136 commit cdaa9e0
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 0 deletions.
1 change: 1 addition & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ echo $status = $sender->send();
| CustomGateway | provide necessary token/api_key/others based on requirements | - | Done | Be careful using this and test based on several scenario | - |
| DianaHost | api_key, type, senderid | - | Done | - | - |
| DianaSMS | ApiKey, ClientId, SenderId | - | Done | - | - |
| DhorolaSms | apikey, sender | - | Done | - | - |
| DurjoySoft | ApiKey, SenderID | - | Done | - | - |
| Esms | api_token, sender_id | - | Done | - | - |
| ElitBuzz | api_key, type, senderid | - | Done | not tested yet in live | - |
Expand Down
5 changes: 5 additions & 0 deletions src/Config/sms.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
use Xenon\LaravelBDSms\Provider\Brilliant;
use Xenon\LaravelBDSms\Provider\BulkSmsBD;
use Xenon\LaravelBDSms\Provider\CustomGateway;
use Xenon\LaravelBDSms\Provider\DhorolaSms;
use Xenon\LaravelBDSms\Provider\DianaHost;
use Xenon\LaravelBDSms\Provider\DianaSms;
use Xenon\LaravelBDSms\Provider\DnsBd;
Expand Down Expand Up @@ -142,6 +143,10 @@
'ApiKey' => env('SMS_DIANA_SMS_API_KEY', ''),
'ClientId' => env('SMS_DIANA_SMS_CLIENT_ID', ''),
],
DhorolaSms::class => [
'apikey' => env('SMS_DHOROLA_SMS_APIKEY', ''),
'sender' => env('SMS_DHOROLA_SMS_SENDERID', ''),
],
DnsBd::class => [],
DurjoySoft::class => [
'ApiKey' => env('SMS_DURJOYSOFT_SMS_API_KEY', ''),
Expand Down
93 changes: 93 additions & 0 deletions src/Provider/DhorolaSms.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<?php
/*
* Last Modified: 09/16/24, 12:14 AM
* Copyright (c) 2024
* -created by Ariful Islam
* -All Rights Preserved By
* -If you have any query then knock me at
* arif98741@gmail.com
* See my profile @ https://github.com/arif98741
*/

namespace Xenon\LaravelBDSms\Provider;

use Xenon\LaravelBDSms\Handler\ParameterException;
use Xenon\LaravelBDSms\Handler\RenderException;
use Xenon\LaravelBDSms\Request;
use Xenon\LaravelBDSms\Sender;

/**
* Dhorola Class
* api endpoint https://api.dhorolasms.net/smsapiv3
*/
class DhorolaSms extends AbstractProvider
{
private string $apiEndpoint = 'https://api.dhorolasms.net/smsapiv3';

/**
* DhorolaSms constructor.
* @param Sender $sender
*/
public function __construct(Sender $sender)
{
$this->senderObject = $sender;
}

/**
* Send Request To Api and Send Message
* @throws RenderException
*/
public function sendRequest()
{
$number = $this->senderObject->getMobile();
$text = $this->senderObject->getMessage();
$config = $this->senderObject->getConfig();
$queue = $this->senderObject->getQueue();
$queueName = $this->senderObject->getQueueName();
$tries = $this->senderObject->getTries();
$backoff = $this->senderObject->getBackoff();

$query = [
'apikey' => $config['apikey'],
'sender' => $config['sender'],
'msisdn' => $number,
'smstext' => $text,
];

if (is_array($number)) {
$query['msisdn'] = implode(',', $number);
}

$headers = [
'Content-Type' => 'application/json',
'verify' => false,
];
$requestObject = new Request($this->apiEndpoint, $query, $queue, [], $queueName, $tries, $backoff);
$requestObject->setHeaders($headers)->setContentTypeJson(true);
$response = $requestObject->post();
if ($queue) {
return true;
}

$body = $response->getBody();
$smsResult = $body->getContents();

$data['number'] = $number;
$data['message'] = $text;
return $this->generateReport($smsResult, $data)->getContent();
}

/**
* @throws ParameterException
*/
public function errorException()
{
if (!array_key_exists('apikey', $this->senderObject->getConfig())) {
throw new ParameterException('apikey key is absent in configuration');
}
if (!array_key_exists('sender', $this->senderObject->getConfig())) {
throw new ParameterException('sender key is absent in configuration');
}

}
}

0 comments on commit cdaa9e0

Please sign in to comment.