using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.AspNetCore.Mvc.Filters; using System; using System.Collections.Generic; using System.Linq; using System.Text; using dodohold.core; using Spire.Pdf.Exporting.XPS.Schema; using System.Xml.Linq; using System.Net; using TencentCloud.Mrs.V20200910.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authentication; using Spire.Pdf.Graphics; using Google.Protobuf.WellKnownTypes; namespace molilian.core { public partial class UnionParseCore { public static async Task UnionParseAsync(string content, string channel, string ip, string oaid) { return channel switch { "wemeet" => WemeetParse(content, ip, oaid), "bdpan" => PanParse(content, ip, oaid), "jd" => await JdParseAsync(content, ip, oaid), "dy" => await DyParseAsync(content, ip, oaid), _ => await TaobaoParseAsync(content, ip, oaid), }; } public static APIResult WemeetParse(string content, string ip, string oaid) { var result = ToolParsePlus.GetFormattedObject(content, ip, oaid); content = content.UrlDecode(); result.rawContent = content; try { ToolParsePlus.WemeetParse(content, ref result); } catch (Exception ex) { new LoggerLibrary("unionParse", "wemeet_error") .Info(ip, oaid) .Info(content) .Info(ex.Message, ex.StackTrace) .Save(); NotifyCore.Notify(new NifyMessage { message = $"【转链异常Wemeet】\n{content}\n\n{ex.Message}\n{ex.StackTrace}", priority = NifyMessagePriority.high, tags = ["red_circle"] }); result.success = false; result.message = "内部错误"; result.reason = "转链接口异常"; } _ = TkLogCore.ParseLogAsync(result); return new APIResult(new { result.success, result.message, channel = result?.channel.ToString(), result.shortLinkurl, result.deeplink_url, }, result.success ? APIResultCodeEnum.OK : APIResultCodeEnum.NotAcceptable); } public static APIResult PanParse(string content, string ip, string oaid) { var result = ToolParsePlus.GetFormattedObject(content, ip, oaid); content = content.UrlDecode(); result.rawContent = content; try { ToolParsePlus.PanParse(content, ref result); } catch (Exception ex) { new LoggerLibrary("unionParse", "pan_error") .Info(ip, oaid) .Info(content) .Info(ex.Message, ex.StackTrace) .Save(); NotifyCore.Notify(new NifyMessage { message = $"【转链异常Pan】\n{content}\n\n{ex.Message}\n{ex.StackTrace}", priority = NifyMessagePriority.high, tags = ["red_circle"] }); result.success = false; result.message = "内部错误"; result.reason = "转链接口异常"; } _ = TkLogCore.ParseLogAsync(result); return new APIResult(new { result.success, result.message, channel = result?.channel.ToString(), result.shortLinkurl, result.deeplink_url, }, result.success ? APIResultCodeEnum.OK : APIResultCodeEnum.NotAcceptable); } public static async Task TaobaoParseAsync(string content, string ip = "", string oaid = "") { AlimamaPlus alimama = null; var result = AlimamaPlus.GetFormattedObject(content, ip, oaid); content = content.UrlDecode(); result.rawContent = content; try { if (AlimamaPlus.OtherPlatform(content)) { result.success = false; result.message = "放弃转链"; result.reason = "平台错误"; _ = TkLogCore.ParseLogAsync(result); return new APIResult(new { channel = result?.channel.ToString(), result.success, result.message, result.shortLinkurl, result.deeplink_url, }, APIResultCodeEnum.NotAcceptable); } if (AlimamaPlus.ShouldIgnoreRequest(ip, oaid, out string reason)) { result.success = false; result.message = "放弃转链"; result.reason = reason; _ = TkLogCore.ParseLogAsync(result); return new APIResult(new { result.success, result.message, result.content, result.couponAmount, result.taoToken, result.shortLinkurl, result.deeplink_url, }); } var account = TkPoolCore.GetOne(); if (account == null) { result.success = false; result.message = "放弃转链"; result.reason = "没有匹配账号"; _ = TkLogCore.ParseLogAsync(result); return new APIResult(new { result.success, result.message, result.content, result.couponAmount, result.taoToken, result.shortLinkurl, result.deeplink_url, }); } result.accountName = account.name; alimama = new AlimamaPlus(account); result = await alimama.UnionParse2Async(content, result); } //catch (TaskCanceledException) //{ // result.success = false; // result.message = "放弃转链"; // result.reason = "请求超时"; //} //catch (AggregateException ae) //{ // foreach (var innerEx in ae.InnerExceptions) // { // if (innerEx is TaskCanceledException) // { // result.success = false; // result.message = "放弃转链"; // result.reason = "请求超时"; // break; // } // new LoggerLibrary("unionParse", "tb_error") // .Info(ip, oaid) // .Info(content) // .Info(innerEx.Message, innerEx.StackTrace) // .Save(); // NotifyCore.Notify(new NifyMessage // { // message = $"【转链异常TB】\n{content}\n\n{innerEx.Message}\n{innerEx.StackTrace}", // priority = NifyMessagePriority.high, // tags = ["red_circle"] // }); // result.success = false; // result.message = "内部错误"; // result.reason = "转链接口异常"; // } //} catch (Exception ex) { if (ex.Message.Contains("A task was canceled")) { result.success = false; result.message = "放弃转链"; result.reason = "请求超时"; } else { new LoggerLibrary("unionParse", "tb_error") .Info(ip, oaid) .Info(content) .Info(ex.Message, ex.StackTrace) .Save(); NotifyCore.Notify(new NifyMessage { message = $"【转链异常TB】\n{content}\n\n{ex.Message}\n{ex.StackTrace}", priority = NifyMessagePriority.high, tags = ["red_circle"] }); result.success = false; result.message = "放弃转链"; result.reason = "转链接口异常"; } } _ = TkLogCore.ParseLogAsync(result, alimama); return new APIResult(new { result.success, result.message, link_type = result.link_type.ToString(), channel = result?.channel.ToString(), result.channel_type, result.itemId, result.itemName, result.pic, result.promotionPrice, result.couponAmount, result.couponEffectiveStartTime, result.couponEffectiveEndTime, result.shortLinkurl, result.deeplink_url, result.content, result.taoToken, }); } public static async Task JdParseAsync(string content, string ip, string oaid) { var result = JdUnionPlus.GetFormattedObject(content, ip, oaid); content = content.UrlDecode(); result.rawContent = content; bool IfExceptional = false; try { if (JdUnionPlus.ShouldIgnoreRequest(ip, oaid, out string reason)) { result.success = false; result.message = "放弃转链"; result.reason = reason; _ = TkLogCore.ParseLogAsync(result); return new APIResult(result); } var account = JdPoolCore.GetOne(); if (account == null) { result.success = false; result.message = "放弃转链"; result.reason = "没有匹配账号"; _ = TkLogCore.ParseLogAsync(result); return new APIResult(result); } result = await JdUnionPlus.JdParseAsync(account, content, result); } //catch (TaskCanceledException c) //{ // result.success = false; // result.message = "放弃转链"; // result.reason = "请求超时"; //} //catch (AggregateException ae) //{ // foreach (var innerEx in ae.InnerExceptions) // { // if (innerEx is TaskCanceledException) // { // result.success = false; // result.message = "放弃转链"; // result.reason = "请求超时"; // break; // } // new LoggerLibrary("unionParse", "jd_error") // .Info(ip, oaid) // .Info(content) // .Info(innerEx.Message, innerEx.StackTrace) // .Save(); // NotifyCore.Notify(new NifyMessage // { // message = $"【转链异常JD】\n{content}\n\n{innerEx.Message}\n{innerEx.StackTrace}", // priority = NifyMessagePriority.high, // tags = ["red_circle"] // }); // result.success = false; // result.message = "内部错误"; // result.reason = "转链接口异常"; // } //} catch (Exception ex) { if (ex.Message.Contains("A task was canceled")) { result.success = false; result.message = "放弃转链"; result.reason = "请求超时"; } else { IfExceptional = true; new LoggerLibrary("unionParse", "jd_error") .Info(ip, oaid) .Info(content) .Info(ex.Message, ex.StackTrace) .Save(); NotifyCore.Notify(new NifyMessage { message = $"【转链异常JD】\n{content}\n\n{ex.Message}\n{ex.StackTrace}", priority = NifyMessagePriority.high, tags = ["red_circle"] }); result.success = false; result.message = "内部错误"; result.reason = "转链接口异常"; } } _ = TkLogCore.ParseLogAsync(result); return new APIResult(new { result.success, result.message, link_type = result.link_type.ToString(), channel = result?.channel.ToString(), result.channel_type, result.itemId, result.shortLinkurl, result.deeplink_url, }, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK); } public static async Task DyParseAsync(string content, string ip, string oaid) { var result = DyUnionPlus.GetFormattedObject(content, ip, oaid); content = content.UrlDecode(); result.rawContent = content; bool IfExceptional = false; try { if (DyUnionPlus.ShouldIgnoreRequest(ip, oaid, out string reason)) { result.success = false; result.message = "放弃转链"; result.reason = reason; _ = TkLogCore.ParseLogAsync(result); return new APIResult(result); } var account = PangolinPoolCore.GetOne(); if (account == null) { result.success = false; result.message = "放弃转链"; result.reason = "没有匹配账号"; _ = TkLogCore.ParseLogAsync(result); return new APIResult(result); } result = await DyUnionPlus.DyParseAsync(account, content, result); } catch (Exception ex) { if (ex.Message.Contains("A task was canceled")) { result.success = false; result.message = "放弃转链"; result.reason = "请求超时"; } else { IfExceptional = true; new LoggerLibrary("unionParse", "dy_error") .Info(ip, oaid) .Info(content) .Info(ex.Message, ex.StackTrace) .Save(); NotifyCore.Notify(new NifyMessage { message = $"【转链异常DY】\n{content}\n\n{ex.Message}\n{ex.StackTrace}", priority = NifyMessagePriority.high, tags = ["red_circle"] }); result.success = false; result.message = "内部错误"; result.reason = "转链接口异常"; } } _ = TkLogCore.ParseLogAsync(result); return new APIResult(new { result.success, result.message, link_type = result.link_type.ToString(), channel = result?.channel.ToString(), content = result?.rawContent.ToString(), taoToken = result?.taoToken.ToString(), result.channel_type, result.title, result.shortLinkurl, result.deeplink_url, }, IfExceptional ? APIResultCodeEnum.NotAcceptable : APIResultCodeEnum.OK); } } }