def search_metrics(): search_req = ApiSearchRequest(request.args) if not search_req.validate(): statsd.incr("api.search_metrics.invalid") raise api_errors.ApiInvalidRequest(search_req.input_errors()) resp = search_req.execute() search_response = resp.search_response() bibcodes = map(lambda a: a['bibcode'], filter(lambda a: 'bibcode' in a, search_response['results']['docs'])) metrics = generate_metrics(bibcodes=bibcodes, fmt='API') search_response['results'] = metrics statsd.incr("api.search_metrics.success") return search_response
def record_metrics(identifier): record_req = ApiRecordRequest(identifier, request.args) if not record_req.validate(): statsd.incr("api.record_metrics.invalid") raise api_errors.ApiInvalidRequest(record_req.errors()) resp = record_req.execute() if not resp.get_hits() > 0: statsd.incr("api.record_metrics.not_found") raise api_errors.ApiRecordNotFound(identifier) statsd.incr("api.record_metrics.success") record = resp.record_response() metrics = generate_metrics(bibcodes=[record['bibcode']], fmt='API') return metrics