Something went wrong. Try again.
Laravel AT Protocol Client (alpha & unstable)
Something went wrong. Try again.
2.5 kB · 71 lines
PHP
at dev
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172<?php
namespace SocialDept\AtpClient\Client\Records;
use DateTimeInterface;use SocialDept\AtpClient\Attributes\ScopedEndpoint;use SocialDept\AtpClient\Client\Requests\Request;use SocialDept\AtpClient\Data\Record;use SocialDept\AtpClient\Data\Responses\Atproto\Repo\CreateRecordResponse;use SocialDept\AtpClient\Data\Responses\Atproto\Repo\DeleteRecordResponse;use SocialDept\AtpClient\Enums\Nsid\BskyGraph;use SocialDept\AtpClient\Enums\Scope;
class FollowRecordClient extends Request{ /** * Follow a user * * @requires transition:generic OR (rpc:com.atproto.repo.createRecord AND repo:app.bsky.graph.follow?action=create) */ #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:com.atproto.repo.createRecord')] #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'repo:app.bsky.graph.follow?action=create')] public function create( string $subject, ?DateTimeInterface $createdAt = null ): CreateRecordResponse { $record = [ '$type' => BskyGraph::Follow->value, 'subject' => $subject, // DID 'createdAt' => ($createdAt ?? now())->format('c'), ];
return $this->atp->atproto->repo->createRecord( collection: BskyGraph::Follow, record: $record ); }
/** * Unfollow a user (delete follow record) * * @requires transition:generic OR (rpc:com.atproto.repo.deleteRecord AND repo:app.bsky.graph.follow?action=delete) */ #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:com.atproto.repo.deleteRecord')] #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'repo:app.bsky.graph.follow?action=delete')] public function delete(string $rkey): DeleteRecordResponse { return $this->atp->atproto->repo->deleteRecord( collection: BskyGraph::Follow, rkey: $rkey ); }
/** * Get a follow record * * @requires transition:generic (rpc:com.atproto.repo.getRecord) */ #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:com.atproto.repo.getRecord')] public function get(string $rkey, ?string $cid = null): Record { $response = $this->atp->atproto->repo->getRecord( repo: $this->atp->client->session()->did(), collection: BskyGraph::Follow, rkey: $rkey, cid: $cid );
return Record::fromArrayRaw($response->toArray()); }}