aazsamir / libphpsky
PHP library for interacting with ATProto protocol
Requires
- php: ^8.3
- amphp/amp: ^3.0
- amphp/http-client: ^5.2
- guzzlehttp/guzzle: ^7.9
- nette/php-generator: ^4.1
- phrity/websocket: ^3.2
- psr/cache: ^3.0
- psr/http-client: ^1.0
- symfony/cache: ^7.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.65
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.5
- symfony/var-dumper: ^7.2
README
Libphpsky is a PHP library designed to interact with the Bluesky decentralized social media protocol. All types are generated from the Bluesky protocol schema, along with queries and procedures, ensuring everything is statically typed.
Note: This is not an official library and is not affiliated with Bluesky.
Table of Contents
Installation
To install Libphpsky, use Composer:
composer require aazsamir/libphpsky
For integration with Laravel, use aazsamir/libphpsky-laravel
package:
composer require aazsamir/libphpsky-laravel
For integration with Symfony, use aazsamir/libphpsky-symfony
package:
composer require aazsamir/libphpsky-symfony
Documentation
Check docs at https://aazsamir.github.io/libphpsky/.
Usage
The default implementation handles authorization out of the box by providing ATPROTO_LOGIN
and ATPROTO_PASSWORD
environment variables. If the session is stale, it will automatically refresh it.
$resolveHandle = ResolveHandle::default(); $did = $resolveHandle->query('bsky.app')->did; $getProfile = GetProfile::default(); $response = $getProfile->query($did);
On top of that, there is a meta client, which can be used to handle all possible endpoints.
$client = new ATProtoMetaClient(); $resolved = $client->comAtprotoIdentityResolveHandle()->query('bsky.app');
Libphpsky also supports \Amp\Http\Client\HttpClient
from amphp/http-client
package out of the box.
$client = ATProtoClientBuilder::default()->useAsync(true)->build(); $getProfile = new GetProfile($client); $actors = ['bsky.app', 'steampowered.com']; $futures = []; foreach ($actors as $actor) { $futures[] = \Amp\async(fn() => $getProfile->query($actor)); } [$errors, $profiles] = \Amp\Future\awaitAll($futures);
Examples
Check examples
directory for more examples.
Features
- Comprehensive interaction with the Bluesky protocol
- Statically typed queries, procedures and objects
- Authorization and automatic session management
- Query caching
- Amphp client support
- Subscriptions over WebSockets
Contributing
Contributions are welcome! Just make sure that phpstan, php-cs-fixer and phpunit pass.
License
Libphpsky is licensed under the MIT License. See the LICENSE file for more details.