parseMany static method
List<FlutterVlessURL>
parseMany({
- required String input,
- required FlutterVlessUrlParser parseUrl,
- required FlutterVlessURL parseJson(
- String json
Implementation
static List<FlutterVlessURL> parseMany({
required String input,
required FlutterVlessUrlParser parseUrl,
required FlutterVlessURL Function(String json) parseJson,
}) {
final trimmed = input.trim();
if (trimmed.isEmpty) {
throw ArgumentError('subscription is empty');
}
final jsonResult = _parseJson(trimmed, parseUrl, parseJson);
if (jsonResult.isNotEmpty) {
return jsonResult;
}
final directLinks = _parseShareLines(trimmed, parseUrl);
if (directLinks.isNotEmpty) {
return directLinks;
}
final decoded = _decodeBase64Subscription(trimmed);
if (decoded != null && decoded.trim() != trimmed) {
final decodedJson = _parseJson(decoded.trim(), parseUrl, parseJson);
if (decodedJson.isNotEmpty) {
return decodedJson;
}
final decodedLinks = _parseShareLines(decoded, parseUrl);
if (decodedLinks.isNotEmpty) {
return decodedLinks;
}
final decodedYaml = _parseClashYaml(decoded, parseUrl);
if (decodedYaml.isNotEmpty) {
return decodedYaml;
}
}
final clashYaml = _parseClashYaml(trimmed, parseUrl);
if (clashYaml.isNotEmpty) {
return clashYaml;
}
throw ArgumentError('subscription is invalid or unsupported');
}