aazsamir / libphpsky
PHP library for interacting with ATProto protocol
Installs: 62
Dependents: 2
Suggesters: 0
Security: 0
Stars: 6
Watchers: 1
Forks: 0
Open Issues: 1
pkg:composer/aazsamir/libphpsky
Requires
- php: >=8.3
- amphp/amp: >=3.0 <4.0
- amphp/http-client: >=5.2 <6.0
- guzzlehttp/guzzle: >=7.0 <8.0
- nette/php-generator: >=4.1 <5.0
- phrity/websocket: ^3.2
- psr/cache: ^3.0
- psr/http-client: ^1.0
- symfony/cache: >=7.0 <8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.65
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
- rector/rector: ^2.2
- 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
libphpsky-feed is an example project that uses libphpsky to serve a bluesky feed.
For more examples, check examples directory.
Features
- Comprehensive interaction with the ATProtocol
- Statically typed queries, procedures and objects
- Authorization and automatic session management
- Query caching
- Amphp client support
- Subscriptions over WebSockets
- Custom lexicons support
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.