Skip to content
This repository has been archived by the owner on Jul 8, 2022. It is now read-only.

Commit

Permalink
check phone number feature -> php5.4
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaspijak committed Apr 27, 2018
1 parent 6202720 commit 146605d
Show file tree
Hide file tree
Showing 7 changed files with 99 additions and 3 deletions.
3 changes: 2 additions & 1 deletion composer.json
Expand Up @@ -20,7 +20,8 @@
"bulkgate/utils": "^1.0"
},
"require-dev": {
"nette/tester": "~2.0"
"nette/tester": "~2.0",
"tracy/tracy": "^2.4"
},
"autoload": {
"classmap": ["src/"]
Expand Down
11 changes: 10 additions & 1 deletion src/Sms/ISender.php
Expand Up @@ -10,6 +10,7 @@
use BulkGate\Message\Response;
use BulkGate\Sms\SenderSettings\ISenderSettings;


interface ISender
{
const MESSAGE = 'message';
Expand Down Expand Up @@ -53,5 +54,13 @@ public function setDefaultCountry($country);
* @param IMessage $message
* @return Response
*/
public function send(IMessage $message);
public function send(IMessage $message);


/**
* @param array|Message\PhoneNumber|string $phoneNumbers
* @param null|string $iso
* @return Response
*/
public function checkPhoneNumbers($phoneNumbers, $iso = null);
}
1 change: 1 addition & 0 deletions src/Sms/Message/PhoneNumber.php
Expand Up @@ -48,6 +48,7 @@ public function phoneNumber($phone_number)
/**
* @param null|string $iso
* @return PhoneNumber
* @throws InvalidPhoneNumberException
*/
public function iso($iso)
{
Expand Down
50 changes: 50 additions & 0 deletions src/Sms/Sender.php
Expand Up @@ -76,6 +76,11 @@ public function setSenderSettings(ISenderSettings $senderSettings)
}


/**
* @param string $country
* @return ISender
* @throws InvalidIsoCodeException
*/
public function setDefaultCountry($country)
{
if(preg_match('~^[a-zA-Z]{2}$~', (string) $country))
Expand Down Expand Up @@ -103,6 +108,51 @@ public function send(IMessage $message)
], true));
}


/**
* @param array|Message\PhoneNumber|string $phoneNumbers
* @param null|string $iso
* @return Response
* @throws BulkGate\Exception
*/
public function checkPhoneNumbers($phoneNumbers, $iso = null)
{
$data = [];

if(is_string($phoneNumbers))
{
$data[] = new BulkGate\Sms\Message\PhoneNumber($phoneNumbers, $iso);
}
elseif(is_array($phoneNumbers))
{
foreach($phoneNumbers as $phoneNumber)
{
if($phoneNumber instanceof BulkGate\Sms\Message\PhoneNumber)
{
$data[] = $phoneNumber;
}
elseif(is_string($phoneNumber))
{
$data[] = new BulkGate\Sms\Message\PhoneNumber($phoneNumber, $iso);
}
}
}
elseif ($phoneNumbers instanceof BulkGate\Sms\Message\PhoneNumber)
{
$data[] = $phoneNumbers;
}

if(count($data) > 0)
{
return $this->connection->send(new Request('check-phone-numbers', ['phoneNumbers' => $data], true));
}
throw new InvalidPhoneNumbersException("Request does not contain any phone numbers (int|string|array|BulkGate\\Sms\\Message\\PhoneNumber)");
}


/**
* @param IMessage $message
*/
private function fillDefaultCountryIso(IMessage $message)
{
if($this->defaultCountry !== null)
Expand Down
4 changes: 4 additions & 0 deletions src/Sms/exceptions.php
Expand Up @@ -20,3 +20,7 @@ class InvalidMessageException extends SmsException
class InvalidIsoCodeException extends SmsException
{
}

class InvalidPhoneNumbersException extends SmsException
{
}
30 changes: 30 additions & 0 deletions tests/Sms/Sender.phpt
Expand Up @@ -109,3 +109,33 @@ Assert::equal([(object) [
'response' => null
]], $connection->getInfo(true));

$sender->checkPhoneNumbers("420603123456");

Assert::equal([(object) [
'action' => 'check-phone-numbers',
'request' => [
'phoneNumbers' => [new Message\PhoneNumber('420603123456')],
],
'response' => null
]], $connection->getInfo(true));

$sender->checkPhoneNumbers(new Message\PhoneNumber("420603123457"));

Assert::equal([(object) [
'action' => 'check-phone-numbers',
'request' => [
'phoneNumbers' => [new Message\PhoneNumber('420603123457')],
],
'response' => null
]], $connection->getInfo(true));

$sender->checkPhoneNumbers([new Message\PhoneNumber("420603123458"), '420603123459']);

Assert::equal([(object) [
'action' => 'check-phone-numbers',
'request' => [
'phoneNumbers' => [new Message\PhoneNumber('420603123458'), new Message\PhoneNumber('420603123459')],
],
'response' => null
]], $connection->getInfo(true));

3 changes: 2 additions & 1 deletion tests/bootstrap.php
Expand Up @@ -3,11 +3,12 @@
// The Nette Tester command-line runner can be
// invoked through the command: ../vendor/bin/tester .

if (!require __DIR__ . '/../../../../vendor/autoload.php') {
if (@!include __DIR__ . '/../vendor/autoload.php') {
echo 'Install Nette Tester using `composer install`';
exit(1);
}


Tester\Environment::setup();
date_default_timezone_set('Europe/Prague');

Expand Down

0 comments on commit 146605d

Please sign in to comment.