createTicket method

JsonMap createTicket(
  1. String principalId,
  2. String sessionId,
  3. String fileId,
  4. String variant,
)

createFileTicket (12 9.2): a ticket of variant bound to sessionId, valid for five minutes; returns the API FileTicket with a path below the origin.

Throws 404 and the 409 problems of content.

Implementation

JsonMap createTicket(
  String principalId,
  String sessionId,
  String fileId,
  String variant,
) {
  content(principalId, fileId, variant);
  final token = base64Url
      .encode(utf8.encode('ticket-${nextId()}'))
      .replaceAll('=', '');
  final expires = now().add(const Duration(minutes: 5));
  fileTickets[token] = FakeFileTicket(
    fileId: fileId,
    variant: variant,
    principalId: principalId,
    sessionId: sessionId,
    expiresAt: expires,
  );
  final path = variant == 'original'
      ? '/api/v1/files/$fileId/content'
      : '/api/v1/files/$fileId/thumbnails/$variant';
  return {'url': '$path?ticket=$token', 'expires_at': stamp(expires)};
}