2023-11-28 18:24:31 +03:30
|
|
|
// ignore_for_file: parameter_assignments
|
|
|
|
|
|
|
|
|
|
import 'package:dartx/dartx.dart';
|
2026-01-17 13:09:20 +03:00
|
|
|
import 'package:umbrix/features/log/model/log_entity.dart';
|
|
|
|
|
import 'package:umbrix/features/log/model/log_level.dart';
|
2023-11-28 18:24:31 +03:30
|
|
|
import 'package:tint/tint.dart';
|
|
|
|
|
|
|
|
|
|
abstract class LogParser {
|
|
|
|
|
static LogEntity parseSingbox(String log) {
|
|
|
|
|
log = log.strip();
|
|
|
|
|
DateTime? time;
|
|
|
|
|
if (log.length > 25) {
|
|
|
|
|
time = DateTime.tryParse(log.substring(6, 25));
|
|
|
|
|
}
|
|
|
|
|
if (time != null) {
|
|
|
|
|
log = log.substring(26);
|
|
|
|
|
}
|
|
|
|
|
final level = LogLevel.values.firstOrNullWhere(
|
|
|
|
|
(e) {
|
|
|
|
|
if (log.startsWith(e.name.toUpperCase())) {
|
|
|
|
|
log = log.removePrefix(e.name.toUpperCase());
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
return LogEntity(
|
|
|
|
|
level: level,
|
|
|
|
|
time: time,
|
|
|
|
|
message: log.trim(),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|