Skip to content

Commit 508c979

Browse files
authored
fix: handling of default values (#15)
1 parent e3b9863 commit 508c979

File tree

2 files changed

+39
-11
lines changed

2 files changed

+39
-11
lines changed

src/SmsapiClient.php

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ public function send(SmsapiMessage $message)
5959
*/
6060
public function sendSms(SmsapiSmsMessage $message)
6161
{
62-
$data = $message->data + $this->defaults;
62+
$data = $this->mergeDefaults($message->data, 'sms');
63+
6364
$sms = (new SmsFactory($this->proxy, $this->client))->actionSend();
6465
if (isset($data['content'])) {
6566
$sms->setText($data['content']);
@@ -116,7 +117,8 @@ public function sendSms(SmsapiSmsMessage $message)
116117
*/
117118
public function sendMms(SmsapiMmsMessage $message)
118119
{
119-
$data = $message->data + $this->defaults;
120+
$data = $this->mergeDefaults($message->data, 'mms');
121+
120122
$mms = (new MmsFactory($this->proxy, $this->client))->actionSend();
121123
$mms->setSubject($data['subject']);
122124
$mms->setSmil($data['smil']);
@@ -148,7 +150,8 @@ public function sendMms(SmsapiMmsMessage $message)
148150
*/
149151
public function sendVms(SmsapiVmsMessage $message)
150152
{
151-
$data = $message->data + $this->defaults;
153+
$data = $this->mergeDefaults($message->data, 'vms');
154+
152155
$vms = (new VmsFactory($this->proxy, $this->client))->actionSend();
153156
if (isset($data['file'])) {
154157
$vms->setFile($data['file']);
@@ -189,4 +192,20 @@ public function sendVms(SmsapiVmsMessage $message)
189192

190193
return $vms->execute();
191194
}
195+
196+
/**
197+
* Merge defaults into message data.
198+
*
199+
* @param array $data message data
200+
* @param string $type sms, mms, vms
201+
* @return array defaults merged with message data
202+
*/
203+
private function mergeDefaults(array $data, string $type)
204+
{
205+
if (array_key_exists($type, $this->defaults)) {
206+
$data += $this->defaults['sms'];
207+
}
208+
209+
return $data;
210+
}
192211
}

src/SmsapiServiceProvider.php

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,28 @@ public function boot()
2525
$client->setPasswordHash($auth['credentials']['password']);
2626
}
2727
$defaults = $config['defaults'] + ['sms' => [], 'mms' => [], 'vms' => []];
28+
29+
$defaults['sms'] = Arr::only($defaults['sms'], [
30+
'from', 'fast', 'flash', 'encoding', 'normalize', 'nounicode', 'single',
31+
]);
32+
33+
$defaults['mms'] = Arr::only($defaults['mms'], [
34+
]);
35+
36+
$defaults['vms'] = Arr::only($defaults['vms'], [
37+
'from', 'tries', 'interval', 'tts_lector', 'skip_gsm',
38+
]);
39+
2840
if (! empty($defaults['common'])) {
2941
$defaults['common'] = Arr::only($defaults['common'], [
3042
'notify_url', 'partner', 'test',
3143
]);
32-
$defaults['sms'] = Arr::only($defaults['sms'] + $defaults['common'], [
33-
'from', 'fast', 'flash', 'encoding', 'normalize', 'nounicode', 'single',
34-
]);
35-
$defaults['mms'] = Arr::only($defaults['mms'] + $defaults['common'], [
36-
]);
37-
$defaults['vms'] = Arr::only($defaults['vms'] + $defaults['common'], [
38-
'from', 'tries', 'interval', 'tts_lector', 'skip_gsm',
39-
]);
44+
45+
$defaults['sms'] += $defaults['common'];
46+
$defaults['mms'] += $defaults['common'];
47+
$defaults['vms'] += $defaults['common'];
4048
}
49+
4150
$defaults = Arr::only($defaults, ['sms', 'mms', 'vms']);
4251
$defaults = array_map(function (array $defaults) {
4352
return array_filter($defaults, function ($value) {

0 commit comments

Comments
 (0)