rvdv / nntp
Client for communicating with servers through the Network News Transfer Protocol (NNTP) protocol.
Requires
- php: ^8.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.95
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^11.5
README
Client for communicating with servers through the Network News Transfer Protocol (NNTP) protocol.
Installation
The recommended way to install the library is through composer.
composer require rvdv/nntp
NNTP?
NNTP specifies a protocol for the distribution, inquiry, retrieval, and posting of news articles using a reliable stream (such as TCP) server-client model. NNTP is designed so that news articles need only be stored on one (presumably central) host, and subscribers on other hosts attached to the LAN may read news articles using stream connections to the news host.
-- RFC Abstract (source)
Usage
Here is an example that fetches 100 articles from the php.doc of the news.php.net server:
<?php use Rvdv\Nntp\Connection\Connection; use Rvdv\Nntp\Client; $connection = new Connection('news.php.net', 119); $client = new Client($connection); $client->connect(); $overviewFormat = $client->overviewFormat(); $group = $client->group('php.doc'); $articles = $client->xover($group['first'], $group['first'] + 100, $overviewFormat); // Process the articles further... $client->disconnect();
Tests
To run the test suite, you need install the dependencies via composer, then run PHPUnit.
$ composer install $ php vendor/bin/phpunit
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development:
git clone https://github.com/robinvdvleuten/php-nntp.git
cd php-nntp
composer install
composer test
Feel free to open an issue to get feedback on your idea before spending too much time on it.
License
Copyright (c) Robin van der Vleuten
Licensed under the MIT License. See LICENSE for details.