Initial commit: monorepo Match Live TV.
Rails API, app Flutter, infrastruttura Docker/MediaMTX, sito marketing e documentazione di deploy. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
32
mobile/lib/shared/api_error.dart
Normal file
32
mobile/lib/shared/api_error.dart
Normal file
@@ -0,0 +1,32 @@
|
||||
class ApiException implements Exception {
|
||||
ApiException({
|
||||
required this.message,
|
||||
this.statusCode,
|
||||
this.errorCode,
|
||||
this.billingUrl,
|
||||
});
|
||||
|
||||
final String message;
|
||||
final int? statusCode;
|
||||
final String? errorCode;
|
||||
final String? billingUrl;
|
||||
|
||||
bool get isPremiumRequired => errorCode == 'premium_required';
|
||||
|
||||
@override
|
||||
String toString() => message;
|
||||
|
||||
static ApiException? fromDio(dynamic error) {
|
||||
// ignore: avoid_dynamic_calls
|
||||
final response = error.response;
|
||||
if (response == null) return null;
|
||||
final data = response.data;
|
||||
if (data is! Map<String, dynamic>) return null;
|
||||
return ApiException(
|
||||
message: data['error'] as String? ?? 'Errore di rete',
|
||||
statusCode: response.statusCode as int?,
|
||||
errorCode: data['error_code'] as String?,
|
||||
billingUrl: data['billing_url'] as String?,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user