parseMany static method

List<FlutterVlessURL> parseMany({
  1. required String input,
  2. required FlutterVlessUrlParser parseUrl,
  3. required FlutterVlessURL parseJson(
    1. 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');
}