import 'package:oc_front/models/abstract.dart'; import 'package:json_string/json_string.dart'; class LogsResult extends SerializerDeserializer { List result; LogsResult({ this.result = const [], }); String getID() { return ""; } @override deserialize(dynamic json) { try { json = json as Map; } catch (e) { return LogsResult(); } return LogsResult( result: json.containsKey("result") ? fromListJson(json["result"], Logs()) : [], ); } @override Map serialize() { return { "result": toListJson(result), }; } } class Logs extends SerializerDeserializer { String? level; List logs = []; Logs({ this.level, this.logs = const [], }); String getID() { return ""; } @override deserialize(dynamic json) { try { json = json as Map; } catch (e) { return Logs(); } return Logs( level: json.containsKey("stream") && (json["stream"] as Map).containsKey("level") ? json["stream"]["level"] : "", logs: json.containsKey("values") ? fromListJson(json["values"], Log()) : [], ); } @override Map serialize() { return { "level": level, }; } } class Log extends SerializerDeserializer { DateTime? timestamp; String? message; String? level; String? rawMessage; Map map = {}; Log({ this.timestamp, this.message, this.rawMessage, this.level }); String getID() { return ""; } String getMessage(String mess) { var jsonString = mess; try { var j = JsonString(mess.replaceAll("\\", "")).decodedValue as Map; map = j; if (j["Status"] == "Pending") { jsonString = "${j["Name"]} : [${j["Namespace"]}] Status: ${j["Status"]}... \nCreated at ${j["Created"].toString().replaceAllMapped(RegExp(r'\(\w+\)'), (match) { return ''; }).replaceAllMapped(RegExp(r'\+\w+'), (match) { return ''; })}"; } else { jsonString = "${j["Name"]} : [${j["Namespace"]}] ${j["Status"]} ${j["Progress"]} (${j["Duration"].toString()})\nCreated at ${j["Created"].toString().replaceAllMapped(RegExp(r'\(\w+\)'), (match) { return ''; }).replaceAllMapped(RegExp(r'\+\w+'), (match) { return ''; })}; Started at ${j["Created"].toString().replaceAllMapped(RegExp(r'\(\w+\)'), (match) { return ''; }).replaceAllMapped(RegExp(r'\+\w+'), (match) { return ''; })}"; } } on JsonFormatException catch (e) { /* */ } message = jsonString; return jsonString; } @override deserialize(dynamic json) { try { json = json as List; } catch (e) { return Log(); } var l = Log( timestamp: json.isNotEmpty ? DateTime.fromMillisecondsSinceEpoch(int.parse(json[0]) ~/ 1000) : null, message: json.length > 1 ? getMessage(json[1].toString()) : null, rawMessage : json.length > 1 ? json[1].toString() : null, ); l.getMessage(l.message ?? ""); return l; } @override Map serialize() { return { }; } }