Files
mixtape/zero.Core/Media/MediaManagementExtensions.cs
T

93 lines
2.8 KiB
C#

using Microsoft.AspNetCore.Http;
using System.IO;
namespace zero.Media
{
public static class MediaManagementExtensions
{
/// <summary>
/// Uploads a file and persists it
/// </summary>
public static async Task<EntityResult<Media>> UploadFile(this IMediaManagement media, IFormFile formFile, string folderId = null, CancellationToken cancellationToken = default)
{
using Stream stream = formFile.OpenReadStream();
return await media.UploadFile(stream, formFile.FileName, folderId, cancellationToken);
}
/// <summary>
/// Uploads a file and persists it
/// </summary>
public static async Task<EntityResult<Media>> UploadFile(this IMediaManagement media, byte[] fileBytes, string filename, string folderId = null, CancellationToken cancellationToken = default)
{
using Stream stream = new MemoryStream(fileBytes);
return await media.UploadFile(stream, filename, folderId, cancellationToken);
}
/// <summary>
/// Rename and store a media folder
/// </summary>
public static async Task<EntityResult<Media>> RenameFolder(this IMediaManagement media, Media folder, string newName)
{
folder.Name = newName;
return await media.UpdateFolder(folder);
}
/// <summary>
/// Rename and store a media folder
/// </summary>
public static async Task<EntityResult<Media>> RenameFolder(this IMediaManagement media, string folderId, string newName)
{
Media folder = await media.GetFolder(folderId);
if (folder == null)
{
return EntityResult<Media>.Fail("@errors.idnotfound");
}
return await RenameFolder(media, folder, newName);
}
/// <summary>
/// Move a media folder to a new parent
/// </summary>
public static async Task<EntityResult<Media>> MoveFolder(this IMediaManagement media, Media folder, string newParentId)
{
folder.ParentId = newParentId;
return await media.UpdateFolder(folder);
}
/// <summary>
/// Move a media folder to a new parent
/// </summary>
public static async Task<EntityResult<Media>> MoveFolder(this IMediaManagement media, string folderId, string newParentId)
{
Media folder = await media.GetFolder(folderId);
if (folder == null)
{
return EntityResult<Media>.Fail("@errors.idnotfound");
}
return await MoveFolder(media, folder, newParentId);
}
/// <summary>
/// Deletes a folder by id
/// </summary>
public static async Task<EntityResult<string[]>> DeleteFolder(this IMediaManagement media, string folderId)
{
Media folder = await media.GetFolder(folderId);
if (folder == null)
{
return EntityResult<string[]>.Fail("@errors.idnotfound");
}
return await media.DeleteFolder(folder);
}
}
}