Laravel AT Protocol Client (alpha & unstable)
1<?php
2
3namespace SocialDept\AtpClient\Data\Responses\Atproto\Server;
4
5use Illuminate\Contracts\Support\Arrayable;
6
7/**
8 * @implements Arrayable<string, mixed>
9 */
10class DescribeServerResponse implements Arrayable
11{
12 /**
13 * @param array<string> $availableUserDomains
14 */
15 public function __construct(
16 public readonly string $did,
17 public readonly array $availableUserDomains,
18 public readonly ?bool $inviteCodeRequired = null,
19 public readonly ?bool $phoneVerificationRequired = null,
20 public readonly ?array $links = null,
21 public readonly ?array $contact = null,
22 ) {}
23
24 public static function fromArray(array $data): self
25 {
26 return new self(
27 did: $data['did'],
28 availableUserDomains: $data['availableUserDomains'] ?? [],
29 inviteCodeRequired: $data['inviteCodeRequired'] ?? null,
30 phoneVerificationRequired: $data['phoneVerificationRequired'] ?? null,
31 links: $data['links'] ?? null,
32 contact: $data['contact'] ?? null,
33 );
34 }
35
36 public function toArray(): array
37 {
38 return [
39 'did' => $this->did,
40 'availableUserDomains' => $this->availableUserDomains,
41 'inviteCodeRequired' => $this->inviteCodeRequired,
42 'phoneVerificationRequired' => $this->phoneVerificationRequired,
43 'links' => $this->links,
44 'contact' => $this->contact,
45 ];
46 }
47}