39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import logging
|
|
|
|
from vk.utils import stringify_values
|
|
|
|
logger = logging.getLogger('vk')
|
|
|
|
|
|
class APINamespace:
|
|
def __init__(self, api, method_common_params):
|
|
self._api = api
|
|
self._method_common_params = method_common_params
|
|
|
|
def __call__(self, method):
|
|
return APIMethod(self._api, method, self._method_common_params)
|
|
|
|
__getattr__ = __call__
|
|
|
|
|
|
class APIMethod:
|
|
def __init__(self, api, method, method_common_params):
|
|
self._api = api
|
|
self._method = method
|
|
self._method_common_params = method_common_params
|
|
|
|
def __getattr__(self, method):
|
|
return self.__class__(self._api, self._method + '.' + method, self._method_common_params)
|
|
|
|
def __call__(self, **method_params):
|
|
request_method_params = self._method_common_params.copy()
|
|
request_method_params.update(stringify_values(method_params))
|
|
|
|
return self._api.send(APIRequest(self._method, request_method_params))
|
|
|
|
|
|
class APIRequest:
|
|
def __init__(self, method, method_params):
|
|
self.method = method
|
|
self.method_params = method_params
|