uploadState method

JsonMap uploadState(
  1. String principalId,
  2. String fileId
)

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),
  };
}