@@ -40,8 +40,11 @@ def _detect_origin(request):
40
40
has_translations = False ,
41
41
)
42
42
def disclose_token (request ):
43
+ metrics = request .find_service (IMetricsService , context = None )
44
+
43
45
# If integrator headers are missing, response will be a 404
44
46
if not (origin := _detect_origin (request )):
47
+ metrics .increment ("warehouse.token_leak.invalid_origin" )
45
48
return HTTPNotFound ()
46
49
47
50
# Disclosers calls this API view when they have identified a string matching
@@ -52,12 +55,8 @@ def disclose_token(request):
52
55
53
56
# The documentation for this process is at
54
57
# https://developer.github.com/partnerships/token-scanning/
55
-
56
- body = request .body
57
-
58
58
key_id = request .headers .get (origin .key_id_header )
59
59
signature = request .headers .get (origin .signature_header )
60
- metrics = request .find_service (IMetricsService , context = None )
61
60
62
61
verifier = utils .GenericTokenScanningPayloadVerifier (
63
62
session = request .http ,
@@ -67,7 +66,10 @@ def disclose_token(request):
67
66
api_token = request .registry .settings .get (origin .api_token ),
68
67
)
69
68
70
- if not verifier .verify (payload = body , key_id = key_id , signature = signature ):
69
+ if not verifier .verify (payload = request .body , key_id = key_id , signature = signature ):
70
+ metrics .increment (
71
+ f"warehouse.token_leak.{ origin .metric_name } .error.payload.verify_error"
72
+ )
71
73
return HTTPBadRequest ()
72
74
73
75
try :
0 commit comments