增加BARK声音、保存、自动复制支持

This commit is contained in:
xpnas 2021-04-08 22:17:40 +08:00
parent 77048a07a9
commit 5cd022770e
6 changed files with 48 additions and 37 deletions

View File

@ -120,7 +120,7 @@ namespace Inotify.Controllers
public IActionResult GetSendInfos(string? start, string? end) public IActionResult GetSendInfos(string? start, string? end)
{ {
var templates = SendTaskManager.Instance.GetInputTemeplates(); var templates = SendTaskManager.Instance.GetInputTemeplates();
var sendInfos = DBManager.Instance.DBase.Fetch<SendInfo>(); var sendInfos = DBManager.Instance.DBase.Fetch<SendInfo>().Where(e=>!string.IsNullOrEmpty( e.TemplateID)).ToList();
var sendInfoQuerys = sendInfos.Where(e => int.Parse(e.Date) >= int.Parse(start) && int.Parse(e.Date) <= int.Parse(end)).ToList(); var sendInfoQuerys = sendInfos.Where(e => int.Parse(e.Date) >= int.Parse(start) && int.Parse(e.Date) <= int.Parse(end)).ToList();
var sendInfoGroups = sendInfoQuerys.GroupBy(e => e.Date).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList(); var sendInfoGroups = sendInfoQuerys.GroupBy(e => e.Date).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList();
var sendTypeInfoGroups = sendInfoQuerys.GroupBy(e => e.TemplateID).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList(); var sendTypeInfoGroups = sendInfoQuerys.GroupBy(e => e.TemplateID).Select(e => new { date = e.Key, count = e.Sum(item => item.Count) }).ToList();

View File

@ -164,17 +164,10 @@ namespace Inotify.Data
return DBase.Query<SendUserInfo>().FirstOrDefault(e => e.UserName == userName); return DBase.Query<SendUserInfo>().FirstOrDefault(e => e.UserName == userName);
} }
public string GetSendAuthInfo(string token, out string guid) public string GetSendAuthInfo(string key, out string guid)
{ {
guid = string.Empty; guid = null;
var upToekn = token.ToUpper(); var authInfo = DBManager.Instance.DBase.Query<SendAuthInfo>().FirstOrDefault(e => e.Key== key.ToUpper());
var userInfo = DBManager.Instance.DBase.Query<SendUserInfo>().FirstOrDefault(e => e.Token == upToekn && e.Active);
if (userInfo == null)
{
return null;
}
var authInfo = DBManager.Instance.DBase.Query<SendAuthInfo>().FirstOrDefault(e => e.Id == userInfo.SendAuthId && e.UserId == userInfo.Id);
if (authInfo == null) if (authInfo == null)
{ {
return null; return null;

View File

@ -6,8 +6,8 @@
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<StartupObject>Inotify.Program</StartupObject> <StartupObject>Inotify.Program</StartupObject>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<AssemblyVersion>2.0.0.4</AssemblyVersion> <AssemblyVersion>2.1.0.0</AssemblyVersion>
<FileVersion>2.0.0.4</FileVersion> <FileVersion>2.1.0.0</FileVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
@ -18,7 +18,6 @@
<PackageReference Include="FluentEmail.Core" Version="3.0.0" /> <PackageReference Include="FluentEmail.Core" Version="3.0.0" />
<PackageReference Include="FluentEmail.Liquid" Version="3.0.0" /> <PackageReference Include="FluentEmail.Liquid" Version="3.0.0" />
<PackageReference Include="FluentEmail.Smtp" Version="3.0.0" /> <PackageReference Include="FluentEmail.Smtp" Version="3.0.0" />
<PackageReference Include="jose-jwt" Version="3.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.12" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.12" />
<PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.3" /> <PackageReference Include="Microsoft.Data.Sqlite" Version="5.0.3" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0" />

View File

@ -1,13 +1,7 @@
using CorePush.Apple; using CorePush.Apple;
using Jose;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
namespace Inotify.Sends.Products namespace Inotify.Sends.Products
{ {
@ -32,52 +26,50 @@ namespace Inotify.Sends.Products
[InputTypeAttribte(6, "SendUrl", "SendUrl", "SendUrl", true, true)] [InputTypeAttribte(6, "SendUrl", "SendUrl", "SendUrl", true, true)]
public string SendUrl { get; set; } public string SendUrl { get; set; }
} }
[SendMethodKey("3B6DE04D-A9EF-4C91-A151-60B7425C5AB2", "Bark", Order = 2999, Waring = "BARK通道勿手动添加请使用APP添加BARK地址绑定")] [SendMethodKey("3B6DE04D-A9EF-4C91-A151-60B7425C5AB2", "Bark", Order = 2999, Waring = "BARK通道勿手动添加请使用APP添加BARK地址绑定")]
public class BarkSendTemplate : SendTemplate<BarkAuth> public class BarkSendTemplate : SendTemplate<BarkAuth>
{ {
private static string KeyID;
private static string TeamID;
private static ApnSender apnSender; private static ApnSender apnSender;
public override bool SendMessage(SendMessage message) public override bool SendMessage(SendMessage message)
{ {
if (apnSender == null) if (apnSender == null)
{ {
KeyID = SendCacheStore.GetSystemValue("barkKeyId"); var keyID = SendCacheStore.GetSystemValue("barkKeyId");
TeamID = SendCacheStore.GetSystemValue("barkTeamId"); var teamID = SendCacheStore.GetSystemValue("barkTeamId");
var privateKey = SendCacheStore.GetSystemValue("barkPrivateKey"); var privateKey = SendCacheStore.GetSystemValue("barkPrivateKey");
var privateKeyContent = privateKey.Split('\n')[1]; var privateKeyContent = privateKey.Split('\n')[1];
var decodeKey = Convert.FromBase64String(privateKeyContent);
var apnSettings = new ApnSettings() var apnSettings = new ApnSettings()
{ {
TeamId = TeamID, TeamId = teamID,
AppBundleIdentifier = "me.fin.bark", AppBundleIdentifier = "me.fin.bark",
P8PrivateKey = privateKeyContent, P8PrivateKey = privateKeyContent,
ServerType = ApnServerType.Production, ServerType = ApnServerType.Production,
P8PrivateKeyId = KeyID, P8PrivateKeyId = keyID,
}; };
apnSender = new ApnSender(apnSettings, new HttpClient()); apnSender = new ApnSender(apnSettings, new HttpClient());
} }
var payload = new AppleNotification( var payload = new AppleNotification(
Guid.NewGuid(), Guid.NewGuid(),
message.Data, message.Data,
message.Title); message.Title)
{
IsArchive = Auth.IsArchive,
AutoMaticallyCopy=Auth.AutoMaticallyCopy,
};
payload.Aps.Sound = Auth.Sound;
var response = apnSender.Send(payload, Auth.DeviceToken); var response = apnSender.Send(payload, Auth.DeviceToken);
if (response.IsSuccess) if (response.IsSuccess)
return true; return true;
return false; return false;
} }
} }
public class AppleNotification public class AppleNotification
@ -91,8 +83,12 @@ namespace Inotify.Sends.Products
[JsonProperty("body")] [JsonProperty("body")]
public string Body { get; set; } public string Body { get; set; }
} }
[JsonProperty("sound")]
public string Sound { get; set; }
[JsonProperty("alert")] [JsonProperty("alert")]
public Alert AlertBody { get; set; } public Alert AlertBody { get; set; }
@ -119,5 +115,11 @@ namespace Inotify.Sends.Products
[JsonProperty("id")] [JsonProperty("id")]
public Guid Id { get; set; } public Guid Id { get; set; }
[JsonProperty("isarchive")]
public string IsArchive { get; set; }
[JsonProperty("automaticallycopy")]
public string AutoMaticallyCopy { get; set; }
} }
} }

