saveFromResponse method

  1. @override
Future<void> saveFromResponse(
  1. Uri uri,
  2. List<Cookie> cookies
)
override

Save the cookies for specified uri.

Implementation

@override
Future<void> saveFromResponse(Uri uri, List<Cookie> cookies) async {
  for (final cookie in cookies) {
    String? domain = cookie.domain;
    String path;
    final int index;
    if (domain != null) {
      index = 0;
      // Save cookies with "domain" attribute.
      if (domain.startsWith('.')) {
        domain = domain.substring(1);
      }
      path = cookie.path ?? '/';
    } else {
      // Save cookies without "domain" attribute.
      index = 1;
      domain = uri.host;
      path = cookie.path ?? _curDir(uri.path);
    }
    final mapDomain =
        _cookies[index][domain]?.cast<String, Map<String, dynamic>>() ??
            <String, Map<String, dynamic>>{};
    final map = mapDomain[path] ?? <String, dynamic>{};
    map[cookie.name] = SerializableCookie(cookie);
    if (_isExpired(map[cookie.name])) {
      map.remove(cookie.name);
    }
    mapDomain[path] = map.cast<String, SerializableCookie>();
    _cookies[index][domain] =
        mapDomain.cast<String, Map<String, SerializableCookie>>();
  }
}