uploadState method
getUpload (12 3.2 item 5): the confirmed parts of an own session.
Throws 404 for another principal's file and 410 gone for an aborted or expired
session.
Implementation
JsonMap uploadState(String principalId, String fileId) {
final f = _ownFile(principalId, fileId);
_expire(f);
if (f.sessionState == 'aborted' || f.sessionState == 'expired') {
throw const FakeProblem(410, 'gone');
}
final numbers = f.parts.keys.toList()..sort();
return {
'file_id': fileId,
'upload_state': f.sessionState == 'completed'
? 'complete'
: numbers.isEmpty
? 'pending'
: 'uploading',
'part_size_bytes': f.partBytes,
'completed_parts': [
for (final n in numbers) {'part_number': n, 'etag': f.parts[n]!.etag},
],
'expires_at': stamp(f.expiresAt),
};
}