yz_server/Server/Controllers/FunctionSetting/nouse.cs

72 lines
3.3 KiB
C#
Raw Normal View History

2022-04-16 07:48:12 +00:00
using CsharpHttpHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Server.Controllers.FunctionSetting
{
public class nouse
{
public void nouse()
{
try
{
var http = new HttpHelper();
var item = http.GetItem(_info.api_location);
item.Method = "post";
item.ContentType = "application/json;";//返回类型 可选项有默认值
switch (_info.notice_apitype)
{
case NoticeApiType.API:
{
if (!string.IsNullOrEmpty(_info.token))
{
long dingTimestamp = (DateTime.UtcNow.Ticks - new DateTime(1970, 1, 1, 0, 0, 0, 0).Ticks) / 10000;
string canonicalString = $"{dingTimestamp}\n{_info.token}";
string signature = Convert.ToBase64String(Sign(Encoding.UTF8.GetBytes(canonicalString), Encoding.UTF8.GetBytes(_info.token)));
item.URL = item.URL + $"&timestamp={dingTimestamp}&sign={signature}";
}
item.PostDataType = CsharpHttpHelper.Enum.PostDataType.Byte;
item.PostdataByte = Encoding.UTF8.GetBytes(HttpHelper.ObjectToJson(new { msgtype = "text", text = new { content = _message } }));
}
break;
case NoticeApiType.API:
{
item.PostDataType = CsharpHttpHelper.Enum.PostDataType.Byte;
item.PostdataByte = Encoding.UTF8.GetBytes(HttpHelper.ObjectToJson(new { msgtype = "text", text = new { content = _message } }));
}
break;
case NoticeApiType.API:
{
item.PostDataType = CsharpHttpHelper.Enum.PostDataType.Byte;
if (_info.api_location.Contains("bot/v2/hook"))
item.PostdataByte = Encoding.UTF8.GetBytes(HttpHelper.ObjectToJson(new { msg_type = "text", content = new { text = _message } }));
else
item.PostdataByte = Encoding.UTF8.GetBytes(HttpHelper.ObjectToJson(new { title = "", text = _message }));
}
break;
default: throw new Exception("无法识别的API类型!" + _info.notice_apitype.ToString());
}
var html = http.GetHtml(item).Html;
if (html.Contains("ok") || html.Contains("success"))
return;
throw new Exception(html);
}
catch (Exception ex)
{
if (ex.Message.Contains("sign not match"))
{
Thread.Sleep(370);
continue;
}
exception = ex;
EventClient.OnEvent(null, $"{_info.name}提醒失败:" + ex.Message);
}
}
}
}