rvdv/react-nntp

Network News Transfer Protocol (NNTP) bindings for React.

dev-master / 0.1.x-dev 2014-01-10 17:56 UTC

This package is auto-updated.

Last update: 2024-03-29 02:36:40 UTC


README

Network News Transfer Protocol (NNTP) bindings for React. This component builds on top of the SocketClient component to implement NNTP.

Latest Stable Version Total Downloads Latest Unstable Version Build Status Coverage Status SensioLabsInsight

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