上传文件至 WebServer
This commit is contained in:
8
WebServer/ApiController.cs
Normal file
8
WebServer/ApiController.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using EmbedIO.WebApi;
|
||||
|
||||
namespace SinmaiAssist.WebServer.Api;
|
||||
|
||||
public class ApiController : WebApiController
|
||||
{
|
||||
// TODO: 添加API
|
||||
}
|
||||
63
WebServer/WebServer.cs
Normal file
63
WebServer/WebServer.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using EmbedIO;
|
||||
using EmbedIO.WebApi;
|
||||
using MelonLoader;
|
||||
using SinmaiAssist.WebServer.Api;
|
||||
|
||||
namespace SinmaiAssist.WebServer;
|
||||
|
||||
|
||||
public class WebServer
|
||||
{
|
||||
private EmbedIO.WebServer _server;
|
||||
private readonly string _host;
|
||||
private readonly int _port;
|
||||
private readonly string _token;
|
||||
private readonly string _url;
|
||||
private bool _isRunning = false;
|
||||
|
||||
public WebServer(string host, int port, string token)
|
||||
{
|
||||
_host = host;
|
||||
_port = port;
|
||||
_token = token;
|
||||
_url = $"http://{_host}:{_port}/";
|
||||
if (!string.IsNullOrEmpty(_token))
|
||||
_url += $"{_token}/";
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
try
|
||||
{
|
||||
_server = new EmbedIO.WebServer(o => o
|
||||
.WithUrlPrefix(_url)
|
||||
.WithMode(HttpListenerMode.EmbedIO))
|
||||
.WithWebApi("/api", m => m
|
||||
.WithController<ApiController>())
|
||||
.WithStaticFolder("/", "Frontend", true);
|
||||
|
||||
Task.Run(() => _server.RunAsync());
|
||||
_isRunning = true;
|
||||
MelonLogger.Msg($"[WebServer] WebServer started with: {_url}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MelonLogger.Error($"[WebServer] Failed to start WebServer: {ex}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
_server?.Dispose();
|
||||
_isRunning = false;
|
||||
MelonLogger.Msg($"[WebServer] WebServer stopped");
|
||||
}
|
||||
|
||||
public bool IsRunning()
|
||||
{
|
||||
return _server != null && _isRunning;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user