TYTD w api
This commit is contained in:
parent
d5cc6be2a5
commit
dc99b89fc3
|
@ -98,6 +98,7 @@ namespace TYTD
|
||||||
ApiLoader.Init();
|
ApiLoader.Init();
|
||||||
/* Other */
|
/* Other */
|
||||||
Route.Add("/", (HttpAction)Index);
|
Route.Add("/", (HttpAction)Index);
|
||||||
|
Route.Add("/", (HttpAction)Extensions);
|
||||||
Route.Add("/{Path}", (HttpAction)RootPath);
|
Route.Add("/{Path}", (HttpAction)RootPath);
|
||||||
Console.CancelKeyPress += (sender, e) => { ApiLoader.Dispose();var date = DateTime.Now.ToString("yyyyMMdd_HHmmss");File.WriteAllText(Path.Combine("config","queues-close",$"{date}.json"), Downloader.GetQueue()); return; };
|
Console.CancelKeyPress += (sender, e) => { ApiLoader.Dispose();var date = DateTime.Now.ToString("yyyyMMdd_HHmmss");File.WriteAllText(Path.Combine("config","queues-close",$"{date}.json"), Downloader.GetQueue()); return; };
|
||||||
|
|
||||||
|
@ -452,6 +453,10 @@ namespace TYTD
|
||||||
{
|
{
|
||||||
rp.AsFile(rq, Path.Combine(webSitePath, "index.html"));
|
rp.AsFile(rq, Path.Combine(webSitePath, "index.html"));
|
||||||
}
|
}
|
||||||
|
public static void Extensions(HttpListenerRequest rq, HttpListenerResponse rp, Dictionary<string, string> args)
|
||||||
|
{
|
||||||
|
rp.AsText(ApiLoader.Page);
|
||||||
|
}
|
||||||
public static void RootPath(HttpListenerRequest rq, HttpListenerResponse rp, Dictionary<string, string> args)
|
public static void RootPath(HttpListenerRequest rq, HttpListenerResponse rp, Dictionary<string, string> args)
|
||||||
{
|
{
|
||||||
string path = Path.Combine(webSitePath, args["Path"].Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries)[0]);
|
string path = Path.Combine(webSitePath, args["Path"].Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries)[0]);
|
||||||
|
|
|
@ -5,15 +5,14 @@ using System.Threading;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using SimpleHttp;
|
||||||
|
|
||||||
namespace TYTD
|
namespace TYTD
|
||||||
{
|
{
|
||||||
public abstract class Api : IDisposable
|
public abstract class Api : IDisposable
|
||||||
{
|
{
|
||||||
public Api()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
public virtual void OnStart()
|
public virtual void OnStart()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Extension Loaded");
|
Console.WriteLine("Extension Loaded");
|
||||||
|
@ -21,6 +20,7 @@ namespace TYTD
|
||||||
internal string storage;
|
internal string storage;
|
||||||
protected string StorageLocation { get { return storage; } }
|
protected string StorageLocation { get { return storage; } }
|
||||||
|
|
||||||
|
public virtual string Name { get { return Path.GetFileName(StorageLocation); } }
|
||||||
private System.Timers.Timer t = null;
|
private System.Timers.Timer t = null;
|
||||||
protected void SetTimer(TimeSpan timespan)
|
protected void SetTimer(TimeSpan timespan)
|
||||||
{
|
{
|
||||||
|
@ -37,6 +37,10 @@ namespace TYTD
|
||||||
t.Start();
|
t.Start();
|
||||||
}
|
}
|
||||||
public bool TimerEnabled { get { if (t != null) { return t.Enabled; } else { return false; } } set { if (t != null) { t.Enabled = value; } } }
|
public bool TimerEnabled { get { if (t != null) { return t.Enabled; } else { return false; } } set { if (t != null) { t.Enabled = value; } } }
|
||||||
|
public virtual IEnumerable<KeyValuePair<string, string>> GetUrls()
|
||||||
|
{
|
||||||
|
yield return new KeyValuePair<string, string>("Home",$"api/Extensions/{Name}");
|
||||||
|
}
|
||||||
protected virtual void TimerElapsed()
|
protected virtual void TimerElapsed()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Event Fired");
|
Console.WriteLine("Event Fired");
|
||||||
|
@ -87,7 +91,8 @@ namespace TYTD
|
||||||
|
|
||||||
public static class ApiLoader
|
public static class ApiLoader
|
||||||
{
|
{
|
||||||
internal static List<Api> apis = new List<Api>();
|
public static string Page { get; private set; }
|
||||||
|
internal static List<Api> apis = new List<Api>();
|
||||||
|
|
||||||
internal static void DownloadStarted(object sender,DownloadStartEventArgs evt)
|
internal static void DownloadStarted(object sender,DownloadStartEventArgs evt)
|
||||||
{
|
{
|
||||||
|
@ -110,21 +115,47 @@ namespace TYTD
|
||||||
api.Dispose();
|
api.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static void GenerateTr(Api api,StringBuilder b)
|
||||||
|
{
|
||||||
|
|
||||||
|
string data = "";
|
||||||
|
string root = Path.Combine(Environment.CurrentDirectory, "config");
|
||||||
|
string fallbackIcon = Path.Combine(root, "default_icon.png");
|
||||||
|
string icon = Path.Combine(root, "apiicons", api.Name + ".png");
|
||||||
|
string icon2 = File.Exists(icon) ? icon : fallbackIcon;
|
||||||
|
if (File.Exists(icon2))
|
||||||
|
{
|
||||||
|
|
||||||
|
data = Convert.ToBase64String(File.ReadAllBytes(icon2));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
b.Append($"<tr><td><h3>{api.Name}</h3><img src=\"data:image/png;base64,{data}\" alt=\"{api.Name}\"></td><td>");
|
||||||
|
foreach (var link in api.GetUrls())
|
||||||
|
{
|
||||||
|
b.Append($"<a href=\"{link.Value}\">{link.Key}</a><br>");
|
||||||
|
}
|
||||||
|
b.Append("</td></tr>");
|
||||||
|
Dictionary<string, string> templating = new Dictionary<string, string>();
|
||||||
|
templating.Add("Items", b.ToString());
|
||||||
|
Page= Templating.RenderFile(Path.Combine("WebSite", "extensions.html"),templating);
|
||||||
|
}
|
||||||
internal static void Load(string dll,string confpath)
|
internal static void Load(string dll,string confpath)
|
||||||
{
|
{
|
||||||
var asm=Assembly.LoadFrom(dll);
|
var asm=Assembly.LoadFrom(dll);
|
||||||
foreach(var item in asm.GetTypes())
|
StringBuilder b = new StringBuilder();
|
||||||
|
foreach (var item in asm.GetTypes())
|
||||||
{
|
{
|
||||||
if(typeof(Api).IsAssignableFrom(item))
|
if(typeof(Api).IsAssignableFrom(item))
|
||||||
{
|
{
|
||||||
Api api = (Api)Activator.CreateInstance(item);
|
Api api = (Api)Activator.CreateInstance(item);
|
||||||
api.storage = confpath;
|
api.storage = confpath;
|
||||||
apis.Add(api);
|
apis.Add(api);
|
||||||
Thread thrd = new Thread(new ThreadStart(api.OnStart));
|
api.OnStart();
|
||||||
thrd.Start();
|
GenerateTr(api, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
|
|
|
@ -76,6 +76,34 @@
|
||||||
<Reference Include="CookiesTxtParser">
|
<Reference Include="CookiesTxtParser">
|
||||||
<HintPath>..\packages\CookiesTxtParser.1.0.1\lib\netstandard2.0\CookiesTxtParser.dll</HintPath>
|
<HintPath>..\packages\CookiesTxtParser.1.0.1\lib\netstandard2.0\CookiesTxtParser.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="MimeTypesMap">
|
||||||
|
<HintPath>..\packages\MimeTypesMap.1.0.2\lib\net45\MimeTypesMap.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.IO">
|
||||||
|
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime">
|
||||||
|
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
|
<Reference Include="System.Security.Cryptography.Encoding">
|
||||||
|
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Security.Cryptography.Primitives">
|
||||||
|
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Security.Cryptography.Algorithms">
|
||||||
|
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Security.Cryptography.X509Certificates">
|
||||||
|
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Net.Http">
|
||||||
|
<HintPath>..\packages\System.Net.Http.4.3.3\lib\net46\System.Net.Http.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="SimpleHTTP">
|
||||||
|
<HintPath>..\packages\Simple-HTTP.1.0.6\lib\net47\SimpleHTTP.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="MyClass.cs" />
|
<Compile Include="MyClass.cs" />
|
||||||
|
|
Binary file not shown.
|
@ -1 +1 @@
|
||||||
3eb6dde99f6eaaac2f2eb82e830940474adc1a21
|
43d1539c7b8a6555a9e7a98302a38acdd2e39a06
|
||||||
|
|
|
@ -126,3 +126,6 @@
|
||||||
/home/ddlovato/tytd/site/TYTD.Api/obj/Release/TYTD.Api.csproj.CopyComplete
|
/home/ddlovato/tytd/site/TYTD.Api/obj/Release/TYTD.Api.csproj.CopyComplete
|
||||||
/home/ddlovato/tytd/site/TYTD.Api/obj/Release/TYTD.Api.dll
|
/home/ddlovato/tytd/site/TYTD.Api/obj/Release/TYTD.Api.dll
|
||||||
/home/ddlovato/tytd/site/TYTD.Api/bin/Release/System.Text.Encoding.CodePages.xml
|
/home/ddlovato/tytd/site/TYTD.Api/bin/Release/System.Text.Encoding.CodePages.xml
|
||||||
|
/home/ddlovato/tytd/site/TYTD.Api/bin/Release/MimeTypesMap.dll
|
||||||
|
/home/ddlovato/tytd/site/TYTD.Api/bin/Release/SimpleHTTP.dll
|
||||||
|
/home/ddlovato/tytd/site/TYTD.Api/bin/Release/SimpleHTTP.xml
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -4,11 +4,20 @@
|
||||||
<package id="AsyncEnumerator" version="4.0.2" targetFramework="net47" />
|
<package id="AsyncEnumerator" version="4.0.2" targetFramework="net47" />
|
||||||
<package id="CookiesTxtParser" version="1.0.1" targetFramework="net47" />
|
<package id="CookiesTxtParser" version="1.0.1" targetFramework="net47" />
|
||||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net47" />
|
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net47" />
|
||||||
|
<package id="MimeTypesMap" version="1.0.2" targetFramework="net47" />
|
||||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net47" />
|
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net47" />
|
||||||
|
<package id="Simple-HTTP" version="1.0.6" targetFramework="net47" />
|
||||||
<package id="System.Buffers" version="4.5.1" targetFramework="net47" />
|
<package id="System.Buffers" version="4.5.1" targetFramework="net47" />
|
||||||
|
<package id="System.IO" version="4.3.0" targetFramework="net47" />
|
||||||
<package id="System.Memory" version="4.5.4" targetFramework="net47" />
|
<package id="System.Memory" version="4.5.4" targetFramework="net47" />
|
||||||
|
<package id="System.Net.Http" version="4.3.3" targetFramework="net47" />
|
||||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net47" />
|
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net47" />
|
||||||
|
<package id="System.Runtime" version="4.3.0" targetFramework="net47" />
|
||||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net47" />
|
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net47" />
|
||||||
|
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net47" />
|
||||||
|
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net47" />
|
||||||
|
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net47" />
|
||||||
|
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net47" />
|
||||||
<package id="System.Text.Encoding.CodePages" version="6.0.0" targetFramework="net47" />
|
<package id="System.Text.Encoding.CodePages" version="6.0.0" targetFramework="net47" />
|
||||||
<package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net47" />
|
<package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net47" />
|
||||||
<package id="System.Text.Json" version="6.0.0" targetFramework="net47" />
|
<package id="System.Text.Json" version="6.0.0" targetFramework="net47" />
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue