rvdv / react-nntp
Network News Transfer Protocol (NNTP) bindings for React.
dev-master / 0.1.x-dev
2014-01-10 17:56 UTC
Requires
- php: >=5.4.0
- evenement/evenement: ~1.0
- react/promise: ~1.0
- react/react: ~0.3
- symfony/property-access: ~2.3
Requires (Dev)
- phake/phake: 2.0.*@dev
- phpunit/phpunit: ~3.7
- satooshi/php-coveralls: dev-master
This package is auto-updated.
Last update: 2024-06-29 03:13:38 UTC
README
NNTP Component
Network News Transfer Protocol (NNTP) bindings for React.
This component builds on top of the SocketClient
component to implement NNTP.
Install
The recommended way to install react-nntp is through composer.
{ "require": { "rvdv/react-nntp": "1.0.*@dev" } }
Basic Usage
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();
Tests
To run the test suite, you need PHPUnit.
$ phpunit
Vagrant
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