Skip to content

Commit e83d407

Browse files
committed
Examples
1 parent 9d698a2 commit e83d407

7 files changed

+270
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
use React\EventLoop\Factory;
4+
use ApiClients\Twitter\AsyncClient;
5+
use function ApiClients\Foundation\resource_pretty_print;
6+
use function React\Promise\all;
7+
8+
require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor/autoload.php';
9+
$config = require 'resolve_config.php';
10+
11+
$loop = Factory::create();
12+
$client = new AsyncClient(
13+
$config['consumer']['key'],
14+
$config['consumer']['secret'],
15+
$config['access_token']['token'],
16+
$config['access_token']['secret'],
17+
$loop
18+
);
19+
20+
$hashtags = [];
21+
22+
if (count($argv) > 1) {
23+
unset($argv[0]);
24+
foreach ($argv as $hashtag) {
25+
$hashtags[] = '#' . $hashtag;
26+
}
27+
}
28+
29+
$client->filteredStream([
30+
'track' => implode(',', $hashtags),
31+
])->subscribeCallback(function ($document) {
32+
resource_pretty_print($document);
33+
});
34+
35+
$loop->run();
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
use React\EventLoop\Factory;
4+
use ApiClients\Twitter\AsyncClient;
5+
use ApiClients\Twitter\Resource\UserInterface;
6+
use function ApiClients\Foundation\resource_pretty_print;
7+
use function React\Promise\all;
8+
9+
require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor/autoload.php';
10+
$config = require 'resolve_config.php';
11+
12+
$loop = Factory::create();
13+
$client = new AsyncClient(
14+
$config['consumer']['key'],
15+
$config['consumer']['secret'],
16+
$config['access_token']['token'],
17+
$config['access_token']['secret'],
18+
$loop
19+
);
20+
21+
$users = [
22+
'WyriHaximus',
23+
];
24+
25+
if (count($argv) > 1) {
26+
unset($argv[0]);
27+
foreach ($argv as $track) {
28+
$tracks[] = $track;
29+
}
30+
}
31+
32+
$client->filteredStream([
33+
'track' => implode(',', $tracks),
34+
])->subscribeCallback(function ($document) {
35+
resource_pretty_print($document);
36+
});
37+
38+
$loop->run();
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
use React\EventLoop\Factory;
4+
use ApiClients\Twitter\AsyncClient;
5+
use ApiClients\Twitter\Resource\UserInterface;
6+
use function ApiClients\Foundation\resource_pretty_print;
7+
use function React\Promise\all;
8+
9+
require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor/autoload.php';
10+
$config = require 'resolve_config.php';
11+
12+
$loop = Factory::create();
13+
$client = new AsyncClient(
14+
$config['consumer']['key'],
15+
$config['consumer']['secret'],
16+
$config['access_token']['token'],
17+
$config['access_token']['secret'],
18+
$loop
19+
);
20+
21+
$users = [
22+
'WyriHaximus',
23+
];
24+
25+
if (count($argv) > 1) {
26+
unset($argv[0]);
27+
foreach ($argv as $user) {
28+
$users[] = $user;
29+
}
30+
}
31+
32+
$promises = [];
33+
34+
foreach ($users as $user) {
35+
$promises[] = $client->user($user);
36+
}
37+
38+
all($promises)->then(function ($users) use ($client) {
39+
$userIds = [];
40+
41+
foreach ($users as $user) {
42+
$userIds[] = $user->idStr();
43+
}
44+
45+
$client->filteredStream([
46+
'follow' => implode(',', $userIds),
47+
])->subscribeCallback(function ($document) {
48+
resource_pretty_print($document);
49+
});
50+
});
51+
52+
$loop->run();

