server_base.dart 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'package:speed_safe/app/server/hysteria/server.dart';
  2. import 'package:speed_safe/app/server/shadowsocks/server.dart';
  3. import 'package:speed_safe/app/server/trojan/server.dart';
  4. import 'package:speed_safe/app/server/xray/server.dart';
  5. abstract class ServerBase {
  6. String protocol;
  7. String address;
  8. int port;
  9. String remark;
  10. int? uplink;
  11. int? downlink;
  12. ServerBase({
  13. required this.protocol,
  14. required this.address,
  15. required this.port,
  16. required this.remark,
  17. this.uplink,
  18. this.downlink,
  19. });
  20. // factory Server.fromJson(Map<String, dynamic> json) => _$ServerFromJson(json);
  21. factory ServerBase.fromJson(Map<String, dynamic> json) {
  22. switch (json['protocol']) {
  23. case 'vmess':
  24. case 'vless':
  25. case 'socks':
  26. return XrayServer.fromJson(json);
  27. case 'shadowsocks':
  28. return ShadowsocksServer.fromJson(json);
  29. case 'trojan':
  30. return TrojanServer.fromJson(json);
  31. case 'hysteria':
  32. return HysteriaServer.fromJson(json);
  33. default:
  34. throw FormatException('Failed to parse server: ${json['protocol']}');
  35. }
  36. }
  37. Map<String, dynamic> toJson() {
  38. switch (protocol) {
  39. case 'vmess':
  40. case 'vless':
  41. case 'socks':
  42. return (this as XrayServer).toJson();
  43. case 'shadowsocks':
  44. return (this as ShadowsocksServer).toJson();
  45. case 'trojan':
  46. return (this as TrojanServer).toJson();
  47. case 'hysteria':
  48. return (this as HysteriaServer).toJson();
  49. default:
  50. throw FormatException('Failed to parse server: $protocol');
  51. }
  52. }
  53. }