@@ -6449,3 +6449,61 @@ def to_display(self):
64496449 'total' : len (self .data ),
64506450 'data' : self .data
64516451 })
6452+
6453+
6454+ class IndicatorsSearcher :
6455+ """Used in order to search indicators by the paging or serachAfter param
6456+ :type page: ``int``
6457+ :param page: the number of page from which we start search indicators from.
6458+
6459+ :return: No data returned
6460+ :rtype: ``None``
6461+ """
6462+ def __init__ (self , page = 0 ):
6463+ # searchAfter is available in searchIndicators from version 6.1.0
6464+ self ._can_use_search_after = is_demisto_version_ge ('6.1.0' )
6465+ self ._search_after_title = 'searchAfter'
6466+ self ._search_after_param = None
6467+ self ._page = page
6468+
6469+ def search_indicators_by_version (self , from_date = None , query = '' , size = 100 , to_date = None , value = '' ):
6470+ """There are 2 cases depends on the sever version:
6471+ 1. Search indicators using paging, raise the page number in each call.
6472+ 2. Search indicators using searchAfter param, update the _search_after_param in each call.
6473+
6474+ :type from_date: ``str``
6475+ :param from_date: the start date to search from.
6476+
6477+ :type query: ``str``
6478+ :param query: indicator search query
6479+
6480+ :type size: ``size``
6481+ :param size: limit the number of returned results.
6482+
6483+ :type to_date: ``str``
6484+ :param to_date: the end date to search until to.
6485+
6486+ :type value: ``str``
6487+ :param value: the indicator value to search.
6488+
6489+ :return: object contains the search results
6490+ :rtype: ``dict``
6491+ """
6492+ if self ._can_use_search_after :
6493+ res = demisto .searchIndicators (fromDate = from_date , toDate = to_date , query = query , size = size , value = value ,
6494+ searchAfter = self ._search_after_param )
6495+ if self ._search_after_title in res and res [self ._search_after_title ] is not None :
6496+ self ._search_after_param = res [self ._search_after_title ]
6497+ else :
6498+ demisto .log ('Elastic search using searchAfter was not found in searchIndicators' )
6499+
6500+ else :
6501+ res = demisto .searchIndicators (fromDate = from_date , toDate = to_date , query = query , size = size , page = self ._page ,
6502+ value = value )
6503+ self ._page += 1
6504+
6505+ return res
6506+
6507+ @property
6508+ def page (self ):
6509+ return self ._page
0 commit comments