]> jfr.im git - irc/unrealircd/unrealircd-rpc-php.git/blame - lib/ServerBan.php
Get rid of PHP Contracts
[irc/unrealircd/unrealircd-rpc-php.git] / lib / ServerBan.php
CommitLineData
8d5a112f
D
1<?php
2
3namespace UnrealIRCd;
4
5use Exception;
65d96dd6 6use stdClass;
8d5a112f 7
78796043 8class ServerBan
8d5a112f
D
9{
10
11 public Connection $connection;
12
7c7017a2 13 public function __construct(Connection $conn)
8d5a112f 14 {
7c7017a2 15 $this->connection = $conn;
8d5a112f
D
16 }
17
18 /**
7951221f
D
19 * Add a ban.
20 *
8d5a112f 21 * @param string $user
9ef4c6af 22 * @return stdClass
8d5a112f
D
23 * @throws Exception
24 */
92f8fc2f 25 public function add(string $name, string $type, string $duration, string $reason): stdClass
8d5a112f 26 {
a18591f9 27 return $this->connection->query('server_ban.add', [
92f8fc2f
BM
28 'name' => $name,
29 'type' => $type,
30 'reason' => $reason,
31 'duration_string' => $duration ?? '1d',
8d5a112f 32 ]);
8d5a112f
D
33 }
34
35 /**
7951221f
D
36 * Delete a ban.
37 *
92f8fc2f 38 * @param string $name
9ef4c6af 39 * @return stdClass
8d5a112f
D
40 * @throws Exception
41 */
92f8fc2f 42 public function delete(string $name, string $type): stdClass
8d5a112f 43 {
a18591f9 44 return $this->connection->query('server_ban.del', [
92f8fc2f
BM
45 'name' => $name,
46 'type' => $type,
8d5a112f 47 ]);
8d5a112f
D
48 }
49
50 /**
7951221f
D
51 * Return a list of all bans.
52 *
53 * @return stdClass
8d5a112f
D
54 * @throws Exception
55 */
7c7017a2 56 public function getAll(): stdClass
8d5a112f
D
57 {
58 $response = $this->connection->query('server_ban.list');
59
60 if (!is_bool($response)) {
61 return $response;
62 }
63
64 throw new Exception('Invalid JSON Response from UnrealIRCd RPC.');
65 }
66
67 /**
7c7017a2 68 * Get a specific ban.
7951221f 69 *
8d5a112f 70 * @param array $params
7951221f 71 * @return stdClass
8d5a112f
D
72 * @throws Exception
73 */
7c7017a2 74 public function get(array $params): stdClass
8d5a112f
D
75 {
76 $response = $this->connection->query('server_ban.get', [
77 'name' => $params['name'],
78 'type' => $params['type']
79 ]);
80
81 if (!is_bool($response)) {
82 return $response;
83 }
84
85 throw new Exception('Invalid JSON Response from UnrealIRCd RPC.');
86 }
87}