/** * @depends testGetAccounts * @param Cursor $accounts * @return Account */ public function testGetAccount($accounts) { /** @var Account $firstAccount */ $firstAccount = $accounts->next(); $account = $this->twitter->getAccounts($firstAccount->getId()); $this->assertEquals($firstAccount->getId(), $account->getId()); return $account; }
public function testTailoredAudienceChangesCanBeFetchedAndUpdated() { $this->markTestSkipped('waiting for write access to twitter ads api'); $accounts = $this->twitter->getAccounts(); $this->assertGreaterThan(0, count($accounts)); $account = iterator_to_array($accounts)[0]; $audience = new TailoredAudience($account); $audience->setListType(TailoredAudience::LIST_TYPE_EMAIL); $audience->save(); }
<?php use Hborras\TwitterAdsSDK\TwitterAds; use Hborras\TwitterAdsSDK\TwitterAds\Account; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\Campaign; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\LineItem; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\Tweet; use Hborras\TwitterAdsSDK\TwitterAds\Creative\PromotedTweet; use Hborras\TwitterAdsSDK\TwitterAds\Creative\Video; use Hborras\TwitterAdsSDK\TwitterAds\Creative\WebsiteCard; use Hborras\TwitterAdsSDK\TwitterAds\Enumerations; require '../autoload.php'; const CONSUMER_KEY = 'your consumer key'; const CONSUMER_SECRET = 'your consumer secret'; const ACCESS_TOKEN = 'your access token'; const ACCESS_TOKEN_SECRET = 'your access token secret'; const ACCOUNT_ID = 'account id'; // Create twitter ads client $twitterAds = new TwitterAds(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); // load up the account instance, campaign and line item /** @var Account $account */ $account = $twitterAds->getAccounts(ACCOUNT_ID); /** Upload media */ $media = $twitterAds->upload(['media' => 'video.mp4', 'media_type' => 'video/mp4'], true); /** Create a video entity and save it*/ $video = new Video($account); $video->setTitle("Test Video " . rand()); $video->setDescription("Description" . rand()); $video->setVideoMediaId($media->media_id); $video->save();
/** * Set up the client */ protected function setUp() { $this->twitter = new TwitterAds(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, false); $this->account = $this->twitter->getAccounts()->next(); }
<?php use Hborras\TwitterAdsSDK\TwitterAds; use Hborras\TwitterAdsSDK\TwitterAds\Analytics; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\LineItem; require '../autoload.php'; const CONSUMER_KEY = 'your consumer key'; const CONSUMER_SECRET = 'your consumer secret'; const ACCESS_TOKEN = 'your access token'; const ACCESS_TOKEN_SECRET = 'your access token secret'; const ACCOUNT_ID = 'account id'; // Create twitter ads client $twitterAds = new TwitterAds(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); // load up the account instance, campaign and line item $account = $twitterAds->getAccounts(ACCOUNT_ID); // Limit request count and grab the first 10 line items from Cursor $lineItems = $account->getLineItems("", ['count' => 10]); // The list of metrics we want to fetch, for a full list of possible metrics $metrics = [Analytics::ANALYTICS_METRIC_GROUPS_ENGAGEMENT, Analytics::ANALYTICS_METRIC_GROUPS_BILLING]; // Fetching stats on the instance /** @var LineItem $lineItem */ $lineItem = $lineItems->first(); $stats = $lineItem->stats($metrics); // Fetching stats for multiple line items $ids = array_map(function ($o) { return $o->getId(); }, $lineItems->getCollection()); $stats = LineItem::all_stats($account, $ids, $metrics);
<?php use Hborras\TwitterAdsSDK\TwitterAds; use Hborras\TwitterAdsSDK\TwitterAds\Account; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\Campaign; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\LineItem; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\Tweet; use Hborras\TwitterAdsSDK\TwitterAds\Creative\PromotedTweet; use Hborras\TwitterAdsSDK\TwitterAds\Creative\WebsiteCard; use Hborras\TwitterAdsSDK\TwitterAds\Enumerations; require '../autoload.php'; const CONSUMER_KEY = 'your consumer key'; const CONSUMER_SECRET = 'your consumer secret'; const ACCESS_TOKEN = 'your access token'; const ACCESS_TOKEN_SECRET = 'your access token secret'; const ACCOUNT_ID = 'account id'; // Create twitter ads client $twitterAds = new TwitterAds(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); // load up the account instance, campaign and line item /** @var Account $account */ $account = $twitterAds->getAccounts(ACCOUNT_ID); // create request for a simple nullcasted tweet $media = $twitterAds->upload(['media' => 'twitter-gif.gif', 'media_type' => 'image/gif'], true); $tweet = Tweet::create($account, 'Tweet with chunked upload GIF...' . rand() . ' http://twitter.com', ['media_ids' => $media->media_id]);
private function getAccount() { $accounts = $this->twitter->getAccounts(); $this->assertGreaterThan(0, count($accounts)); return iterator_to_array($accounts)[0]; }
use Hborras\TwitterAdsSDK\TwitterAds; use Hborras\TwitterAdsSDK\TwitterAds\Account; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\Campaign; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\LineItem; use Hborras\TwitterAdsSDK\TwitterAds\Campaign\Tweet; use Hborras\TwitterAdsSDK\TwitterAds\Creative\PromotedTweet; use Hborras\TwitterAdsSDK\TwitterAds\Creative\WebsiteCard; use Hborras\TwitterAdsSDK\TwitterAds\Enumerations; require '../autoload.php'; const CONSUMER_KEY = 'your consumer key'; const CONSUMER_SECRET = 'your consumer secret'; const ACCESS_TOKEN = 'your access token'; const ACCESS_TOKEN_SECRET = 'your access token secret'; const ACCOUNT_ID = 'account id'; // Create twitter ads client $twitterAds = new TwitterAds(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); // load up the account instance, campaign and line item /** @var Account $account */ $account = $twitterAds->getAccounts(ACCOUNT_ID); /** @var Campaign $campaign */ $campaign = new Campaign($account); $campaign->setFundingInstrumentId($account->getFundingInstruments()->first()->getId()); $campaign->setDailyBudgetAmountLocalMicro(1000000); $campaign->setName("My first campaign: "); $campaign->setPaused(false); $campaign->setStartTime(new \DateTime()); $campaign->save(); // Create a line item for the campaign $lineItem = new LineItem($account); $lineItem->setCampaignId($campaign->getId()); $lineItem->setName("My first line item: ");
<?php use Hborras\TwitterAdsSDK\TwitterAds; use Hborras\TwitterAdsSDK\TwitterAds\TailoredAudience\TailoredAudience; require '../autoload.php'; const CONSUMER_KEY = 'your consumer key'; const CONSUMER_SECRET = 'your consumer secret'; const ACCESS_TOKEN = 'your access token'; const ACCESS_TOKEN_SECRET = 'your access token secret'; const ACCOUNT_ID = 'account id'; /** Create twitter ads client */ $twitterAds = new TwitterAds(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); /** If the file is too large, I highly recommend increase the timeout */ $twitterAds->setTimeouts(5, 45); // Retrieve account information $account = $twitterAds->getAccounts(ACCOUNT_ID); /** If the file is not hashed line by line, you need to hash it, for example for emails is this code*/ $file = fopen("path/to/list.txt", "r"); $newFile = fopen('path/to/new_list.txt', 'w'); while (!feof($file)) { $line = fgets($file); $normalized_email = strtolower(trim($line, " \t\r\n\v.")); $normalized_email = hash('sha256', $normalized_email); fwrite($newFile, $normalized_email . "\n"); # do same stuff with the $line } fclose($newFile); fclose($file); $audience = new TailoredAudience($account); $audience->create('path/to/new_list.txt', 'Test List', TailoredAudience::LIST_TYPE_EMAIL); /** @var TwitterAds\TailoredAudience\TailoredAudienceChanges $status */
public function testUrl() { $url = $this->twitter->url('oauth/authorize', array('foo' => 'bar', 'baz' => 'qux')); $this->assertEquals('https://api.twitter.com/oauth/authorize?foo=bar&baz=qux', $url); }