From 017f4fcd92b9108a7f22b0bfa89fbb5c9ca92fec Mon Sep 17 00:00:00 2001 From: Travis Swientek Date: Fri, 2 Aug 2013 11:30:09 -0700 Subject: [PATCH] Finished Lists endpoint and added Address Validator --- src/Mailgun/Address/Address.php | 27 ++++++ src/Mailgun/Campaigns/Campaigns.php | 2 +- src/Mailgun/Lists/Lists.php | 54 +++++++++++ src/Mailgun/MailgunClient.php | 4 + tests/Mailgun/Tests/Address/AddressTest.php | 22 +++++ .../Mailgun/Tests/Campaigns/CampaignsTest.php | 16 ++-- tests/Mailgun/Tests/Lists/ListsTest.php | 92 +++++++++++++++++++ 7 files changed, 208 insertions(+), 9 deletions(-) create mode 100644 src/Mailgun/Address/Address.php create mode 100644 tests/Mailgun/Tests/Address/AddressTest.php create mode 100644 tests/Mailgun/Tests/Lists/ListsTest.php diff --git a/src/Mailgun/Address/Address.php b/src/Mailgun/Address/Address.php new file mode 100644 index 0000000..09f2270 --- /dev/null +++ b/src/Mailgun/Address/Address.php @@ -0,0 +1,27 @@ +httpBroker = $httpBroker; + $this->endpointUrl = $this->httpBroker->returnWorkingDomain() . "/address"; + } + + public function validateAddress($address){ + $updatedUrl = $this->endpointUrl . "/validate"; + $getData = array('address' => $address); + $response = $this->httpBroker->getRequest($updatedUrl, $getData); + return $response; + } +} + +?> \ No newline at end of file diff --git a/src/Mailgun/Campaigns/Campaigns.php b/src/Mailgun/Campaigns/Campaigns.php index ab36994..8ac8290 100644 --- a/src/Mailgun/Campaigns/Campaigns.php +++ b/src/Mailgun/Campaigns/Campaigns.php @@ -49,7 +49,7 @@ class Campaigns{ public function deleteCampaign($campaignId){ $updatedUrl = $this->endpointUrl . "/" . $campaignId; - $response = $this->httpBroker->deleteCampaign($updatedUrl); + $response = $this->httpBroker->deleteRequest($updatedUrl); return $response; } diff --git a/src/Mailgun/Lists/Lists.php b/src/Mailgun/Lists/Lists.php index 066782c..4a62667 100644 --- a/src/Mailgun/Lists/Lists.php +++ b/src/Mailgun/Lists/Lists.php @@ -15,12 +15,66 @@ class Lists{ public function __construct($httpBroker){ $this->httpBroker = $httpBroker; $this->endpointUrl = $this->httpBroker->returnWorkingDomain() . "/lists"; + } public function getLists($limit, $skip){ $response = $this->httpBroker->getRequest($this->endpointUrl, array($limit, $skip)); return $response; } + public function getList($listAddress){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress; + $response = $this->httpBroker->getRequest($updatedUrl); + return $response; + } + public function addList($listAddress, $name, $description, $access_level){ + $postData = array('address' => $listAddress, 'name' => $name, 'description' => $description, 'access_level' => $access_level); + $response = $this->httpBroker->postRequest($this->endpointUrl, $postData); + return $response; + } + public function updateList($listAddress, $name, $description, $access_level){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress; + $postData = array('address' => $listAddress, 'name' => $name, 'description' => $description, 'access_level' => $access_level); + $response = $this->httpBroker->putRequest($updatedUrl, $postData); + return $response; + } + public function deleteList($listAddress){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress; + $response = $this->httpBroker->deleteRequest($updatedUrl); + return $response; + } + public function getListMembers($listAddress, $filterParams = array()){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress . "/members"; + $response = $this->httpBroker->getRequest($updatedUrl, $filterParams); + return $response; + } + public function getListMember($listAddress, $memberAddress){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress . "/members/" . $memberAddress; + $response = $this->httpBroker->getRequest($updatedUrl); + return $response; + } + public function addListMember($listAddress, $memberAddress, $name, $vars, $subscribed = true, $upsert = true){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress . "/members"; + $postData = array('address' => $memberAddress, 'name' => $name, 'vars' => $vars, 'subscribed' => $subscribed, 'upsert' => $upsert); + $response = $this->httpBroker->postRequest($updatedUrl, $postData); + return $response; + } + public function updateListMember($listAddress, $memberAddress, $name, $vars, $subscribed = true){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress . "/members/" . $memberAddress; + $postData = array('address' => $memberAddress, 'name' => $name, 'vars' => $vars, 'subscribed' => $subscribed); + $response = $this->httpBroker->putRequest($updatedUrl, $postData); + return $response; + } + public function deleteListMember($listAddress, $memberAddress){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress . "/members/" . $memberAddress; + $response = $this->httpBroker->deleteRequest($updatedUrl); + return $response; + } + public function getListStats($listAddress){ + $updatedUrl = $this->endpointUrl . "/" . $listAddress . "/stats"; + $response = $this->httpBroker->getRequest($updatedUrl); + return $response; + } } ?> \ No newline at end of file diff --git a/src/Mailgun/MailgunClient.php b/src/Mailgun/MailgunClient.php index 87cea27..7fa725b 100644 --- a/src/Mailgun/MailgunClient.php +++ b/src/Mailgun/MailgunClient.php @@ -7,6 +7,7 @@ use Mailgun\Stats\Stats; use Mailgun\Lists\Lists; use Mailgun\Routes\Routes; use Mailgun\Bounces\Bounces; +use Mailgun\Address\Address; use Mailgun\Messages\Messages; use Mailgun\Campaigns\Campaigns; use Mailgun\Complaints\Complaints; @@ -64,6 +65,9 @@ class MailgunClient{ public function Lists(){ return new Lists($this->httpBroker); } + public function Address(){ + return new Address($this->httpBroker); + } } ?> \ No newline at end of file diff --git a/tests/Mailgun/Tests/Address/AddressTest.php b/tests/Mailgun/Tests/Address/AddressTest.php new file mode 100644 index 0000000..1524307 --- /dev/null +++ b/tests/Mailgun/Tests/Address/AddressTest.php @@ -0,0 +1,22 @@ +client = new MailgunClientTest("My-Super-Awesome-API-Key", "samples.mailgun.org", false); + + } + + public function testValidateAddress(){ + $client = $this->client->Address(); + $response = $client->validateAddress("addressvalidation@mailgun.com"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } +} \ No newline at end of file diff --git a/tests/Mailgun/Tests/Campaigns/CampaignsTest.php b/tests/Mailgun/Tests/Campaigns/CampaignsTest.php index 7e65a2a..4b170ce 100644 --- a/tests/Mailgun/Tests/Campaigns/CampaignsTest.php +++ b/tests/Mailgun/Tests/Campaigns/CampaignsTest.php @@ -48,30 +48,30 @@ class CampaignsTest extends \Mailgun\Tests\MailgunTestCase{ $this->assertEquals(200, $httpCode); } - public function testGetCampaignEvents(12345, array()){ + public function testGetCampaignEvents(){ $client = $this->client->Campaigns(); - $response = $client->getCampaignEvents(12345); + $response = $client->getCampaignEvents(12345, array()); $httpCode = $response->http_response_code; $this->assertEquals(200, $httpCode); } - public function testGetCampaignStats(12345, array()){ + public function testGetCampaignStats(){ $client = $this->client->Campaigns(); - $response = $client->getCampaignStats(12345); + $response = $client->getCampaignStats(12345, array()); $httpCode = $response->http_response_code; $this->assertEquals(200, $httpCode); } - public function testGetCampaignStats(12345, array()){ + public function testGetCampaignClicks(){ $client = $this->client->Campaigns(); - $response = $client->getCampaignClicks(12345); + $response = $client->getCampaignClicks(12345, array()); $httpCode = $response->http_response_code; $this->assertEquals(200, $httpCode); } - public function testGetCampaignStats(12345, array()){ + public function testGetCampaignOpens(){ $client = $this->client->Campaigns(); - $response = $client->getCampaignOpens(12345); + $response = $client->getCampaignOpens(12345, array()); $httpCode = $response->http_response_code; $this->assertEquals(200, $httpCode); } diff --git a/tests/Mailgun/Tests/Lists/ListsTest.php b/tests/Mailgun/Tests/Lists/ListsTest.php new file mode 100644 index 0000000..bcc3db0 --- /dev/null +++ b/tests/Mailgun/Tests/Lists/ListsTest.php @@ -0,0 +1,92 @@ +client = new MailgunClientTest("My-Super-Awesome-API-Key", "samples.mailgun.org", false); + + } + + public function testGetLists(){ + $client = $this->client->Lists(); + $response = $client->getLists("1", "30"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testGetList(){ + $client = $this->client->Lists(); + $response = $client->getList("mylist@mailgun.org"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testAddList(){ + $client = $this->client->Lists(); + $response = $client->addList("mylist@mailgun.org", "My Sample List", "More Description Stuff", "readonly"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testUpdateList(){ + $client = $this->client->Lists(); + $response = $client->updateList("mylist@mailgun.org", "My Sample List", "More Description Stuff", "readonly"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testDeleteList(){ + $client = $this->client->Lists(); + $response = $client->deleteList(12345); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testGetListMembers(){ + $client = $this->client->Lists(); + $response = $client->getListMembers("mylist@mailgun.org", array('subscribed'=>true, 'limit' => 50, 'skip' => 50)); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testGetListMember(){ + $client = $this->client->Lists(); + $response = $client->getListMember("mylist@mailgun.org", "subscribee@mailgun.org"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testAddListMember(){ + $client = $this->client->Lists(); + $response = $client->getListMember("mylist@mailgun.org", "subscribee@mailgun.org", "Sample User", array('userid' => 'ABC123'), true, true); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testUpdateListMember(){ + $client = $this->client->Lists(); + $response = $client->updateListMember("mylist@mailgun.org", "subscribee@mailgun.org", "Sample User", array('userid' => 'ABC123'), true); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testDeleteListMember(){ + $client = $this->client->Lists(); + $response = $client->deleteListMember("mylist@mailgun.org", "subscribee@mailgun.org"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } + + public function testGetListStats(){ + $client = $this->client->Lists(); + $response = $client->getListStats("mylist@mailgun.org"); + $httpCode = $response->http_response_code; + $this->assertEquals(200, $httpCode); + } +} \ No newline at end of file