diff --git a/errata_tool/connector.py b/errata_tool/connector.py index 5f1feac..fccaad6 100644 --- a/errata_tool/connector.py +++ b/errata_tool/connector.py @@ -310,3 +310,30 @@ def get_paginated_data(self, api_url): if page_number >= PAGE_LIMIT: raise RuntimeError('hit pagination timeout: %d' % page_number) return data + + def filter(self, endpoint, filter_arg, **kwargs): + """format and generate filter request + + expose a general filter helper method to format kwargs up + as parameters for ET filter request. Then return generated + json object + """ + url = endpoint + "?" + param_list = [] + for k, v in kwargs.items(): + if k in ('release', 'product'): + param_list.append("{0}[{1}][]={2}".format(filter_arg, k, v)) + else: + param_list.append("{0}[{1}]={2}".format(filter_arg, k, v)) + print(param_list) + url = url + "&".join(param_list) + if endpoint == '/errata': + url = url + '&format=json' + print(url) + + if 'paginated' in kwargs and kwargs['paginated']: + return {'data': self.get_paginated_data(url)} + + return self._get(url) + +