recordHit method

String recordHit(
  1. String cidOrMultihash, {
  2. required String source,
  3. String? reason,
})

Records a denylist hit and returns the action that should be taken.

Returns "block" or "log" depending on the configured default action. The audit event is always recorded.

Implementation

String recordHit(
  String cidOrMultihash, {
  required String source,
  String? reason,
}) {
  if (!_config.enableDenylist) return 'allowed';

  final action = defaultAction;
  final multihashHex = _cidOrMultihashHex(cidOrMultihash);
  final resolvedReason =
      reason ?? _snapshot.reasonFor(cidOrMultihash, multihashHex);

  _appendAuditEvent(
    DenylistAuditEvent(
      timestamp: DateTime.now().toUtc(),
      cidOrMultihash: cidOrMultihash,
      action: action,
      source: source,
      reason: resolvedReason,
    ),
  );

  if (action == 'log') {
    _metrics.recordSecurityEvent('denylist_logged');
    _logger.info(
      'Denylist hit (logged): $cidOrMultihash via $source'
      '${resolvedReason != null ? ' — $resolvedReason' : ''}',
    );
  } else {
    _metrics.recordSecurityEvent('denylist_blocked');
    _logger.warning(
      'Denylist hit (blocked): $cidOrMultihash via $source'
      '${resolvedReason != null ? ' — $resolvedReason' : ''}',
    );
  }

  return action;
}