97 lines
1.7 KiB
Python
97 lines
1.7 KiB
Python
from izzylib import DotDict
|
|
|
|
|
|
def cmd_ban_list(self, types='domain'):
|
|
if types == 'domain':
|
|
return self.search('ban', handle=None)
|
|
|
|
bans = []
|
|
|
|
for row in self.search('ban'):
|
|
if row.handle:
|
|
bans.append(row)
|
|
|
|
return bans
|
|
|
|
|
|
def cmd_ban(self, handle=None, domain=None):
|
|
cache_key = f'{handle}{domain}'
|
|
cache = self.cache.ban.fetch(cache_key)
|
|
|
|
if cache:
|
|
return cache
|
|
|
|
if handle and not domain:
|
|
return self.fetch('ban', handle=handle)
|
|
|
|
elif not handle and domain:
|
|
return self.fetch('ban', domain=domain)
|
|
|
|
elif handle and domain:
|
|
return self.fetch('ban', handle=handle, domain=domain)
|
|
|
|
raise ValueError('handle or domain not specified')
|
|
|
|
|
|
def cmd_config(self, key):
|
|
if key not in self.config_defaults:
|
|
raise KeyError(f'Invalid config option: {key}')
|
|
|
|
cache = self.cache.config.fetch(key)
|
|
|
|
if cache:
|
|
return cache
|
|
|
|
row = self.fetch('config', key=key)
|
|
|
|
if not row:
|
|
return self.config_defaults[key][0]
|
|
|
|
value = self.config_defaults[key][1](row.value)
|
|
self.cache.config.store(key, value)
|
|
return value
|
|
|
|
|
|
def cmd_config_all(self):
|
|
data = DotDict()
|
|
|
|
for key in self.config_defaults:
|
|
data[key] = self.get.config(key)
|
|
|
|
return data
|
|
|
|
|
|
def cmd_inbox(self, data):
|
|
for line in ['domain', 'inbox', 'actor']:
|
|
row = self.fetch('inbox', **{line: data})
|
|
|
|
if row:
|
|
return row
|
|
|
|
|
|
def cmd_inbox_list(self, value=None):
|
|
data = []
|
|
|
|
if value not in [None, 'domain', 'inbox', 'actor']:
|
|
raise ValueError('Invalid row data')
|
|
|
|
for row in self.search('inbox'):
|
|
if not row.followid:
|
|
if value:
|
|
data.append(row[value])
|
|
|
|
else:
|
|
data.append(row)
|
|
|
|
return data
|
|
|
|
|
|
def cmd_instance(self, data):
|
|
for field in ['domain', 'inbox', 'actor']:
|
|
row = self.fetch('inbox', **{field: data})
|
|
|
|
if row:
|
|
break
|
|
|
|
return row
|