Skip to content

Commit 2aed8ff

Browse files
author
Aboozar Ghaffari
authored
Merge pull request #14 from miladkian/master
add support for multiple configurations for each adapter
2 parents cbbcab6 + a587178 commit 2aed8ff

File tree

9 files changed

+100
-53
lines changed

9 files changed

+100
-53
lines changed

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Laravel SMS Component
22
Laravel Package for dealing with Iranian SMS providers working with Laravel 5+
3+
Support multiple config for each provider
34

45
## Installation
56

@@ -29,9 +30,11 @@ php artisan vendor:publish --provider="Tartan\IranianSms\SmsServiceProvider" --t
2930
//using the default adapter
3031
resolve('iraniansms')->make()->send('0912xxxxxxx','this is test message');
3132

32-
//using kavenegar adapter
33+
//using kavenegar adapter with default config
3334
resolve('iraniansms')->make('kavenegar')->send('0912xxxxxxx','this is test message');
3435

36+
//using kavenegar adapter with sender2 config
37+
resolve('iraniansms')->make('kavenegar', 'sender2')->send('0912xxxxxxx','this is test message');
3538

3639
//using Facede
3740
use Iraniansms;
@@ -68,6 +71,11 @@ return [
6871
'gateway' => env('IRANIANSMS_KAVENEGAR_GATEWAY','http://api.kavenegar.com/v1/%s/%s/%s.json/'),
6972
'api_key' => env('IRANIANSMS_KAVENEGAR_APIKEY'),
7073
'sender' => env('IRANIANSMS_KAVENEGAR_SENDER'),
74+
'sender2' => [
75+
'gateway' => env('IRANIANSMS_KAVENEGAR_SENDER2_GATEWAY','http://api.kavenegar.com/v1/%s/%s/%s.json/'),
76+
'api_key' => env('IRANIANSMS_KAVENEGAR_SENDER2_APIKEY'),
77+
'sender' => env('IRANIANSMS_KAVENEGAR_SENDER2_SENDER'),
78+
],
7179
],
7280
'smsir' => [
7381
'gateway' => env('IRANIANSMS_SMSIR_GATEWAY', 'http://ip.sms.ir/SendMessage.ashx'),

src/Adapter/Discord.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@ class Discord extends AdapterAbstract implements AdapterInterface
66
{
77
public $url;
88

9-
public function __construct()
9+
public function __construct($account = null)
1010
{
11-
$this->url = config('iranian_sms.discord.url');
11+
if (is_null($account)) {
12+
$this->url = config('iranian_sms.discord.url');
13+
} else {
14+
$this->url = config("iranian_sms.discord.{$account}.url");
15+
}
1216
}
1317

1418
public function send(string $number, string $message)
@@ -22,7 +26,7 @@ public function send(string $number, string $message)
2226
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
2327
$data = curl_exec($ch);
2428

25-
if(curl_errno($ch)){
29+
if (curl_errno($ch)) {
2630
throw new Exception(curl_error($ch));
2731
}
2832

src/Adapter/Ghasedak.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,19 @@
77
class Ghasedak extends AdapterAbstract implements AdapterInterface
88
{
99
private $credential = [
10-
'api_key' => '',
11-
'sender' => ''
10+
'api_key' => '',
11+
'sender' => '',
1212
];
1313

14-
public function __construct()
14+
public function __construct($account = null)
1515
{
16-
$this->credential['api_key'] = config('iranian_sms.ghasedak.api_key');
17-
$this->credential['sender'] = config('iranian_sms.ghasedak.sender');
16+
if (is_null($account)) {
17+
$this->credential['api_key'] = config('iranian_sms.ghasedak.api_key');
18+
$this->credential['sender'] = config('iranian_sms.ghasedak.sender');
19+
} else {
20+
$this->credential['api_key'] = config("iranian_sms.ghasedak.{$account}.api_key");
21+
$this->credential['sender'] = config("iranian_sms.ghasedak.{$account}.sender");
22+
}
1823
}
1924

2025
public function send(string $number, string $message)

src/Adapter/KaveNegar.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,17 @@ class KaveNegar extends AdapterAbstract implements AdapterInterface
2626
100 => 'UNKNOWN_DESTINATION',
2727
];
2828

29-
public function __construct()
29+
public function __construct($account = null)
3030
{
31-
$this->gateway_url = config('iranian_sms.kavenegar.gateway');
32-
$this->credential['api_key'] = config('iranian_sms.kavenegar.api_key');
33-
$this->sender = config('iranian_sms.kavenegar.sender');
31+
if (is_null($account)) {
32+
$this->gateway_url = config('iranian_sms.kavenegar.gateway');
33+
$this->credential['api_key'] = config('iranian_sms.kavenegar.api_key');
34+
$this->sender = config('iranian_sms.kavenegar.sender');
35+
} else{
36+
$this->gateway_url = config("iranian_sms.kavenegar.{$account}.gateway");
37+
$this->credential['api_key'] = config("iranian_sms.kavenegar.{$account}.api_key");
38+
$this->sender = config("iranian_sms.kavenegar.{$account}.sender");
39+
}
3440
}
3541

3642
public function send(string $number, string $message)

src/Adapter/MehrAfraz.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,17 @@ class MehrAfraz extends AdapterAbstract implements AdapterInterface
2929
16 => 'BTS_ERROR',
3030
];
3131

32-
public function __construct()
32+
public function __construct($account = null)
3333
{
34-
$this->gateway_url = config('iranian_sms.mehrafraz.gateway');
35-
$this->credential['username'] = config('iranian_sms.mehrafraz.username');
36-
$this->credential['password'] = config('iranian_sms.mehrafraz.password');
34+
if (is_null($account)) {
35+
$this->gateway_url = config('iranian_sms.mehrafraz.gateway');
36+
$this->credential['username'] = config('iranian_sms.mehrafraz.username');
37+
$this->credential['password'] = config('iranian_sms.mehrafraz.password');
38+
} else {
39+
$this->gateway_url = config("iranian_sms.mehrafraz.{$account}.gateway");
40+
$this->credential['username'] = config("iranian_sms.mehrafraz.{$account}.username");
41+
$this->credential['password'] = config("iranian_sms.mehrafraz.{$account}.password");
42+
}
3743
}
3844

3945
public function send(String $number, String $message)

src/Adapter/ParsaSms.php

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,51 @@
88
class ParsaSms extends AdapterAbstract implements AdapterInterface
99
{
1010
private $credential = [
11-
'gateway' => '',
12-
'api_key' => '',
13-
'sender' => ''
11+
'gateway' => '',
12+
'api_key' => '',
13+
'sender' => '',
1414
];
1515

16-
public function __construct()
16+
public function __construct($account = null)
1717
{
18-
$this->credential['gateway'] = config('iranian_sms.parsasms.gateway');
19-
$this->credential['api_key'] = config('iranian_sms.parsasms.api_key');
20-
$this->credential['sender'] = config('iranian_sms.parsasms.sender');
18+
if (is_null($account)) {
19+
$this->credential['gateway'] = config('iranian_sms.parsasms.gateway');
20+
$this->credential['api_key'] = config('iranian_sms.parsasms.api_key');
21+
$this->credential['sender'] = config('iranian_sms.parsasms.sender');
22+
} else {
23+
$this->credential['gateway'] = config("iranian_sms.parsasms.{$account}.gateway");
24+
$this->credential['api_key'] = config("iranian_sms.parsasms.{$account}.api_key");
25+
$this->credential['sender'] = config("iranian_sms.parsasms.{$account}.sender");
26+
}
2127
}
2228

2329
public function send(String $number, String $message)
2430
{
25-
$number = $this->filterNumber($number);
26-
$sender = $this->credential['sender'];
31+
$number = $this->filterNumber($number);
32+
$sender = $this->credential['sender'];
2733
$api_key = $this->credential['api_key'];
2834

2935
$curl = curl_init();
3036
curl_setopt_array($curl, array(
31-
CURLOPT_URL => $this->credential['gateway'],
32-
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
33-
CURLOPT_CUSTOMREQUEST => "POST",
34-
CURLOPT_POSTFIELDS => "message=$message &sender=$sender &Receptor=$number",
37+
CURLOPT_URL => $this->credential['gateway'],
38+
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
39+
CURLOPT_CUSTOMREQUEST => "POST",
40+
CURLOPT_POSTFIELDS => "message=$message &sender=$sender &Receptor=$number",
3541
CURLOPT_CONNECTTIMEOUT => 5,
36-
CURLOPT_TIMEOUT => 5,
37-
CURLOPT_HTTPHEADER => array(
38-
"apikey: $api_key"),
42+
CURLOPT_TIMEOUT => 5,
43+
CURLOPT_HTTPHEADER => array(
44+
"apikey: $api_key",
45+
),
3946
CURLOPT_RETURNTRANSFER => true,
4047
));
4148

4249
$response = curl_exec($curl);
4350
curl_close($curl);
4451

45-
$response_array = json_decode($response,TRUE);
52+
$response_array = json_decode($response, true);
4653

47-
if (!(isset($response_array['result']) && $response_array['result'] == 'success')){
48-
throw new Exception("Error: ".$response);
54+
if (!(isset($response_array['result']) && $response_array['result'] == 'success')) {
55+
throw new Exception("Error: " . $response);
4956
}
5057

5158
return $response;

src/Adapter/Slack.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@ class Slack extends AdapterAbstract implements AdapterInterface
88
{
99
public $url;
1010

11-
public function __construct()
11+
public function __construct($account = null)
1212
{
13-
$this->url = config('iranian_sms.slack.url');
13+
if (is_null($account)) {
14+
$this->url = config('iranian_sms.slack.url');
15+
} else {
16+
$this->url = config("iranian_sms.slack.{$account}.url");
17+
}
1418
}
1519

1620
public function send(string $number, string $message)
@@ -26,7 +30,7 @@ public function send(string $number, string $message)
2630
curl_setopt($ch, CURLOPT_HEADER, array('Content-Type: application/json'));
2731
$data = curl_exec($ch);
2832

29-
if(curl_errno($ch)){
33+
if (curl_errno($ch)) {
3034
throw new Exception(curl_error($ch));
3135
}
3236

src/Adapter/SmsIr.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,19 @@ class SmsIr extends AdapterAbstract implements AdapterInterface
1212
'lineNo' => '',
1313
];
1414

15-
public function __construct()
15+
public function __construct($account = null)
1616
{
17-
$this->gateway_url = config('iranian_sms.smsir.gateway');
18-
$this->credential['user'] = config('iranian_sms.smsir.user');
19-
$this->credential['pass'] = config('iranian_sms.smsir.pass');
20-
$this->credential['lineNo'] = config('iranian_sms.smsir.line_no');
17+
if (is_null($account)) {
18+
$this->gateway_url = config('iranian_sms.smsir.gateway');
19+
$this->credential['user'] = config('iranian_sms.smsir.user');
20+
$this->credential['pass'] = config('iranian_sms.smsir.pass');
21+
$this->credential['lineNo'] = config('iranian_sms.smsir.line_no');
22+
} else {
23+
$this->gateway_url = config("iranian_sms.smsir.{$account}.gateway");
24+
$this->credential['user'] = config("iranian_sms.smsir.{$account}.user");
25+
$this->credential['pass'] = config("iranian_sms.smsir.{$account}.pass");
26+
$this->credential['lineNo'] = config("iranian_sms.smsir.{$account}.line_no");
27+
}
2128
}
2229

2330
public function send(string $number, string $message)

src/Factory.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,36 @@
1414
class Factory
1515
{
1616

17-
public function make($adapter = '')
17+
public function make($adapter = '', $account = null)
1818
{
1919

2020
if ($adapter == '') {
2121
$adapter = config('iranian_sms.default');
2222
}
2323
switch ($adapter) {
2424
case 'mehrafraz':
25-
return new MehrAfraz();
25+
return new MehrAfraz($account);
2626
break;
2727
case 'kavenegar':
28-
return new KaveNegar();
28+
return new KaveNegar($account);
2929
break;
3030
case 'smsir':
31-
return new SmsIr();
31+
return new SmsIr($account);
3232
break;
3333
case 'log':
34-
return new SmsLog();
34+
return new SmsLog($account);
3535
break;
3636
case 'slack':
37-
return new Slack();
37+
return new Slack($account);
3838
break;
3939
case 'ghasedak':
40-
return new Ghasedak();
40+
return new Ghasedak($account);
4141
break;
4242
case 'discord':
43-
return new Discord();
43+
return new Discord($account);
4444
break;
4545
case 'parsasms':
46-
return new ParsaSms();
46+
return new ParsaSms($account);
4747
break;
4848
default:
4949
throw new Exception('Adapter not defined');

0 commit comments

Comments
 (0)