Пример #1
0
        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))));
        }