Skip to content

Commit 0190e80

Browse files
author
marcel corso gonzalez
authored
Merge pull request #111 from paolobueno/numbers
Add client implementation for Numbers API, support 7.0
2 parents 11950ca + 0e8f398 commit 0190e80

33 files changed

+502
-42
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
vendor/
2-
composer.lock
2+
composer*.lock
33
composer.phar
44
.DS_Store
55
.idea/

.travis.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
language: php
22
dist: xenial
33
php:
4+
- 7.0
5+
- 7.1
6+
- 7.2
47
- 7.3
58
- 7.4
69

710
before_script:
11+
- if [[ ${TRAVIS_PHP_VERSION} == 7.0 ]]; then export COMPOSER=composer-7-0.json; fi
812
- composer install
913

10-
script: phpunit --verbose
14+
script: php ./vendor/bin/phpunit --verbose

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Requirements
1111

1212
- [Sign up](https://www.messagebird.com/en/signup) for a free MessageBird account
1313
- Create a new access_key in the developers sections
14-
- MessageBird API client for PHP requires PHP >= 5.4.
14+
- MessageBird API client for PHP requires PHP >= 7.0.
1515

1616
Installation
1717
-----

composer-7-0.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"name": "messagebird/php-rest-api",
3+
"description": "MessageBird REST API client for PHP",
4+
"type": "library",
5+
"homepage": "https://github.com/messagebird/php-rest-api",
6+
"license": "BSD-2-Clause",
7+
"authors": [
8+
{
9+
"name": "MessageBird",
10+
"email": "[email protected]"
11+
}
12+
],
13+
"require": {
14+
"php": ">=7.0",
15+
"ext-curl": "*"
16+
},
17+
"require-dev": {
18+
"phpunit/phpunit": "^6"
19+
},
20+
"autoload": {
21+
"psr-4": {
22+
"MessageBird\\": "src/MessageBird/"
23+
}
24+
}
25+
}

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
}
1212
],
1313
"require": {
14-
"php": ">=7.2.0",
14+
"php": ">=7.0",
1515
"ext-curl": "*"
1616
},
1717
"require-dev": {
18-
"phpunit/phpunit": "^8"
18+
"phpunit/phpunit": "^7.5"
1919
},
2020
"autoload": {
2121
"psr-4": {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
require_once(__DIR__ . '/../autoload.php');
4+
5+
$MessageBird = new \MessageBird\Client(getenv('MESSAGEBIRD_API_KEY'));
6+
7+
try {
8+
$phoneNumbers = $MessageBird->availablePhoneNumbers->getList("nl", array());
9+
var_dump($phoneNumbers);
10+
11+
} catch (\MessageBird\Exceptions\AuthenticateException $e) {
12+
var_dump($e->getMessage());
13+
// That means that your accessKey is unknown
14+
print("wrong login\n");
15+
16+
} catch (\Exception $e) {
17+
var_dump($e->getMessage());
18+
19+
}
20+
?>

examples/phone-numbers-create.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
require_once(__DIR__ . '/../autoload.php');
4+
5+
$MessageBird = new \MessageBird\Client(getenv('MESSAGEBIRD_API_KEY')); // Set your own API access key here.
6+
$NumberPurchaseRequest = new \MessageBird\Objects\NumberPurchaseRequest();
7+
$NumberPurchaseRequest->number = '31612345678';
8+
$NumberPurchaseRequest->countryCode = 'NL';
9+
$NumberPurchaseRequest->billingIntervalMonths = 1;
10+
11+
try {
12+
$NumberPurchaseRequestResult = $MessageBird->phoneNumbers->create($NumberPurchaseRequest);
13+
var_dump($NumberPurchaseRequestResult);
14+
} catch (\MessageBird\Exceptions\AuthenticateException $e) {
15+
// That means that your accessKey is unknown
16+
print("wrong login\n");
17+
18+
} catch (\Exception $e) {
19+
echo $e->getMessage();
20+
}

examples/phone-numbers-delete.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
require_once(__DIR__ . '/../autoload.php');
4+
5+
$MessageBird = new \MessageBird\Client(getenv('MESSAGEBIRD_API_KEY')); // Set your own API access key here.
6+
7+
try {
8+
$deleted = $MessageBird->phoneNumbers->delete('31612345678');
9+
var_dump('Deleted: ' . $deleted);
10+
} catch (\MessageBird\Exceptions\AuthenticateException $e) {
11+
// That means that your accessKey is unknown
12+
print("wrong login\n");
13+
14+
} catch (\Exception $e) {
15+
echo $e->getMessage();
16+
}

examples/phone-numbers-update.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
require_once(__DIR__ . '/../autoload.php');
4+
5+
$MessageBird = new \MessageBird\Client(getenv('MESSAGEBIRD_API_KEY')); // Set your own API access key here.
6+
$Number = new \MessageBird\Objects\Number();
7+
$Number->tags = array('tag1');
8+
9+
try {
10+
$NumberResult = $MessageBird->phoneNumbers->update($Number, '31612345678');
11+
var_dump($NumberResult);
12+
} catch (\MessageBird\Exceptions\AuthenticateException $e) {
13+
// That means that your accessKey is unknown
14+
print("wrong login\n");
15+
16+
} catch (\Exception $e) {
17+
echo $e->getMessage();
18+
}

examples/phone-numbers-view.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
require_once(__DIR__ . '/../autoload.php');
4+
5+
$MessageBird = new \MessageBird\Client(getenv('MESSAGEBIRD_API_KEY')); // Set your own API access key here.
6+
7+
try {
8+
$phoneNumbers = $MessageBird->phoneNumbers->getList();
9+
var_dump($phoneNumbers);
10+
11+
} catch (\MessageBird\Exceptions\AuthenticateException $e) {
12+
// That means that your accessKey is unknown
13+
print("wrong login\n");
14+
15+
} catch (\Exception $e) {
16+
var_dump($e->getMessage());
17+
18+
}
19+
?>

src/MessageBird/Client.php

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class Client
1414
const CONVERSATIONSAPI_ENDPOINT = 'https://conversations.messagebird.com/v1';
1515
const VOICEAPI_ENDPOINT = 'https://voice.messagebird.com';
1616
const PARTNER_ACCOUNT_ENDPOINT = 'https://partner-accounts.messagebird.com';
17+
const NUMBERSAPI_ENDPOINT = 'https://numbers.messagebird.com/v1';
1718

1819
const ENABLE_CONVERSATIONSAPI_WHATSAPP_SANDBOX = 'ENABLE_CONVERSATIONSAPI_WHATSAPP_SANDBOX';
1920
const CONVERSATIONSAPI_WHATSAPP_SANDBOX_ENDPOINT = 'https://whatsapp-sandbox.messagebird.com/v1';
@@ -65,6 +66,11 @@ class Client
6566
*/
6667
public $lookup;
6768

69+
/**
70+
* @var Resources\AvailableNumbers
71+
*/
72+
public $availableNumbers;
73+
6874
/**
6975
* @var Resources\LookupHlr
7076
*/
@@ -120,6 +126,16 @@ class Client
120126
*/
121127
public $voiceTranscriptions;
122128

129+
/**
130+
* @var Resources\PhoneNumbers
131+
*/
132+
public $phoneNumbers;
133+
134+
/**
135+
* @var Resources\AvailablePhoneNumbers
136+
*/
137+
public $availablePhoneNumbers;
138+
123139
/**
124140
* @var Resources\Voice\Webhooks
125141
*/
@@ -184,12 +200,14 @@ public function __construct($accessKey = null, Common\HttpClient $httpClient = n
184200
'X-MessageBird-Version' => '20170314',
185201
));
186202
$this->partnerAccountClient = new Common\HttpClient(self::PARTNER_ACCOUNT_ENDPOINT);
203+
$this->numbersAPIClient = new Common\HttpClient(self::NUMBERSAPI_ENDPOINT);
187204
} else {
188205
$this->ChatAPIHttpClient = $httpClient;
189206
$this->ConversationsAPIHttpClient = $httpClient;
190207
$this->HttpClient = $httpClient;
191208
$this->VoiceAPIHttpClient = $httpClient;
192209
$this->partnerAccountClient = $httpClient;
210+
$this->numbersAPIClient = $httpClient;
193211
}
194212

