From 4d68cfbe806c6a66cb4878f5bdc61a6868cced97 Mon Sep 17 00:00:00 2001 From: Addison Schiller Date: Wed, 4 Oct 2017 11:40:08 -0400 Subject: [PATCH] Support to log metadata GET requests Removed superfluous return in remote_logging Metadata requests are currently not logged as they need an OSF addition to work correctly. --- waterbutler/core/remote_logging.py | 6 +----- waterbutler/server/api/v1/provider/__init__.py | 8 +++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/waterbutler/core/remote_logging.py b/waterbutler/core/remote_logging.py index 0b70b65a4..5bf0132e8 100644 --- a/waterbutler/core/remote_logging.py +++ b/waterbutler/core/remote_logging.py @@ -19,7 +19,7 @@ @utils.async_retry(retries=5, backoff=5) async def log_to_callback(action, source=None, destination=None, start_time=None, errors=[]): """PUT a logging payload back to the callback given by the auth provider.""" - if action in ('download_file', 'download_zip'): + if action in ('download_file', 'download_zip', 'metadata'): logger.debug('Not logging for {} action'.format(action)) return @@ -41,10 +41,6 @@ async def log_to_callback(action, source=None, destination=None, start_time=None log_payload['metadata'] = source.serialize() log_payload['provider'] = log_payload['metadata']['provider'] - if action in ('download_file', 'download_zip'): - logger.info('Not logging for {} action'.format(action)) - return - resp = await utils.send_signed_request('PUT', auth['callback_url'], log_payload) resp_data = await resp.read() diff --git a/waterbutler/server/api/v1/provider/__init__.py b/waterbutler/server/api/v1/provider/__init__.py index 56f8df292..8dbb4f7b2 100644 --- a/waterbutler/server/api/v1/provider/__init__.py +++ b/waterbutler/server/api/v1/provider/__init__.py @@ -145,12 +145,10 @@ def on_finish(self): if any((method in ('HEAD', 'OPTIONS'), status == 202, status > 302, status < 200)): return - if method == 'GET' and 'meta' in self.request.query_arguments: - return - # Done here just because method is defined action = { - 'GET': lambda: 'download_file' if self.path.is_file else 'download_zip', + 'GET': lambda: 'metadata' if 'meta' in self.request.query_arguments else ( + 'download_file' if self.path.is_file else 'download_zip'), 'PUT': lambda: ('create' if self.target_path.is_file else 'create_folder') if status == 201 else 'update', 'POST': lambda: 'move' if self.json['action'] == 'rename' else self.json['action'], 'DELETE': lambda: 'delete' @@ -175,7 +173,7 @@ def _send_hook(self, action): ) elif action in ('create', 'create_folder', 'update'): source = LogPayload(self.resource, self.provider, metadata=self.metadata) - elif action in ('delete', 'download_file', 'download_zip'): + elif action in ('delete', 'download_file', 'download_zip', 'metadata'): source = LogPayload(self.resource, self.provider, path=self.path) else: return