Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
bae2f9df4d |
6 changed files with 25 additions and 15 deletions
|
@ -11,9 +11,17 @@ public static class Client
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddNyangate(this IServiceCollection c, Action<NyangateClientOptions> options)
|
public static IServiceCollection AddNyangate(this IServiceCollection c, Action<NyangateClientOptions> options)
|
||||||
{
|
{
|
||||||
NyangateClientOptions opts = new();
|
NyangateClientOptions opts = new()
|
||||||
|
{
|
||||||
|
Hostname = ""
|
||||||
|
};
|
||||||
options.Invoke(opts);
|
options.Invoke(opts);
|
||||||
|
|
||||||
|
if (opts.Hostname == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(opts.Hostname), "Hostname cannot be null.");
|
||||||
|
}
|
||||||
|
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,5 +34,5 @@ public static class Client
|
||||||
|
|
||||||
public class NyangateClientOptions
|
public class NyangateClientOptions
|
||||||
{
|
{
|
||||||
|
public string Hostname { get; set; } = null!;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,10 @@ namespace Nyangate.Filters;
|
||||||
|
|
||||||
public class ContextFilter
|
public class ContextFilter
|
||||||
{
|
{
|
||||||
private readonly List<IFilter> _filters = typeof(IFilter).Assembly.GetTypes().Where(t => t.IsAssignableFrom(typeof(IFilter))).Select(t => (IFilter)Activator.CreateInstance(t)!).ToList();
|
private readonly List<IFilter> _filters = typeof(IFilter).Assembly.GetTypes().Where(t => t.IsAssignableFrom(typeof(IFilter)))
|
||||||
public void ApplyAll(FilterType type, HttpContext ctx)
|
.Select(t => (IFilter)Activator.CreateInstance(t)!).ToList();
|
||||||
|
|
||||||
|
public void ApplyFor(FilterType type, HttpContext ctx)
|
||||||
{
|
{
|
||||||
foreach (var filter in _filters.Where(f => f.Type.HasFlag(type)))
|
foreach (var filter in _filters.Where(f => f.Type.HasFlag(type)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,9 +9,8 @@ public class Authenticator
|
||||||
_next = next;
|
_next = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Invoke(HttpContext ctx)
|
public async Task Invoke(HttpContext ctx) =>
|
||||||
{
|
//LDAP or Oauth2
|
||||||
//do smth
|
//do smth
|
||||||
await _next.Invoke(ctx);
|
await _next.Invoke(ctx);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ public class HostSelector
|
||||||
|
|
||||||
if (host is null)
|
if (host is null)
|
||||||
{
|
{
|
||||||
|
//TODO: Not found handler
|
||||||
ctx.Response.StatusCode = 404;
|
ctx.Response.StatusCode = 404;
|
||||||
await ctx.Response.WriteAsync("meowless~");
|
await ctx.Response.WriteAsync("meowless~");
|
||||||
await ctx.Response.CompleteAsync();
|
await ctx.Response.CompleteAsync();
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Nyangate.Middleware;
|
namespace Nyangate.Middleware;
|
||||||
|
|
||||||
public class Logger
|
public class Logger
|
||||||
|
@ -17,7 +12,11 @@ public class Logger
|
||||||
public async Task Invoke(HttpContext ctx)
|
public async Task Invoke(HttpContext ctx)
|
||||||
{
|
{
|
||||||
Console.WriteLine(ctx.ToString());
|
Console.WriteLine(ctx.ToString());
|
||||||
|
var start = DateTime.Now;
|
||||||
await _next.Invoke(ctx);
|
await _next.Invoke(ctx);
|
||||||
|
var end = DateTime.Now;
|
||||||
|
var delta = end - start;
|
||||||
|
int status = ctx.Response.StatusCode;
|
||||||
Console.WriteLine(ctx.ToString());
|
Console.WriteLine(ctx.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using Microsoft.Extensions.Primitives;
|
using Microsoft.Extensions.Primitives;
|
||||||
using Nyangate.Filters;
|
using Nyangate.Filters;
|
||||||
|
using Nyangate.Lib.Data;
|
||||||
using Nyangate.Lib.Http;
|
using Nyangate.Lib.Http;
|
||||||
using Nyangate.Services;
|
using Nyangate.Services;
|
||||||
|
|
||||||
|
@ -21,12 +22,12 @@ namespace Nyangate.Middleware
|
||||||
string hostname = ctx.Request.Host.Host;
|
string hostname = ctx.Request.Host.Host;
|
||||||
//check ctx.Request.IsHttps if strict https required
|
//check ctx.Request.IsHttps if strict https required
|
||||||
|
|
||||||
var host = _map.Get(hostname) ?? _map.GetFallback();
|
|
||||||
|
|
||||||
if (host is null)
|
if ((ctx.Features[typeof(ServerHost)] ?? _map.GetFallback()) is not ServerHost host)
|
||||||
{
|
{
|
||||||
ctx.Response.StatusCode = 404;
|
ctx.Response.StatusCode = 404;
|
||||||
await ctx.Response.WriteAsync("meowless~");
|
//TODO: Not found handler
|
||||||
|
await ctx.Response.WriteAsync("meowless²~");
|
||||||
await ctx.Response.CompleteAsync();
|
await ctx.Response.CompleteAsync();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue