Esempio n. 1
0
        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));
                }
            }
        }