def call(self, service, method, *args, **kwargs): objectid = kwargs.get('id') objectmask = kwargs.get('mask') objectfilter = kwargs.get('filter') headers = kwargs.get('headers') raw_headers = kwargs.get('raw_headers') limit = kwargs.get('limit') offset = kwargs.get('offset', 0) if headers is None: headers = { 'authenticate': { 'username': self.username, 'apiKey': self.api_key, }} http_headers = { 'User-Agent': USER_AGENT, 'Content-Type': 'application/xml', } if self._raw_headers: for name, value in self._raw_headers.items(): http_headers[name] = value if raw_headers: for name, value in raw_headers.items(): http_headers[name] = value if objectid is not None: headers[service + 'InitParameters'] = {'id': int(objectid)} if objectmask is not None: headers.update(self.__format_object_mask(objectmask, service)) if objectfilter is not None: headers['%sObjectFilter' % service] = objectfilter if limit: headers['resultLimit'] = { 'limit': int(limit), 'offset': int(offset) } uri = '/'.join([self._endpoint_url, service]) return make_api_call(uri, method, args, headers=headers, http_headers=http_headers, timeout=self.timeout, verbose=self.verbose)
def call(self, service, method, *args, **kwargs): """ Make a SoftLayer API call :param service: the name of the SoftLayer API service :param method: the method to call on the service :param \*args: (optional) arguments for the remote call :param id: (optional) id for the resource :param mask: (optional) object mask :param dict filter: (optional) filter dict :param dict headers: (optional) optional XML-RPC headers :param dict raw_headers: (optional) HTTP transport headers :param int limit: (optional) return at most this many results :param int offset: (optional) offset results by this many :param boolean iter: (optional) if True, returns a generator with the results Usage: >>> client['Account'].getVirtualGuests(mask="id", limit=10) [...] """ if kwargs.get('iter'): return self.iter_call(service, method, *args, **kwargs) if not service.startswith(self._prefix): service = self._prefix + service objectid = kwargs.get('id') objectmask = kwargs.get('mask') objectfilter = kwargs.get('filter') headers = kwargs.get('headers') raw_headers = kwargs.get('raw_headers') limit = kwargs.get('limit') offset = kwargs.get('offset', 0) if headers is None: headers = { 'authenticate': { 'username': self.username, 'apiKey': self.api_key, }} http_headers = { 'User-Agent': USER_AGENT, 'Content-Type': 'application/xml', } if self._raw_headers: for name, value in self._raw_headers.items(): http_headers[name] = value if raw_headers: for name, value in raw_headers.items(): http_headers[name] = value if objectid is not None: headers[service + 'InitParameters'] = {'id': int(objectid)} if objectmask is not None: headers.update(self.__format_object_mask(objectmask, service)) if objectfilter is not None: headers['%sObjectFilter' % service] = objectfilter if limit: headers['resultLimit'] = { 'limit': int(limit), 'offset': int(offset) } uri = '/'.join([self._endpoint_url, service]) return make_api_call(uri, method, args, headers=headers, http_headers=http_headers, timeout=self.timeout, verbose=self.verbose)