public async Task <IHttpActionResult> Upload()
        {
            var file = HttpContext.Current.Request.Files.Count > 0 ? HttpContext.Current.Request.Files[0] : null;

            var upload = new UploadSong();

            if (file != null)
            {
                UploadSongResult result = await upload.UploadFileSong(file);

                if (!String.IsNullOrEmpty(result.Error))
                {
                    ModelState.AddModelError("Upload", result.Error);
                    return(BadRequest(ModelState));
                }

                var link = new LinkModel
                {
                    Id       = result.Id,
                    OwnerId  = User.Identity.GetUserId(),
                    MimeType = result.MimeType
                };
                return(Ok(link));
            }
            else
            {
                ModelState.AddModelError("FileError", "File was not received by the server");
                return(BadRequest(ModelState));
            }
        }
Exemple #2
0
        public async Task <IActionResult> Upload(SongFormModel model)
        {
            if (model.File is null)
            {
                return(View(model)
                       .WithErrorMessage("Please, choose a file!"));
            }

            // Business validation?
            if (!model.File.IsSong() || model.File.Length > SongMaxLength)
            {
                return(View(model)
                       .WithErrorMessage($"Your submission should be an audio file and no more than {SongMaxMBs} MBs in size!"));
            }

            string fileExtension = model.File
                                   .GetFileExtension();

            UploadSong command = new UploadSong()
            {
                UploaderId    = this.User?.FindFirst(ClaimTypes.NameIdentifier).Value,
                Title         = model.Title,
                FileExtension = fileExtension,
                ReleasedYear  = model.ReleasedYear,
                Singer        = model.Singer,
                SongFile      = model.File.ToByteArray()
            };

            string message = await this.CallServiceAsync(
                async() => await this.uploadSong.ExecuteAsync(command));

            if (message != null)
            {
                return(View(model)
                       .WithErrorMessage(message));
            }

            return(View()
                   .WithSuccessMessage("Song uploaded successfully."));
        }