public async Task <IHttpActionResult> PostAsync(string portalUri, string mediaUri, CancellationToken cancellationToken) { var portal = await _portalManager.FindByUriAsync(portalUri, cancellationToken); await ApiSecurity.AuthorizeAsync(portal, AccessPermission.CanEdit, cancellationToken); var media = default(MediaItem); using (var content = await Request.Content.ReadAsFileStreamAsync(cancellationToken)) { var validationResult = await _portalManager.AddMediaAsync( portal, null, media = new MediaItem { Uri = content.FileName, Type = MimeMapping.GetMimeMapping(content.FileName), Name = content.FileName }, content.FileStream, cancellationToken); if (!validationResult.Succeeded) { return(this.ValidationContent(validationResult)); } } return(CreatedAtRoute( "Portals.Media.GetByUri", new RouteValueDictionary { ["portalUri"] = portal.Uri, ["mediaUri"] = media.Uri }, ModelMapper.ToMediaDto(media, uri => _portalManager.GetMediaLinkByUri(portal.Uri, uri)))); }