const CONSUMER_SECRET = ''; const TOKEN = ''; const TOKEN_SECRET = ''; function generateHeader($method, $url, $params = null) { $consumer = new JacobKiers\OAuth\Consumer\Consumer(CONSUMER_KEY, CONSUMER_SECRET); $token = new JacobKiers\OAuth\Token\Token(TOKEN, TOKEN_SECRET); $oauthRequest = JacobKiers\OAuth\Request\Request::fromConsumerAndToken($consumer, $token, $method, $url, $params); $oauthRequest->signRequest(new JacobKiers\OAuth\SignatureMethod\HmacSha1(), $consumer, $token); return trim(substr($oauthRequest->toHeader(), 15)); } $postData = 'follow=' . TWITTER_USER_ID; $method = 'POST'; $url = 'https://stream.twitter.com/1.1/statuses/filter.json'; $headers = ['Authorization' => generateHeader($method, $url, ['follow' => TWITTER_USER_ID]), 'Content-Type' => 'application/x-www-form-urlencoded', 'Content-Length' => strlen($postData)]; $source = \Rx\React\Http::post($url, $postData, $headers, '1.1')->streamResults()->share(); $connected = $source->take(1)->doOnNext(function () { echo 'Connected to twitter, listening in on stream:', PHP_EOL; }); $allTweets = $connected->merge($source)->lift(function () { return new \Rx\Extra\Operator\CutOperator(PHP_EOL); })->filter(function ($tweet) { return strlen(trim($tweet)) > 0; })->map(function ($tweet) { return json_decode($tweet); }); $endTwitterStream = $allTweets->filter(function ($tweet) { return is_object($tweet); })->filter(function ($tweet) { return trim($tweet->text) == 'exit();'; })->doOnNext(function ($twitter) {
<?php include __DIR__ . '/../../vendor/autoload.php'; $postData = json_encode(["test" => "data"]); $headers = ['Content-Type' => 'application/json']; $source = \Rx\React\Http::post('https://www.example.com/', $postData, $headers); $source->subscribeCallback(function ($data) { echo $data, PHP_EOL; }, function (\Exception $e) { echo $e->getMessage(), PHP_EOL; }, function () { echo "completed", PHP_EOL; });