-
-
Save igorw/3876447 to your computer and use it in GitHub Desktop.
<?php | |
require __DIR__.'/vendor/autoload.php'; | |
use React\Curry\Util as Curry; | |
$projects = array( | |
'react-php/react', | |
'cboden/Ratchet', | |
'nrk/predis-async', | |
'bergie/dnode-php', | |
'umpirsky/wisdom', | |
'igorw/evenement', | |
); | |
$fullRequest = function ($url, $callback) { | |
$callback(file_get_contents($url)); | |
}; | |
$parseResponse = function ($project, $body) { | |
$decoded = json_decode($body, true); | |
$latest = $decoded[0]['commit']; | |
$author = $latest['author']['name']; | |
$date = date('F j, Y', strtotime($latest['author']['date'])); | |
$message = preg_replace('#\n.*$#s', '', $latest['message']); | |
printf("\n"); | |
printf("Latest commit on %s was done by %s on %s\n", $project, $author, $date); | |
printf("%s\n", $message); | |
}; | |
printf("I'm telling you about %s projects.\n", count($projects)); | |
foreach ($projects as $project) { | |
$url = "https://api.github.com/repos/$project/commits"; | |
$fullRequest($url, Curry::bind($parseResponse, $project)); | |
} |
<?php | |
require __DIR__.'/vendor/autoload.php'; | |
use React\Curry\Util as Curry; | |
$loop = React\EventLoop\Factory::create(); | |
$client = new React\HttpClient\Client($loop); | |
$projects = array( | |
'react-php/react', | |
'cboden/Ratchet', | |
'nrk/predis-async', | |
'bergie/dnode-php', | |
'umpirsky/wisdom', | |
'igorw/evenement', | |
); | |
$fullRequest = function ($url, $callback) use ($client) { | |
$request = $client->request('GET', $url); | |
$request->on('response', function ($response) use ($callback) { | |
$buffer = ''; | |
$response->on('data', function ($data) use (&$buffer) { | |
$buffer .= $data; | |
}); | |
$response->on('end', function () use (&$buffer, $callback) { | |
$callback($buffer); | |
}); | |
}); | |
$request->end(); | |
}; | |
$parseResponse = function ($project, $body) { | |
$decoded = json_decode($body, true); | |
$latest = $decoded[0]['commit']; | |
$author = $latest['author']['name']; | |
$date = date('F j, Y', strtotime($latest['author']['date'])); | |
$message = preg_replace('#\n.*$#s', '', $latest['message']); | |
printf("\n"); | |
printf("Latest commit on %s was done by %s on %s\n", $project, $author, $date); | |
printf("%s\n", $message); | |
}; | |
printf("I'm telling you about %s projects.\n", count($projects)); | |
foreach ($projects as $project) { | |
$url = "https://api.github.com/repos/$project/commits"; | |
$fullRequest($url, Curry::bind($parseResponse, $project)); | |
} | |
$loop->run(); |
{ | |
"repositories": [ | |
{ | |
"type": "vcs", | |
"url": "https://github.com/arnaud-lb/react" | |
} | |
], | |
"minimum-stability": "dev", | |
"require": { | |
"react/react": "dev-http-client", | |
"react/curry": "dev-master" | |
} | |
} |
Hello I got this error, I'm not familiar with React but I need this script for my project, plz help
Catchable fatal error: Argument 2 passed to React\HttpClient\Client::__construct() must be an instance of React\HttpClient\ConnectionManagerInterface, none given, called in C:\wamp\www\httpclient\index.php on line 5 and defined in C:\wamp\www\httpclient\vendor\react\react\src\React\HttpClient\Client.php on line 19
The video on https://vimeo.com/channels/407317/51261181 is really hilarious. It's astonishing that parallel requests are quicker then requests in serial. o_0
`Hello I got this error, I'm not familiar with React but I need this script for my project, plz help
Catchable fatal error: Argument 2 passed to React\HttpClient\Client::__construct() must be an instance of React\HttpClient\ConnectionManagerInterface, none given, called in C:\wamp\www\httpclient\index.php on line 5 and defined in C:\wamp\www\httpclient\vendor\react\react\src\React\HttpClient\Client.php on line 19`
Got the same error.
Ciao Igor. Is there a way to get all the responses in an hash, instead of printing them ? Something like: