FIX: classify client-side R2 validation failures as HTTP 400
This commit is contained in:
parent
a13ce12f59
commit
5a22cc3ead
|
|
@ -29,11 +29,11 @@ class R2UploadService {
|
|||
|
||||
Future<R2UploadResult> uploadTelemetryBundle({required String idToken, required String remoteRideId, required Uint8List zipBytes, required String sha256Hash, required String appVersion, Duration timeout = const Duration(seconds: 45)}) async {
|
||||
if (idToken.trim().isEmpty) return const R2UploadResult.authRequired('Firebase ID token is required for R2 upload.');
|
||||
if (zipBytes.isEmpty) return const R2UploadResult.permanentFailure('Telemetry bundle is empty.');
|
||||
if (zipBytes.isEmpty) return const R2UploadResult.permanentFailure('Telemetry bundle is empty.', statusCode: 400);
|
||||
// Prevent path traversal at the client boundary. The Worker remains the
|
||||
// authoritative verifier of SHA-256 and Firebase UID ownership.
|
||||
if (!RegExp(r'^ride_[A-Za-z0-9_-]+$').hasMatch(remoteRideId)) return const R2UploadResult.permanentFailure('Invalid remote ride identifier.');
|
||||
if (sha256Hash.trim().isEmpty) return const R2UploadResult.permanentFailure('Telemetry bundle SHA-256 is required.');
|
||||
if (!RegExp(r'^ride_[A-Za-z0-9_-]+$').hasMatch(remoteRideId)) return const R2UploadResult.permanentFailure('Invalid remote ride identifier.', statusCode: 400);
|
||||
if (sha256Hash.trim().isEmpty) return const R2UploadResult.permanentFailure('Telemetry bundle SHA-256 is required.', statusCode: 400);
|
||||
|
||||
try {
|
||||
final response = await _client.put(Uri.parse('$_workerBaseUrl/r2/upload'), headers: {
|
||||
|
|
|
|||
Loading…
Reference in New Issue