Class usage came from the unittest framework and it was always redundant after migration to the pytest. This commit removes classes from files containing tests to make them more readable and understandable.
60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
import json
|
|
|
|
from unit.http import HTTP1
|
|
from unit.option import option
|
|
|
|
|
|
def args_handler(conf_func):
|
|
def args_wrapper(self, *args):
|
|
argcount = conf_func.__code__.co_argcount
|
|
url_default = '/config'
|
|
conf = None
|
|
|
|
if argcount == 2:
|
|
url = args[0] if len(args) == 1 else url_default
|
|
|
|
elif argcount == 3:
|
|
conf = args[0]
|
|
|
|
if isinstance(conf, dict) or isinstance(conf, list):
|
|
conf = json.dumps(conf)
|
|
|
|
url = args[1] if len(args) == 2 else url_default
|
|
|
|
url = url if url.startswith('/') else f'{url_default}/{url}'
|
|
arguments = (self, url) if conf is None else (self, conf, url)
|
|
|
|
return json.loads(conf_func(*arguments))
|
|
|
|
return args_wrapper
|
|
|
|
|
|
class Control(HTTP1):
|
|
@args_handler
|
|
def conf(self, conf, url):
|
|
return self.put(**self._get_args(url, conf))['body']
|
|
|
|
@args_handler
|
|
def conf_get(self, url):
|
|
return self.get(**self._get_args(url))['body']
|
|
|
|
@args_handler
|
|
def conf_delete(self, url):
|
|
return self.delete(**self._get_args(url))['body']
|
|
|
|
@args_handler
|
|
def conf_post(self, conf, url):
|
|
return self.post(**self._get_args(url, conf))['body']
|
|
|
|
def _get_args(self, url, conf=None):
|
|
args = {
|
|
'url': url,
|
|
'sock_type': 'unix',
|
|
'addr': f'{option.temp_dir}/control.unit.sock',
|
|
}
|
|
|
|
if conf is not None:
|
|
args['body'] = conf
|
|
|
|
return args
|