Network News Transfer Protocol (NNTP) bindings for React.
This component builds on top of the SocketClient
component to implement NNTP.
The recommended way to install react-nntp is through composer.
{
"require": {
"rvdv/react-nntp": "1.0.*@dev"
}
}
Here is a simple example that fetches the first 100 articles from the 'php.doc' newsgroup of the PHP mailing list.
use React\Dns\Resolver\Factory as ResolverFactory;
use React\EventLoop\Factory as EventLoopFactory;
use Rvdv\React\Nntp\Client;
use Rvdv\React\Nntp\Command\CommandInterface;
use Rvdv\React\Nntp\Response\ResponseInterface;
$loop = EventLoopFactory::create();
$dnsResolverFactory = new ResolverFactory();
$dns = $dnsResolverFactory->createCached('8.8.8.8', $loop);
$client = Client::factory($loop, $dns);
$group = null;
$format = null;
$client
->connect('news.php.net', 119)
->then(function (ResponseInterface $response) use ($client) {
return $client->overviewFormat();
})
->then(function (CommandInterface $command) use (&$format, $client) {
$format = $command->getResult();
return $client->group('php.doc');
})
->then(function (CommandInterface $command) use (&$group, &$format, $client) {
$group = $command->getResult();
return $client->overview($group->getFirst() . '-' . ($group->getFirst() + 99), $format);
})
->then(function (CommandInterface $command) use ($client) {
$articles = $command->getResult();
// Process the articles further.
$client->stop();
});
$client->run();
To run the test suite, you need PHPUnit.
$ phpunit
You can also use the configured Vagrant VM for local development.
Move into the /vagrant
directory and run the following commands;
# Resolve the Puppet dependencies through librarian-puppet.
$ gem install librarian-puppet
$ librarian-puppet install
$ vagrant up