"""Helping functions for ows-request.""" from owsrequest import request from sound_recordings.connectors import sentry SENTRY_MESSAGE_FORMAT = "{service} error for resource {resource}:" def get(*args, **kwargs): """Make a request using ows-request, logs failures to Sentry.""" report_failures_to_sentry = kwargs.pop("report_failures_to_sentry", True) response = request.get(*args, **kwargs) log_response_if_error(*args, response, report_failures_to_sentry) return response def log_response_if_error(service, resource, response, report_failures_to_sentry=True): """Log a response to Sentry for a service and resource if it failed.""" if response.status_code != 200 and report_failures_to_sentry: sentry.send_response_to_sentry( response, SENTRY_MESSAGE_FORMAT.format(service=service, resource=resource), extra={ "service": service, "resource": resource, "reason": response.reason, "correlation_id": response.headers.get("correlation-id", None), }, )