PluginProbe
ZIP AI – AI Website Builder & AI Agent (Beta) / 0.0.8
ZIP AI – AI Website Builder & AI Agent (Beta) v0.0.8
0.0.11 0.0.10 0.0.9 trunk 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8
zip-ai / lib / php-mcp-schema / src / Common / JsonRpc / DTO / JSONRPCRequest.php

JSONRPCRequest.php in ZIP AI – AI Website Builder & AI Agent (Beta) 0.0.8, at lib/php-mcp-schema/src/Common/JsonRpc/DTO/JSONRPCRequest.php

115 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace WP\McpSchema\Common\JsonRpc\DTO;
6
7 use WP\McpSchema\Common\JsonRpc\Union\JSONRPCMessageInterface;
8 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
9
10 /**
11 * A request that expects a response.
12 *
13 * @since 2024-11-05
14 *
15 * @mcp-domain Common
16 * @mcp-subdomain JsonRpc
17 * @mcp-version 2025-11-25
18 */
19 class JSONRPCRequest extends Request implements JSONRPCMessageInterface
20 {
21 use ValidatesRequiredFields;
22
23 /**
24 * @since 2024-11-05
25 *
26 * @var '2.0'
27 */
28 protected string $jsonrpc;
29
30 /**
31 * @since 2024-11-05
32 *
33 * @var string|number
34 */
35 protected $id;
36
37 /**
38 * @param string $method @since 2024-11-05
39 * @param '2.0' $jsonrpc @since 2024-11-05
40 * @param string|number $id @since 2024-11-05
41 * @param array<string, mixed>|null $params @since 2024-11-05
42 */
43 public function __construct(
44 string $method,
45 string $jsonrpc,
46 $id,
47 ?array $params = null
48 ) {
49 parent::__construct($method, $params);
50 $this->jsonrpc = $jsonrpc;
51 $this->id = $id;
52 }
53
54 /**
55 * Creates an instance from an array.
56 *
57 * @param array{
58 * method: string,
59 * params?: array<string, mixed>|null,
60 * jsonrpc: '2.0',
61 * id: string|number
62 * } $data
63 * @phpstan-param array<string, mixed> $data
64 * @return self
65 */
66 public static function fromArray(array $data): self
67 {
68 self::assertRequired($data, ['method', 'jsonrpc', 'id']);
69
70 /** @var '2.0' $jsonrpc */
71 $jsonrpc = self::asString($data['jsonrpc']);
72
73 /** @var string|number $id */
74 $id = self::asStringOrNumber($data['id']);
75
76 return new self(
77 self::asString($data['method']),
78 $jsonrpc,
79 $id,
80 self::asArrayOrNull($data['params'] ?? null)
81 );
82 }
83
84 /**
85 * Converts the instance to an array.
86 *
87 * @return array<string, mixed>
88 */
89 public function toArray(): array
90 {
91 $result = parent::toArray();
92
93 $result['jsonrpc'] = $this->jsonrpc;
94 $result['id'] = $this->id;
95
96 return $result;
97 }
98
99 /**
100 * @return '2.0'
101 */
102 public function getJsonrpc(): string
103 {
104 return $this->jsonrpc;
105 }
106
107 /**
108 * @return string|number
109 */
110 public function getId()
111 {
112 return $this->id;
113 }
114 }
115