52 lines
2.1 KiB
C#
52 lines
2.1 KiB
C#
|
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<long> FileSize(FileResult file) {
|
|||
|
using var fileStream = await file.OpenReadAsync();
|
|||
|
return fileStream.Length;
|
|||
|
}
|
|||
|
|
|||
|
public static async Task<string> 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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|