def call(self, resource_name, action_name, params={}, headers={}, options={}): """ Call an action in the API. It finds most fitting route based on given parameters with other attributes necessary to do an API call. :param resource_name: name of the resource :param action_name: action_name name of the action :param params: Dict of parameters to be send in the request :param headers: Dict of headers to be send in the request :param options: Dict of options to influence the how the call is processed * `skip_validation` (Bool) *false* - skip validation of parameters :return: :class:`dict` object :rtype: dict Usage:: >>> api.call('users', 'show', {'id': 1}) """ resource = Resource(self, resource_name) action = resource.action(action_name) if not options.get('skip_validation', False): action.validate(params) return self._call_action(action, params, headers, options)
def call(self, resource_name, action_name, params=None, headers=None, options=None, data=None, files=None): # pylint: disable=too-many-arguments """ Call an action in the API. It finds most fitting route based on given parameters with other attributes necessary to do an API call. :param resource_name: name of the resource :param action_name: action_name name of the action :param params: Dict of parameters to be sent in the request :param headers: Dict of headers to be sent in the request :param options: Dict of options to influence the how the call is processed * `skip_validation` (Bool) *false* - skip validation of parameters :param data: Binary data to be sent in the request :param files: Binary files to be sent in the request :return: :class:`dict` object :rtype: dict Usage:: >>> api.call('users', 'show', {'id': 1}) """ if options is None: options = {} if params is None: params = {} resource = Resource(self, resource_name) action = resource.action(action_name) if not options.get('skip_validation', False): action.validate(params, data, files) return self._call_action(action, params, headers, data, files)
def resource(self, name): """ Get a resource. :param name: the name of the resource to load :return: :class:`Resource <Resource>` object :rtype: apypie.Resource Usage:: >>> api.resource('users') """ if name in self.resources: return Resource(self, name) else: message = "Resource '{}' does not exist in the API. Existing resources: {}".format(name, ', '.join(sorted(self.resources))) raise KeyError(message)