examples/streaming-sample-async.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
use React\EventLoop\Factory;
4+
use ApiClients\Twitter\AsyncClient;
5+
use function ApiClients\Foundation\resource_pretty_print;
6+
7+
require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor/autoload.php';
8+
$config = require 'resolve_config.php';
9+
10+
$loop = Factory::create();
11+
$client = new AsyncClient(
12+
$config['consumer']['key'],
13+
$config['consumer']['secret'],
14+
$config['access_token']['token'],
15+
$config['access_token']['secret'],
16+
$loop
17+
);
18+
19+
$client->sampleStream()->subscribeCallback(function ($document) {
20+
resource_pretty_print($document);
21+
});
22+
23+
$loop->run();
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?php
2+
3+
use ApiClients\Twitter\Resource\Async\DeletedTweet;
4+
use ApiClients\Twitter\Resource\Async\Tweet;
5+
use React\EventLoop\Factory;
6+
use ApiClients\Twitter\AsyncClient;
7+
use function ApiClients\Foundation\resource_pretty_print;
8+
use React\EventLoop\Timer\TimerInterface;
9+
10+
require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor/autoload.php';
11+
$config = require 'resolve_config.php';
12+
13+
$loop = Factory::create();
14+
$client = new AsyncClient(
15+
$config['consumer']['key'],
16+
$config['consumer']['secret'],
17+
$config['access_token']['token'],
18+
$config['access_token']['secret'],
19+
$loop
20+
);
21+
22+
$counters = [
23+
DeletedTweet::class => 0,
24+
Tweet::class => 0,
25+
];
26+
27+
$loop->addPeriodicTimer(60, function (TimerInterface $timer) {
28+
$timer->getLoop()->stop();
29+
});
30+
31+
$loop->addPeriodicTimer(1, function () use (&$counters) {
32+
ksort($counters);
33+
print_r([
34+
'memory' => memory_get_usage() / 1024 / 1024,
35+
'memory_peak' => memory_get_peak_usage() / 1024 / 1024,
36+
'memory_true' => memory_get_usage(true) / 1024 / 1024,
37+
'memory_peak_true' => memory_get_peak_usage(true) / 1024 / 1024,
38+
]);
39+
print_r($counters);
40+
foreach ($counters as $key => $value) {
41+
$counters[$key] = 0;
42+
}
43+
});
44+
45+
$client->sampleStream()->subscribeCallback(function ($document) use(&$counters) {
46+
$class = get_class($document);
47+
48+
if (!isset($counters[$class])) {
49+
$counters[$class] = 0;
50+
}
51+
52+
$counters[$class]++;
53+
});
54+
55+
$loop->run();

examples/user-async.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
use GuzzleHttp\Exception\ClientException;
4+
use React\EventLoop\Factory;
5+
use ApiClients\Twitter\AsyncClient;
6+
use ApiClients\Twitter\Resource\UserInterface;
7+
use function ApiClients\Foundation\resource_pretty_print;
8+
9+
require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor/autoload.php';
10+
$config = require 'resolve_config.php';
11+
12+
$loop = Factory::create();
13+
$client = new AsyncClient(
14+
$config['consumer']['key'],
15+
$config['consumer']['secret'],
16+
$config['access_token']['token'],
17+
$config['access_token']['secret'],
18+
$loop
19+
);
20+
21+
$users = [
22+
'WyriHaximus',
23+
];
24+
25+
if (count($argv) > 1) {
26+
unset($argv[0]);
27+
foreach ($argv as $user) {
28+
$users[] = $user;
29+
}
30+
}
31+
32+
foreach ($users as $user) {
33+
$client->user($user)->done(function (UserInterface $user) {
34+
resource_pretty_print($user);
35+
});
36+
}
37+
38+
$loop->run();

examples/user.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
use ApiClients\Twitter\Client;
4+
use function ApiClients\Foundation\resource_pretty_print;
5+
6+
require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor/autoload.php';
7+
$config = require 'resolve_config.php';
8+
9+
$client = new Client(
10+
$config['consumer']['key'],
11+
$config['consumer']['secret'],
12+
$config['access_token']['token'],
13+
$config['access_token']['secret']
14+
);
15+
16+
$users = [
17+
'WyriHaximus',
18+
];
19+
20+
if (count($argv) > 1) {
21+
unset($argv[0]);
22+
foreach ($argv as $user) {
23+
$users[] = $user;
24+
}
25+
}
26+
27+
foreach ($users as $user) {
28+
resource_pretty_print($client->user($user));
29+
}

0 commit comments

Comments
 (0)