public async Task <ActionResult> Upload([FromForm] UploadRequest request) { var userId = getUserId(); var animation = request.ToModel(userId); var formFile = request.FormFile; if (request.Title == null || formFile == null) { return(BadRequest("Title and file have to be given")); } using (var memoryStream = new MemoryStream()) { try { await formFile.CopyToAsync(memoryStream); var animationIsValid = await _parserService.IsAnimationValid(memoryStream.ToArray()); if (!animationIsValid) { return(BadRequest("The caff file is not valid.")); } var parsedAnimation = await _parserService.ParseAnimation(memoryStream.ToArray()); if (parsedAnimation == null) { return(BadRequest()); } var image = _parserService.GetBitmapFromAnimation(parsedAnimation.Images.First()); await _animationService.CreateAnimation(animation, formFile, image); return(CreatedAtAction( nameof(GetAnimation), new { id = animation.Id }, new AnimationResponse(animation))); } catch (FileUploadException e) { return(BadRequest(e.Message)); } } }