Something went wrong. Try again.
Laravel AT Protocol Client (alpha & unstable)
Something went wrong. Try again.
2.5 kB · 72 lines
PHP
at dev
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<?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\Data\StrongRef;use SocialDept\AtpClient\Enums\Nsid\BskyFeed;use SocialDept\AtpClient\Enums\Scope;
class LikeRecordClient extends Request{ /** * Like a post * * @requires transition:generic OR (rpc:com.atproto.repo.createRecord AND repo:app.bsky.feed.like?action=create) */ #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:com.atproto.repo.createRecord')] #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'repo:app.bsky.feed.like?action=create')] public function create( StrongRef $subject, ?DateTimeInterface $createdAt = null ): CreateRecordResponse { $record = [ '$type' => BskyFeed::Like->value, 'subject' => $subject->toArray(), 'createdAt' => ($createdAt ?? now())->format('c'), ];
return $this->atp->atproto->repo->createRecord( collection: BskyFeed::Like, record: $record ); }
/** * Unlike a post (delete like record) * * @requires transition:generic OR (rpc:com.atproto.repo.deleteRecord AND repo:app.bsky.feed.like?action=delete) */ #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:com.atproto.repo.deleteRecord')] #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'repo:app.bsky.feed.like?action=delete')] public function delete(string $rkey): DeleteRecordResponse { return $this->atp->atproto->repo->deleteRecord( collection: BskyFeed::Like, rkey: $rkey ); }
/** * Get a like 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: BskyFeed::Like, rkey: $rkey, cid: $cid );
return Record::fromArrayRaw($response->toArray()); }}