summaryrefslogtreecommitdiffstats
path: root/classes/uptime.py
blob: 96c868513ccbe4134b361b1b10c2a0fef44c5ad2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# -*- coding: utf-8 -*-


# XEP-0012: Last Activity
class LastActivity:
	""" query the server uptime of the specified domain, defined by XEP-0012 """
	def __init__(self, session, msg, target):
		self.session = session
		self.nick = msg['mucnick']
		self.message_type = msg['type']
		self.target = target

	async def query(self):
		last_activity = await self.session['xep_0012'].get_last_activity(jid=self.target)
		seconds = await last_activity['last_activity']['seconds']

		return seconds

	async def format_values(self, granularity=4):
		seconds = await self.query()
		#seconds = last_activity['last_activity']['seconds']
		uptime = []
		intervals = (
			('years', 31536000),  # 60 * 60 * 24 * 365
			('weeks', 604800),  # 60 * 60 * 24 * 7
			('days', 86400),  # 60 * 60 * 24
			('hours', 3600),  # 60 * 60
			('minutes', 60),
			('seconds', 1)
		)
		for name, count in intervals:
			value = seconds // count
			if value:
				seconds -= value * count
				if value == 1:
					name = name.rstrip('s')
				uptime.append("{} {}".format(value, name))
		result = ' '.join(uptime[:granularity])

		if self.message_type == "groupchat":
			text = "%s: %s is running since %s" % (self.nick, self.target, result)
		else:
			text = "%s is running since %s" % (self.target, result)

		return text