diff options
| author | 2018-10-05 09:51:17 +0100 | |
|---|---|---|
| committer | 2018-10-05 09:51:17 +0100 | |
| commit | bc3c9b742e301924d66b2ea178059dacb62bb3ef (patch) | |
| tree | 43951f811a4124dd5b19051f26de5b4a1b0e49d2 /modules | |
| parent | Return more info for api.servers and api.channels (diff) | |
| signature | ||
Add api.server endpoint for individual server information
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/stats.py | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/modules/stats.py b/modules/stats.py index e7158dd0..1913c1c9 100644 --- a/modules/stats.py +++ b/modules/stats.py @@ -48,20 +48,34 @@ class Module(ModuleManager.BaseModule): networks, channels, users = self._stats() return {"networks": networks, "channels": channels, "users": users} + def _server_stats(self, server): + return { + "hostname": server.target_hostname, + "port": server.port, + "tls": server.tls, + "alias": server.alias, + "hostmask": "%s!%s@%s" % ( + server.nickname, server.username, server.hostname), + "users": len(server.users) + } + @utils.hook("api.servers") def servers_api(self, event): - servers = {} - for server in self.bot.servers.values(): - servers[server.id] = { - "hostname": server.target_hostname, - "port": server.port, - "tls": server.tls, - "alias": server.alias, - "hostmask": "%s!%s@%s" % ( - server.nickname, server.username, server.hostname), - "users": len(server.users) - } - return servers + if event["path"]: + server_id = event["path"][0] + if not server_id.isdigit(): + return None + server_id = int(server_id) + + server = self.bot.get_server(server_id) + if not server: + return None + return self._server_stats(server) + else: + servers = {} + for server in self.bot.servers.values(): + servers[server.id] = self._server_stats(server) + return servers def _channel_stats(self, channel): return { |
