write method

  1. @override
Future<void> write(
  1. Request request,
  2. Response response,
  3. Session session
)
override

Saves the session data to a file and sets the appropriate cookie.

Implementation

@override
Future<void> write(
  Request request,
  Response response,
  Session session,
) async {
  final maxAge = session.options.maxAge ?? 0;
  if (maxAge <= 0) {
    await _eraseFile(session.id);
    response.setCookie(
      session.name,
      '',
      maxAge: -1,
      path: session.options.path ?? "/",
    );
    return;
  }

  await _saveToFile(session.id, session.values);

  final codec = codecs.first;
  final encoded = codec.encode(session.name, {'id': session.id});

  response.setCookie(
    session.name,
    encoded,
    path: session.options.path ?? "/",
    domain: session.options.domain ?? "",
    maxAge: session.options.maxAge,
    secure: session.options.secure ?? false,
    httpOnly: session.options.httpOnly ?? true,
  );

  await _maybePrune();
}