Laravel AT Protocol Client (alpha & unstable)
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add typed responses to TeamRequestClient

+55 -13
+11 -13
src/Client/Requests/Ozone/TeamRequestClient.php
··· 4 4 5 5 use SocialDept\AtpClient\Attributes\ScopedEndpoint; 6 6 use SocialDept\AtpClient\Client\Requests\Request; 7 + use SocialDept\AtpClient\Data\Responses\EmptyResponse; 7 8 use SocialDept\AtpClient\Data\Responses\Ozone\Team\ListMembersResponse; 9 + use SocialDept\AtpClient\Data\Responses\Ozone\Team\MemberResponse; 8 10 use SocialDept\AtpClient\Enums\Nsid\OzoneTeam; 9 11 use SocialDept\AtpClient\Enums\Scope; 10 12 ··· 15 17 * 16 18 * @requires transition:generic (rpc:tools.ozone.team.getMember) 17 19 * 18 - * @return array<string, mixed> Team member object 19 - * 20 20 * @see https://docs.bsky.app/docs/api/tools-ozone-team-list-members 21 21 */ 22 22 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.getMember')] 23 - public function getTeamMember(string $did): array 23 + public function getTeamMember(string $did): MemberResponse 24 24 { 25 25 $response = $this->atp->client->get( 26 26 endpoint: OzoneTeam::GetMember, 27 27 params: compact('did') 28 28 ); 29 29 30 - return $response->json(); 30 + return MemberResponse::fromArray($response->json()); 31 31 } 32 32 33 33 /** ··· 53 53 * 54 54 * @requires transition:generic (rpc:tools.ozone.team.addMember) 55 55 * 56 - * @return array<string, mixed> Team member object 57 - * 58 56 * @see https://docs.bsky.app/docs/api/tools-ozone-team-add-member 59 57 */ 60 58 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.addMember')] 61 - public function addTeamMember(string $did, string $role): array 59 + public function addTeamMember(string $did, string $role): MemberResponse 62 60 { 63 61 $response = $this->atp->client->post( 64 62 endpoint: OzoneTeam::AddMember, 65 63 body: compact('did', 'role') 66 64 ); 67 65 68 - return $response->json(); 66 + return MemberResponse::fromArray($response->json()); 69 67 } 70 68 71 69 /** ··· 73 71 * 74 72 * @requires transition:generic (rpc:tools.ozone.team.updateMember) 75 73 * 76 - * @return array<string, mixed> Team member object 77 - * 78 74 * @see https://docs.bsky.app/docs/api/tools-ozone-team-update-member 79 75 */ 80 76 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.updateMember')] ··· 82 78 string $did, 83 79 ?bool $disabled = null, 84 80 ?string $role = null 85 - ): array { 81 + ): MemberResponse { 86 82 $response = $this->atp->client->post( 87 83 endpoint: OzoneTeam::UpdateMember, 88 84 body: array_filter( ··· 91 87 ) 92 88 ); 93 89 94 - return $response->json(); 90 + return MemberResponse::fromArray($response->json()); 95 91 } 96 92 97 93 /** ··· 102 98 * @see https://docs.bsky.app/docs/api/tools-ozone-team-delete-member 103 99 */ 104 100 #[ScopedEndpoint(Scope::TransitionGeneric, granular: 'rpc:tools.ozone.team.deleteMember')] 105 - public function deleteTeamMember(string $did): void 101 + public function deleteTeamMember(string $did): EmptyResponse 106 102 { 107 103 $this->atp->client->post( 108 104 endpoint: OzoneTeam::DeleteMember, 109 105 body: compact('did') 110 106 ); 107 + 108 + return new EmptyResponse; 111 109 } 112 110 }
+44
src/Data/Responses/Ozone/Team/MemberResponse.php
··· 1 + <?php 2 + 3 + namespace SocialDept\AtpClient\Data\Responses\Ozone\Team; 4 + 5 + use Illuminate\Contracts\Support\Arrayable; 6 + 7 + /** 8 + * @implements Arrayable<string, mixed> 9 + */ 10 + class MemberResponse implements Arrayable 11 + { 12 + public function __construct( 13 + public readonly string $did, 14 + public readonly bool $disabled, 15 + public readonly ?string $role = null, 16 + public readonly ?string $createdAt = null, 17 + public readonly ?string $updatedAt = null, 18 + public readonly ?string $lastUpdatedBy = null, 19 + ) {} 20 + 21 + public static function fromArray(array $data): self 22 + { 23 + return new self( 24 + did: $data['did'], 25 + disabled: $data['disabled'] ?? false, 26 + role: $data['role'] ?? null, 27 + createdAt: $data['createdAt'] ?? null, 28 + updatedAt: $data['updatedAt'] ?? null, 29 + lastUpdatedBy: $data['lastUpdatedBy'] ?? null, 30 + ); 31 + } 32 + 33 + public function toArray(): array 34 + { 35 + return array_filter([ 36 + 'did' => $this->did, 37 + 'disabled' => $this->disabled, 38 + 'role' => $this->role, 39 + 'createdAt' => $this->createdAt, 40 + 'updatedAt' => $this->updatedAt, 41 + 'lastUpdatedBy' => $this->lastUpdatedBy, 42 + ], fn ($v) => $v !== null); 43 + } 44 + }