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