Serin is an asynchronous Twitter API CLient built on top of ReactPHP
Table of Contents
- Quickstart
- What is different from other libraries?
- How to use this library
- Authentication
- Install
- License
useReact\EventLoop\Factory;
require_once __DIR__ . '/../vendor/autoload.php';
$loop = Factory::create();
$oauthConsumerKey = 'SyCz6mFj7992Wy9tAcM1zQQci';
$consumerSecret = 'm349wE5VEkS3PM2FdS5eeptxoXz4o6jPHVyS1JVpGCZmYyPMqf';
$oauthToken = '3019738408-5wkZjXGk02TfyjWpMMolQHHdkQ3fr8APdkkTluk';
$tokenSecret = 'bo34Dph9tQGQC7cEk7ZBir5f9Du608FylevCAUwzw33sG';
$client = new \Legionth\Serin\Client(
$loop,
$oauthConsumerKey,
$consumerSecret,
$oauthToken,
$tokenSecret
);
$response = $client->tweet('does this work?');
$response->then(function (\Psr\Http\Message\ResponseInterface $response) use ($client) {
echo \RingCentral\Psr7\str($response);
}, function (Exception $exception) {
echo(\RingCentral\Psr7\str($exception->getResponse()));
});
$loop->run();
The code above will create a tweet on the designated account.
While other Twitter API Clients written in PHP use extension like Curl to send HTTP Requests, this library uses 100% pure PHP instead. The usage of ReactPHP is used to make this library entirely asynchronous.
The Client
class is all needed to communicate with Twitter API.
Just enter the Twitter secrets and tokens and use the Client
to
interact with Twitter.
Never used the Twitter API before? Use the official Twitter Developer Guide to create the tokens and secrets needed for this library.
This library uses ReactPHP so the entire library is based on a non-blocking concept. That's why every Client method will Return a Promise which will result in an PSR-7 Response when the server answered the request. In the meantime other requests can be sent without waiting for previous ones to be finished (unless you want to :) ).
$response = $client->tweet('does this work?');
$responseSecondTweet = $client->tweet('of course it does');
$response->then(function (\Psr\Http\Message\ResponseInterface $response) use ($client) {
echo \RingCentral\Psr7\str($response);
}, function (Exception $exception) {
echo(\RingCentral\Psr7\str($exception->getResponse()));
});
$responseSecondTweet->then(function (\Psr\Http\Message\ResponseInterface $response) use ($client) {
echo \RingCentral\Psr7\str($response);
}, function (Exception $exception) {
echo(\RingCentral\Psr7\str($exception->getResponse()));
});
Have a look at the Client methods to get an overview of all possible endpoints. This library tried to be as near as possible on the actual wording of the offical Twitter API.
Is some endpoint missing? No worries create a PSR-7 request containing all necessary data.
The client will authenticate your request with the required OAuth 1.0a authentication.
$client = new \Legionth\Serin\Client(
$loop,
$oauthConsumerKey,
$consumerSecret,
$oauthToken,
$tokenSecret
);
$request = new RingCentral\Psr7\ServerRequest(
'POST',
'https://api.twitter.com/1.1/statuses/update.json',
[ 'Content-Type' => 'application/x-www-form-urlencoded'],
'status=' . rawurlencode('Hello World'),
);
$response = $client->tweet($request);
Do you want to have an endpoint in the library? Open up a Pull Request or contact me!
The OAuth 1.0a Authentication in this library will be used to send tweets, retweeting and get status information. That is why a registration at the Twitter API is required in order to use this library.
The recommended way to install this library is through Composer.
This will install the latest supported version:
$ composer require legionth/serin:^0.1.0
See License file