Rails API, app Flutter, infrastruttura Docker/MediaMTX, sito marketing e documentazione di deploy. Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
858 B
Dart
33 lines
858 B
Dart
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?,
|
|
);
|
|
}
|
|
}
|