53 lines
1.4 KiB
C#
53 lines
1.4 KiB
C#
|
using System;
|
||
|
using System.IO;
|
||
|
using System.Reflection;
|
||
|
using System.Runtime.InteropServices;
|
||
|
using System.Security.Cryptography;
|
||
|
using System.Threading.Tasks;
|
||
|
using Tesses.WebServer;
|
||
|
|
||
|
namespace Tesses.CMS
|
||
|
{
|
||
|
public class AssetProvider : Server
|
||
|
{
|
||
|
static Assembly asm=typeof(AssetProvider).Assembly;
|
||
|
public AssetProvider()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
public static Stream OpenRead(string path)
|
||
|
{
|
||
|
return asm.GetManifestResourceStream($"Tesses.CMS.Assets{path.Replace("/",".")}");
|
||
|
|
||
|
}
|
||
|
public override async Task GetAsync(ServerContext ctx)
|
||
|
{
|
||
|
try{
|
||
|
await ctx.SendTextAsync(await ReadAllTextAsync(ctx.UrlPath),HeyRed.Mime.MimeTypesMap.GetMimeType(ctx.UrlPath));
|
||
|
}catch(ArgumentNullException ex)
|
||
|
{
|
||
|
_=ex;
|
||
|
await NotFoundServer.ServerNull.GetAsync(ctx);
|
||
|
}
|
||
|
}
|
||
|
public static async Task<string> ReadAllTextAsync(string path)
|
||
|
{
|
||
|
using(var s = OpenRead(path))
|
||
|
using(var ms = new StreamReader(s))
|
||
|
{
|
||
|
return await ms.ReadToEndAsync();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static string ReadAllText(string path)
|
||
|
{
|
||
|
using(var s = OpenRead(path))
|
||
|
using(var ms = new StreamReader(s))
|
||
|
return ms.ReadToEnd();
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|