using molilian.core; using dodohold.core; using Microsoft.AspNetCore.Mvc; using Org.BouncyCastle.Ocsp; using System.Text.Json; using System.Runtime.InteropServices; using System.Net; using System.Threading; namespace molilian.api.Controllers { [ApiController] [Route("[controller]/[action]")] public class TestController : ControllerBase { protected IHttpContextAccessor _accessor; public TestController(IHttpContextAccessor accessor) { _accessor = accessor; } [HttpGet] public async Task ip(string ip) { string result = IP2RegionPlus.Search(ip); return new APIResult(new { success = true, message = result }); } [HttpGet] public async Task testTask() { string url = "https://www.taobao.com"; TkDataDTO result = new TkDataDTO(); result.message = "init"; result.success = true; int timeout = 1000; using var cts = new CancellationTokenSource(); cts.CancelAfter(timeout); var requestTask = Task.Run(() => AlimamaPlus.testTaskAsync(result, cts.Token), cts.Token); var delayTask = Task.Delay(timeout, cts.Token); var completedTask = await Task.WhenAny(requestTask, delayTask); if (completedTask == requestTask) { result = await requestTask; } else { cts.Cancel(); result.success = false; result.message = "放弃转链"; result.reason = "请求超时"; result.itemName = "点击打开淘宝APP"; } return new APIResult(new { success = true, message = "ok", result, }); } [HttpGet] public async Task testThread() { // 查看默认的最小和最大线程数 ThreadPool.GetMinThreads(out int defaultMinWorker, out int defaultMinIOC); ThreadPool.GetMaxThreads(out int defaultMaxWorker, out int defaultMaxIOC); string tmp = $"Default Min worker threads: {defaultMinWorker}, Min I/O completion threads: {defaultMinIOC}"; string tmp2 = $"Default Max worker threads: {defaultMaxWorker}, Max I/O completion threads: {defaultMaxIOC}"; // 获取当前线程池中可用的工作线程数和 I/O 完成端口线程数 ThreadPool.GetAvailableThreads(out int availableWorkerThreads, out int availableIOCompletionThreads); string tmp3 = $"Current available worker threads: {availableWorkerThreads}, available I/O completion threads: {availableIOCompletionThreads}"; return new APIResult(new { tmp, tmp2, tmp3, }); } [HttpPost] public async Task test1([FromBody] JsonElement form) { NotifyCore.Notify(new NifyMessage { message = $"【淘宝联盟:test】cookie 掉线", priority = NifyMessagePriority.high, tags = ["red_circle"] }); return new APIResult(new { success = true, message = "ok" }); } [HttpGet] public async Task xxx() { var list = TkPoolCore.List(); if (list == null) return new APIResult(new { success = false, message = "没有有效账号", }); string message = string.Empty; foreach (var account in list) { try { var alimama = new AlimamaPlus(account); alimama.RenewCookie(); } catch (Exception ex) { message = $"【cookie续期】xxxx\n{ex.Message}\n{ex.StackTrace}"; NotifyCore.Notify(new NifyMessage { message = message, priority = NifyMessagePriority.high, tags = ["red_circle"] }); continue; } } return new APIResult(new { success = true, message = "ok" }); } [HttpPost] public async Task Upfile(IFormFile file, [FromQuery] string dir = "") { // 检查文件是否为空 if (file == null || file.Length == 0) throw new APIException("无效文件"); using MemoryStream stream = new(); file.CopyTo(stream); var bytes = stream.ToArray(); var result = await ImageHostingPlus.Dianping(file.FileName, bytes); //result = ImageHostingPlus.Dianping2(file); return new APIResult(new { data = result }); } } }