Exemplo n.º 1
0
        public async Task <Media> UploadAsync(string appId, AssetFile file,
                                              CancellationToken ct = default)
        {
            Guard.NotNullOrEmpty(appId);
            Guard.NotNull(file);

            var now = clock.GetCurrentInstant();

            var request = new MetadataRequest
            {
                File = file
            };

            foreach (var metadataSource in mediaMetadataSources)
            {
                await metadataSource.EnhanceAsync(request);
            }

            var infos = new List <string>();

            foreach (var metadataSource in mediaMetadataSources)
            {
                infos.AddRange(metadataSource.Format(request));
            }

            var fileInfo = string.Join(", ", infos);

            var media = new Media(appId, file.FileName, now)
            {
                FileInfo   = fileInfo,
                FileSize   = file.FileSize,
                LastUpdate = now,
                Metadata   = request.Metadata,
                MimeType   = file.MimeType,
                Type       = request.Type
            };

            await using (var stream = request.File.OpenRead())
            {
                await mediaFileStore.UploadAsync(appId, media, stream, ct);
            }

            await mediaRepository.UpsertAsync(media, ct);

            return(media);
        }
Exemplo n.º 2
0
        public async Task <Media> UploadAsync(string appId, AssetFile file, CancellationToken ct = default)
        {
            Guard.NotNullOrEmpty(appId, nameof(appId));
            Guard.NotNull(file, nameof(file));

            var media = new Media
            {
                AppId    = appId,
                FileName = file.FileName,
                FileSize = file.FileSize,
                MimeType = file.MimeType,
                Metadata = new MediaMetadata()
            };

            foreach (var metadataSource in mediaMetadataSources)
            {
                await metadataSource.EnhanceAsync(media, file);
            }

            var infos = new List <string>();

            foreach (var metadataSource in mediaMetadataSources)
            {
                infos.AddRange(metadataSource.Format(media));
            }

            media.FileInfo = string.Join(", ", infos);

            using (var stream = file.OpenRead())
            {
                await mediaFileStore.UploadAsync(appId, media, stream, ct);
            }

            await mediaRepository.UpsertAsync(media, ct);

            return(media);
        }