using Markdig; using Microsoft.AspNetCore.Components; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Neighbourhood.omg.lol { public static class Utilities { private static MarkdownPipeline markdownPipeline { get; } = new MarkdownPipelineBuilder().UseAutoLinks().Build(); public static string MdToHtml(string markdown) => Markdown.ToHtml(markdown, markdownPipeline); public static MarkupString MdToHtmlMarkup(string markdown) => (MarkupString)MdToHtml(markdown); public static async Task FileSize(FileResult file) { using var fileStream = await file.OpenReadAsync(); return fileStream.Length; } public static async Task Base64FromFile(FileResult file) { using var memoryStream = new MemoryStream(); using var fileStream = await file.OpenReadAsync(); await fileStream.CopyToAsync(memoryStream); byte[] bytes = memoryStream.ToArray(); return Convert.ToBase64String(bytes); } public static string RelativeTimeFromUnix(long unix) { DateTimeOffset createdTime = DateTimeOffset.UnixEpoch.AddSeconds(unix); TimeSpan offset = DateTimeOffset.UtcNow - createdTime; var offsetString = string.Empty; if (Math.Floor(offset.TotalDays) == 1) offsetString = $"{Math.Floor(offset.TotalDays)} day ago"; else if (offset.TotalDays > 1) offsetString = $"{Math.Floor(offset.TotalDays)} days ago"; else if (Math.Floor(offset.TotalHours) == 1) offsetString = $"{Math.Floor(offset.TotalHours)} hour ago"; else if (offset.TotalHours > 1) offsetString = $"{Math.Floor(offset.TotalHours)} hours ago"; else if (Math.Floor(offset.TotalMinutes) == 1) offsetString = $"{Math.Floor(offset.TotalMinutes)} minute ago"; else if (offset.TotalMinutes > 1) offsetString = $"{Math.Floor(offset.TotalMinutes)} minutes ago"; else if (Math.Floor(offset.TotalSeconds) == 1) offsetString = $"{Math.Floor(offset.TotalSeconds)} second ago"; else offsetString = $"{Math.Floor(offset.TotalSeconds)} seconds ago"; return offsetString; } } }