Filter external(String attribute, { Iterable<String> allowed })

Source

static Filter external(String attribute, {Iterable<String> allowed}) =>
    (t, o) {
      var uri = o[attribute];
      if (uri == null) return false;
      if (!isValid(uri)) return true;
      if (isRelative(uri)) return false;
      if (['data', 'javascript'].contains(Uri.parse(uri).scheme)) return false;
      if (allowed == null) return true;
      return !allowed
          .any((a) => Uri.parse(a).resolve(uri).toString().startsWith(a));
    };