Skip to content

Commit 51a98be

Browse files
author
John Hutcheson
authored
Merge pull request #47 from Jhut89/3.0.0
Add new endpoints as Resources
2 parents 9c34438 + 241eb28 commit 51a98be

File tree

12 files changed

+370
-3
lines changed

12 files changed

+370
-3
lines changed

README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,11 @@ print $contact_email; // outputs something like "example@domain.com"
303303
| |----unschedule()*
304304
| |----checklist()
305305
| |----feedback()
306-
| |----content()
306+
| |----content()
307+
|
308+
|----connectedSites()
309+
| |
310+
| |----verifyScriptInstallation()*
307311
|
308312
|----conversations()
309313
| |
@@ -327,11 +331,21 @@ print $contact_email; // outputs something like "example@domain.com"
327331
| |
328332
| |----carts()
329333
| |
330-
| |----lines()
334+
| |----lines()
335+
|
336+
|----facebookAds()
331337
|
332338
|----fileManagerFiles()
333339
|
334-
|----fileManagerFolders()
340+
|----fileManagerFolders()
341+
|
342+
|----googleAds()
343+
|
344+
|----landingPages()
345+
| |
346+
| |----publish()*
347+
| |----unpublish()*
348+
| |----content()
335349
|
336350
|----lists()
337351
| |

src/Mailchimp.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,15 @@ public function campaigns($campaign_id = null)
106106
return new Resources\Campaigns($this->request, $this->settings, $campaign_id);
107107
}
108108

109+
/**
110+
* @param null $site_id
111+
* @return Resources\ConnectedSites
112+
*/
113+
public function connectedSites($site_id = null)
114+
{
115+
return new Resources\ConnectedSites($this->request, $this->settings, $site_id);
116+
}
117+
109118
/**
110119
* @param null $conversation_id
111120
* @return Resources\Conversations
@@ -125,6 +134,15 @@ public function ecommerceStores($store_id = null)
125134
return new Resources\EcommerceStores($this->request, $this->settings, $store_id);
126135
}
127136

137+
/**
138+
* @param null $outreach_id
139+
* @return Resources\FacebookAds
140+
*/
141+
public function facebookAds($outreach_id = null)
142+
{
143+
return new Resources\FacebookAds($this->request, $this->settings, $outreach_id);
144+
}
145+
128146
/**
129147
* @param null $file_id
130148
* @return Resources\FileManagerFiles
@@ -143,6 +161,24 @@ public function fileManagerFolders($folder_id = null)
143161
return new Resources\FileManagerFolders($this->request, $this->settings, $folder_id);
144162
}
145163

164+
/**
165+
* @param null $outreach_id
166+
* @return Resources\GoogleAds
167+
*/
168+
public function googleAds($outreach_id = null)
169+
{
170+
return new Resources\GoogleAds($this->request, $this->settings, $outreach_id);
171+
}
172+
173+
/**
174+
* @param null $page_id
175+
* @return Resources\LandingPages
176+
*/
177+
public function landingPages($page_id = null)
178+
{
179+
return new Resources\LandingPages($this->request, $this->settings, $page_id);
180+
}
181+
146182
/**
147183
* @param null $list_id
148184
* @return Resources\Lists

src/Resources/ConnectedSites.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
4+
namespace MailchimpAPI\Resources;
5+
6+
7+
use MailchimpAPI\Requests\MailchimpRequest;
8+
use MailchimpAPI\Settings\MailchimpSettings;
9+
10+
/**
11+
* Class ConnectedSites
12+
* @package MailchimpAPI\Resources
13+
*/
14+
class ConnectedSites extends ApiResource
15+
{
16+
/**
17+
* @var null
18+
*/
19+
private $site_id;
20+
21+
/**
22+
* the connected sites endpoint url component
23+
*/
24+
const URL_COMPONENT = "/connected-sites/";
25+
26+
/**
27+
* the conversations url component for verifying a script install
28+
*/
29+
const VERIFY_SCRIPT_INSTALL_URL_COMPONENT = "/actions/verify-script-installation/";
30+
31+
/**
32+
* ConnectedSites constructor.
33+
* @param MailchimpRequest $request
34+
* @param MailchimpSettings $settings
35+
* @param null $site_id
36+
*/
37+
public function __construct(MailchimpRequest $request, MailchimpSettings $settings, $site_id = null)
38+
{
39+
parent::__construct($request, $settings);
40+
$request->appendToEndpoint(self::URL_COMPONENT . $site_id);
41+
$this->site_id = $site_id;
42+
}
43+
44+
/**
45+
* @throws \MailchimpAPI\MailchimpException
46+
*/
47+
public function verifyScriptInstallation()
48+
{
49+
$this->throwIfNot("id", $this->site_id);
50+
$this->postToActionEndpoint(self::VERIFY_SCRIPT_INSTALL_URL_COMPONENT);
51+
}
52+
}