View File

@ -2,9 +2,24 @@
{ {
public class SendMessage public class SendMessage
{ {
public SendMessage()
{
}
public SendMessage(SendMessage sendMessage)
{
Token = sendMessage.Token;
Title = sendMessage.Title;
Data = sendMessage.Data;
Key = sendMessage.Key;
}
public string Token; public string Token;
public string Title; public string Title;
public string? Data; public string? Data;
public string? Key; public string? Key;
} }
} }

View File

@ -178,15 +178,17 @@ namespace Inotify.Sends
var result = sendMessageMethod.Invoke(sendMethodTemplateActor, new object[] { message }); var result = sendMessageMethod.Invoke(sendMethodTemplateActor, new object[] { message });
if (result != null) if (result != null)
{ {
m_analyseMessages.Add(message); var logMessage = new SendMessage(message);
logMessage.Key = authInfo.Key;
m_analyseMessages.Add(logMessage);
if ((bool)result) if ((bool)result)
{ {
OnSendSucessed?.Invoke(this, message); OnSendSucessed?.Invoke(this, logMessage);
continue; continue;
} }
else else
{ {
OnSendFailed?.Invoke(this, message); OnSendFailed?.Invoke(this, logMessage);
} }
} }
@ -213,7 +215,7 @@ namespace Inotify.Sends
{ {
var message = m_analyseMessages.Take(); var message = m_analyseMessages.Take();
var date = DateTime.Now.ToString("yyyyMMdd"); var date = DateTime.Now.ToString("yyyyMMdd");
var authData = DBManager.Instance.GetSendAuthInfo(message.Token, out string temeplateId); var authData = DBManager.Instance.GetSendAuthInfo(message.Key, out string temeplateId);
if (temeplateId != null) if (temeplateId != null)
{ {