createTicket method
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)};
}