addUploader method

  1. @Route.post('/api/packages/<name>/uploaders')
Future<Response> addUploader(
  1. Request req,
  2. String name
)

Implementation

@Route.post('/api/packages/<name>/uploaders')
Future<shelf.Response> addUploader(shelf.Request req, String name) async {
  var body = await req.readAsString();
  var email = Uri.splitQueryString(body)['email']!; // TODO: null
  var operatorEmail = await _getUploaderEmail(req);
  var package = await metaStore.queryPackage(name);

  if (package?.uploaders?.contains(operatorEmail) == false) {
    return _badRequest('no permission', status: HttpStatus.forbidden);
  }
  if (package?.uploaders?.contains(email) == true) {
    return _badRequest('email already exists');
  }

  await metaStore.addUploader(name, email);
  return _successMessage('uploader added');
}