Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hoover fixes + enhancements #11

Open
wants to merge 3 commits into
base: master
from
Open
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Prev

add support for events iterator

  • Loading branch information
thehesiod committed Mar 24, 2017
commit 844aabbf503b8b1bbbbbfdda3ebe5f4c19865aaf
@@ -35,19 +35,23 @@ def __init__(self, subdomain, username, password, domain=None, proxy=None,
self.proxy = proxy
self.protocol = secure and 'https' or 'http'

def _api_help(self, endpoint, params=None, method='GET'):
def _do_api_req(self, method, url, params=None, body=''):
s = requests.Session()
s.auth = (self.username, self.password)
url = '%s://%s.%s/%s' % (self.protocol, self.subdomain, self.domain,
endpoint)
body = ''
if params and method != 'GET':
body = urlencode(params)
params = None
response = s.request(method, url, params=params, data=body, verify=True)
response.raise_for_status()
return response.json()


def _api_help(self, endpoint, params=None, method='GET'):
url = '%s://%s.%s/%s' % (self.protocol, self.subdomain, self.domain,
endpoint)

if params and method != 'GET':
return self._do_api_req(method, url, None, urlencode(params))

return self._do_api_req(method, url, params)

@property
def inputs(self):
if not hasattr(self, '_inputs'):
@@ -82,6 +86,21 @@ def config_inputs(self):
logger = logging.getLogger(input.name)
logger.addHandler(input.get_handler())

@time_translate
def search_iterator(self, q='*', **kwargs):
"""Thin wrapper on Loggly's text search iterator API. First parameter is a query
string."""
kwargs['q'] = q
response = self._api_help('apiv2/events/iterate', kwargs)
yield response['events']

while response.get('next'):
response = self._do_api_req('GET', response.get('next'))

if response.get('events'): # last one may be empty
yield response['events']


@time_translate
def search(self, q='*', **kwargs):
"""Thin wrapper on Loggly's text search API. First parameter is a query
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.