aazsamir/libphpsky

PHP library for interacting with ATProto protocol

v0.5.0 2025-05-08 21:07 UTC

This package is auto-updated.

Last update: 2025-05-08 21:09:12 UTC


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.