src/Resources/FacebookAds.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
4+
namespace MailchimpAPI\Resources;
5+
6+
7+
use MailchimpAPI\Requests\MailchimpRequest;
8+
use MailchimpAPI\Settings\MailchimpSettings;
9+
10+
class FacebookAds extends ApiResource
11+
{
12+
const URL_COMPONENT = "/facebook-ads/";
13+
public function __construct(MailchimpRequest $request, MailchimpSettings $settings, $outreach_id = null)
14+
{
15+
parent::__construct($request, $settings);
16+
$request->appendToEndpoint(self::URL_COMPONENT . $outreach_id);
17+
}
18+
}

src/Resources/GoogleAds.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
4+
namespace MailchimpAPI\Resources;
5+
6+
7+
use MailchimpAPI\Requests\MailchimpRequest;
8+
use MailchimpAPI\Settings\MailchimpSettings;
9+
10+
class GoogleAds extends ApiResource
11+
{
12+
const URL_COMPONENT = "/google-ads/";
13+
14+
public function __construct(MailchimpRequest $request, MailchimpSettings $settings, $outreach_id = null)
15+
{
16+
parent::__construct($request, $settings);
17+
$request->appendToEndpoint(self::URL_COMPONENT . $outreach_id);
18+
}
19+
}

src/Resources/LandingPages.php

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
4+
namespace MailchimpAPI\Resources;
5+
6+
7+
use MailchimpAPI\Requests\MailchimpRequest;
8+
use MailchimpAPI\Settings\MailchimpSettings;
9+
10+
/**
11+
* Class LandingPages
12+
* @package MailchimpAPI\Resources
13+
*/
14+
class LandingPages extends ApiResource
15+
{
16+
/**
17+
* @var null
18+
*/
19+
private $page_id;
20+
21+
/**
22+
* the url component for this endpoint
23+
*/
24+
const URL_COMPONENT = "/landing-pages/";
25+
26+
/**
27+
* the url component for publishing a landing page
28+
*/
29+
const PUBLISH_URL_COMPONENT = "/actions/publish/";
30+
31+
/**
32+
* the url component for unpublishing a landing page
33+
*/
34+
const UNPUBLISH_URL_COMPONENT = "/actions/unpublish/";
35+
36+
/**
37+
* LandingPages constructor.
38+
* @param MailchimpRequest $request
39+
* @param MailchimpSettings $settings
40+
* @param null $page_id
41+
*/
42+
public function __construct(MailchimpRequest $request, MailchimpSettings $settings, $page_id = null)
43+
{
44+
parent::__construct($request, $settings);
45+
$request->appendToEndpoint(self::URL_COMPONENT . $page_id);
46+
$this->page_id = $page_id;
47+
}
48+
49+
/**
50+
* @return \MailchimpAPI\Responses\MailchimpResponse
51+
* @throws \MailchimpAPI\MailchimpException
52+
*/
53+
public function publish()
54+
{
55+
$this->throwIfNot("id", $this->page_id);
56+
return $this->postToActionEndpoint(self::PUBLISH_URL_COMPONENT);
57+
}
58+
59+
/**
60+
* @return \MailchimpAPI\Responses\MailchimpResponse
61+
* @throws \MailchimpAPI\MailchimpException
62+
*/
63+
public function unpublish()
64+
{
65+
$this->throwIfNot("id", $this->page_id);
66+
return $this->postToActionEndpoint(self::UNPUBLISH_URL_COMPONENT);
67+
}
68+
69+
/**
70+
* @return LandingPages\Content
71+
*/
72+
public function content()
73+
{
74+
return new LandingPages\Content(
75+
$this->getRequest(),
76+
$this->getSettings()
77+
);
78+
}
79+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
4+
namespace MailchimpAPI\Resources\LandingPages;
5+
6+
use MailchimpAPI\Requests\MailchimpRequest;
7+
use MailchimpAPI\Resources\ApiResource;
8+
use MailchimpAPI\Settings\MailchimpSettings;
9+
10+
class Content extends ApiResource
11+
{
12+
const URL_COMPONENT = "/content/";
13+
14+
public function __construct(MailchimpRequest $request, MailchimpSettings $settings)
15+
{
16+
parent::__construct($request, $settings);
17+
$request->appendToEndpoint(self::URL_COMPONENT);
18+
}
19+
}

tests/ConnectedSitesTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace MailchimpTests;
4+
5+
use MailchimpAPI\Resources\ConnectedSites;
6+
7+
class ConnectedSitesTest extends MailChimpTestCase
8+
{
9+
public function testCollectionUrl()
10+
{
11+
$this->endpointUrlBuildTest(
12+
ConnectedSites::URL_COMPONENT,
13+
$this->mailchimp->connectedSites(),
14+
"The Connected Sites url should be constructed correctly"
15+
);
16+
}
17+
18+
public function testInstanceUrl()
19+
{
20+
$this->endpointUrlBuildTest(
21+
ConnectedSites::URL_COMPONENT . 1,
22+
$this->mailchimp->connectedSites(1),
23+
"The Connected Sites url should be constructed correctly"
24+
);
25+
}
26+
}

tests/FacebookAdsTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace MailchimpTests;
4+
5+
use MailchimpAPI\Resources\FacebookAds;
6+
7+
class FacebookAdsTest extends MailChimpTestCase
8+
{
9+
10+
/**
11+
* @throws \MailchimpAPI\MailchimpException
12+
*/
13+
public function testFacebookAdsCollectionUrl()
14+
{
15+
$this->endpointUrlBuildTest(
16+
FacebookAds::URL_COMPONENT,
17+
$this->mailchimp->facebookAds(),
18+
"The Facebook Ads collection endpoint should be constructed correctly"
19+
);
20+
}
21+
22+
/**
23+
* @throws \MailchimpAPI\MailchimpException
24+
*/
25+
public function testFacebookAdsInstanceUrl()
26+
{
27+
$this->endpointUrlBuildTest(
28+
FacebookAds::URL_COMPONENT . 1,
29+
$this->mailchimp->facebookAds(1),
30+
"The Facebook Ads instance endpoint should be constructed correctly"
31+
);
32+
}
33+
}

tests/GoogleAdsTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace MailchimpTests;
4+
5+
use MailchimpAPI\Resources\GoogleAds;
6+
7+
class GoogleAdsTest extends MailChimpTestCase
8+
{
9+
public function testGoogleAdsCollectionUrl()
10+
{
11+
$this->endpointUrlBuildTest(
12+
GoogleAds::URL_COMPONENT,
13+
$this->mailchimp->googleAds(),
14+
"The Facebook Ads collection endpoint should be constructed correctly"
15+
);
16+
}
17+
18+
public function testGoogleAdsInstanceUrl()
19+
{
20+
$this->endpointUrlBuildTest(
21+
GoogleAds::URL_COMPONENT . 1,
22+
$this->mailchimp->googleAds(1),
23+
"The Facebook Ads instance endpoint should be constructed correctly"
24+
);
25+
}
26+
}

0 commit comments

Comments
 (0)