195213
$this->HttpClient->addUserAgentString('MessageBird/ApiClient/' . self::CLIENT_VERSION);
@@ -207,34 +225,39 @@ public function __construct($accessKey = null, Common\HttpClient $httpClient = n
207225
$this->partnerAccountClient->addUserAgentString('MessageBird/ApiClient/' . self::CLIENT_VERSION);
208226
$this->partnerAccountClient->addUserAgentString($this->getPhpVersion());
209227

228+
$this->numbersAPIClient->addUserAgentString('MessageBird/ApiClient/' . self::CLIENT_VERSION);
229+
$this->numbersAPIClient->addUserAgentString($this->getPhpVersion());
230+
210231
if ($accessKey !== null) {
211232
$this->setAccessKey($accessKey);
212233
}
213234

214-
$this->messages = new Resources\Messages($this->HttpClient);
215-
$this->hlr = new Resources\Hlr($this->HttpClient);
216-
$this->verify = new Resources\Verify($this->HttpClient);
217-
$this->balance = new Resources\Balance($this->HttpClient);
218-
$this->voicemessages = new Resources\VoiceMessage($this->HttpClient);
219-
$this->lookup = new Resources\Lookup($this->HttpClient);
220-
$this->lookupHlr = new Resources\LookupHlr($this->HttpClient);
221-
$this->chatMessages = new Resources\Chat\Message($this->ChatAPIHttpClient);
222-
$this->chatChannels = new Resources\Chat\Channel($this->ChatAPIHttpClient);
223-
$this->chatPlatforms = new Resources\Chat\Platform($this->ChatAPIHttpClient);
224-
$this->chatContacts = new Resources\Chat\Contact($this->ChatAPIHttpClient);
225-
$this->voiceCallFlows = new Resources\Voice\CallFlows($this->VoiceAPIHttpClient);
226-
$this->voiceCalls = new Resources\Voice\Calls($this->VoiceAPIHttpClient);
227-
$this->voiceLegs = new Resources\Voice\Legs($this->VoiceAPIHttpClient);
228-
$this->voiceRecordings = new Resources\Voice\Recordings($this->VoiceAPIHttpClient);
229-
$this->voiceTranscriptions = new Resources\Voice\Transcriptions($this->VoiceAPIHttpClient);
230-
$this->voiceWebhooks = new Resources\Voice\Webhooks($this->VoiceAPIHttpClient);
231-
$this->mmsMessages = new Resources\MmsMessages($this->HttpClient);
232-
$this->contacts = new Resources\Contacts($this->HttpClient);
233-
$this->groups = new Resources\Groups($this->HttpClient);
234-
$this->conversations = new Resources\Conversation\Conversations($this->ConversationsAPIHttpClient);
235+
$this->messages = new Resources\Messages($this->HttpClient);
236+
$this->hlr = new Resources\Hlr($this->HttpClient);
237+
$this->verify = new Resources\Verify($this->HttpClient);
238+
$this->balance = new Resources\Balance($this->HttpClient);
239+
$this->voicemessages = new Resources\VoiceMessage($this->HttpClient);
240+
$this->lookup = new Resources\Lookup($this->HttpClient);
241+
$this->lookupHlr = new Resources\LookupHlr($this->HttpClient);
242+
$this->chatMessages = new Resources\Chat\Message($this->ChatAPIHttpClient);
243+
$this->chatChannels = new Resources\Chat\Channel($this->ChatAPIHttpClient);
244+
$this->chatPlatforms = new Resources\Chat\Platform($this->ChatAPIHttpClient);
245+
$this->chatContacts = new Resources\Chat\Contact($this->ChatAPIHttpClient);
246+
$this->voiceCallFlows = new Resources\Voice\CallFlows($this->VoiceAPIHttpClient);
247+
$this->voiceCalls = new Resources\Voice\Calls($this->VoiceAPIHttpClient);
248+
$this->voiceLegs = new Resources\Voice\Legs($this->VoiceAPIHttpClient);
249+
$this->voiceRecordings = new Resources\Voice\Recordings($this->VoiceAPIHttpClient);
250+
$this->voiceTranscriptions = new Resources\Voice\Transcriptions($this->VoiceAPIHttpClient);
251+
$this->voiceWebhooks = new Resources\Voice\Webhooks($this->VoiceAPIHttpClient);
252+
$this->mmsMessages = new Resources\MmsMessages($this->HttpClient);
253+
$this->contacts = new Resources\Contacts($this->HttpClient);
254+
$this->groups = new Resources\Groups($this->HttpClient);
255+
$this->conversations = new Resources\Conversation\Conversations($this->ConversationsAPIHttpClient);
235256
$this->conversationMessages = new Resources\Conversation\Messages($this->ConversationsAPIHttpClient);
236257
$this->conversationWebhooks = new Resources\Conversation\Webhooks($this->ConversationsAPIHttpClient);
237-
$this->partnerAccounts = new Resources\PartnerAccount\Accounts($this->partnerAccountClient);
258+
$this->partnerAccounts = new Resources\PartnerAccount\Accounts($this->partnerAccountClient);
259+
$this->phoneNumbers = new Resources\PhoneNumbers($this->numbersAPIClient);
260+
$this->availablePhoneNumbers = new Resources\AvailablePhoneNumbers($this->numbersAPIClient);
238261
}
239262

