use Exception;
use stdClass;
-class ServerBan implements Contracts\ServerBan
+class ServerBan
{
public Connection $connection;
* Add a ban.
*
* @param string $user
- * @param array $params
- * @return stdClass
- * @throws Exception
+ * @return stdClass|array|bool
*/
- public function add(string $user, array $params): stdClass
+ public function add(string $name, string $type, string $duration, string $reason): stdClass|array|bool
{
- return $this->connection->query('server_ban.add', [
- 'name' => $user,
- 'type' => $params['type'],
- 'reason' => $params['reason'],
- 'duration_string' => $params['length'] ?? '1d',
+ $response = $this->connection->query('server_ban.add', [
+ 'name' => $name,
+ 'type' => $type,
+ 'reason' => $reason,
+ 'duration_string' => $duration ?? '1d',
]);
+
+ if (is_bool($response))
+ return false;
+
+ if (property_exists($response, 'tkl'))
+ return $response->tkl;
+ return FALSE;
}
/**
* Delete a ban.
*
- * @param string $user
- * @param array $params
- * @return stdClass
- * @throws Exception
+ * @param string $name
+ * @return stdClass|array|bool
*/
- public function delete(string $user, array $params): stdClass
+ public function delete(string $name, string $type): stdClass|array|bool
{
- return $this->connection->query('server_ban.del', [
- 'name' => $user,
- 'type' => $params['type'],
+ $response = $this->connection->query('server_ban.del', [
+ 'name' => $name,
+ 'type' => $type,
]);
+
+ if (is_bool($response))
+ return false;
+
+ if (property_exists($response, 'tkl'))
+ return $response->tkl;
+ return FALSE;
}
/**
* Return a list of all bans.
*
- * @return stdClass
+ * @return stdClass|array|bool
* @throws Exception
*/
- public function getAll(): stdClass
+ public function getAll(): stdClass|array|bool
{
$response = $this->connection->query('server_ban.list');
if (!is_bool($response)) {
- return $response;
+ return $response->list;
}
throw new Exception('Invalid JSON Response from UnrealIRCd RPC.');
/**
* Get a specific ban.
*
- * @param array $params
- * @return stdClass
+ * @return stdClass|array|bool
* @throws Exception
*/
- public function get(array $params): stdClass
+ public function get(string $name, string $type): stdClass|array|bool
{
$response = $this->connection->query('server_ban.get', [
- 'name' => $params['name'],
- 'type' => $params['type']
+ 'name' => $name,
+ 'type' => $type
]);
if (!is_bool($response)) {
- return $response;
+ return $response->tkl;
}
- throw new Exception('Invalid JSON Response from UnrealIRCd RPC.');
+ return false; // didn't exist
}
}