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); }
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); }