240263
/**
@@ -249,6 +272,7 @@ public function setAccessKey ($accessKey)
249272
$this->HttpClient->setAuthentication($Authentication);
250273
$this->VoiceAPIHttpClient->setAuthentication($Authentication);
251274
$this->partnerAccountClient->setAuthentication($Authentication);
275+
$this->numbersAPIClient->setAuthentication($Authentication);
252276
}
253277

254278
/**

src/MessageBird/Objects/Number.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
4+
namespace MessageBird\Objects;
5+
6+
/**
7+
* Class Number
8+
*
9+
* Represents a specific phone number
10+
*
11+
* @package MessageBird\Objects
12+
*/
13+
class Number extends Base
14+
{
15+
/**
16+
* The phone number in E.164 format without the prefixed plus-sign.
17+
* @var string
18+
*/
19+
public $number;
20+
21+
/**
22+
* The Number's country
23+
* @var string
24+
*/
25+
public $country;
26+
27+
/**
28+
* The country code for this number in ISO 3166-1 alpha-2 format.
29+
* @var string
30+
*/
31+
public $region;
32+
33+
/**
34+
* Finer-grained locality for this Number
35+
* @var string
36+
*/
37+
public $locality;
38+
39+
/**
40+
* The available features for this Number
41+
* @var array
42+
*/
43+
public $features;
44+
45+
/**
46+
* Additional user-provided tags for this Number
47+
* @var array
48+
*/
49+
public $tags = [];
50+
51+
/**
52+
* Number type (example: landline, mobile).
53+
* @var string
54+
*/
55+
public $type;
56+
57+
/**
58+
* Number availability and current activated status
59+
* @var string
60+
*/
61+
public $status;
62+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
4+
namespace MessageBird\Objects;
5+
6+
/**
7+
* Class NumberPurchaseRequest
8+
*
9+
* Represents a specific phone number
10+
*
11+
* @package MessageBird\Objects
12+
*/
13+
class NumberPurchaseRequest extends Base
14+
{
15+
/**
16+
* The phone number in E.164 format without the prefixed plus-sign.
17+
* @var string
18+
*/
19+
public $number;
20+
21+
/**
22+
* The country code for this number in ISO 3166-1 alpha-2 format.
23+
*
24+
* @var string
25+
*/
26+
public $countryCode;
27+
28+
/**
29+
* The interval in months that this number will be billed by
30+
*/
31+
public $billingIntervalMonths;
32+
}

0 commit comments

Comments
 (0)