Backup and Clean Push Service and implement new Structure of Push Service ...

This commit is contained in:
2025-11-14 16:40:45 +03:30
parent cfcb2d12b4
commit 3bd4b8d562
40 changed files with 333 additions and 2560 deletions
-20
View File
@@ -1,20 +0,0 @@
using System.Threading.Tasks;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXAuthorizedPushActions {
/// <summary>
/// an authenticated user can push a message to others ...
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
Task UserMessageAsync (XPushMessage message);
/// <summary>
/// an admin user can push a message to others ...
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
Task AdminMessageAsync (XPushMessage message);
}
}
+1 -23
View File
@@ -1,27 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using xPushService.Models;
namespace xPushService.Interfaces
{
public interface IXBaseHub
{
Task OnConnectedAsync();
Task OnDisconnectedAsync(Exception exception);
Task NotifyNewConnection(string connectionId);
Task UpdateLastSeen();
Task PushMessageAsync(XPushMessage message);
Task AuthorizedMessageAsync(XPushMessage message);
Task PushMessageToAll(XPushMessage message);
Task PushMessageToConnection(
string connectionId,
XPushMessage message
);
Task PushMessageToConnections(
IEnumerable<string> connectionIds,
XPushMessage message
);
}
{ }
}
+5
View File
@@ -0,0 +1,5 @@
namespace xPushService.Interfaces
{
public interface IXBaseWebRTCHub : IXBaseHub
{}
}
-84
View File
@@ -1,84 +0,0 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXGroupsPushActions {
/// <summary>
/// send a message to specific group ...
/// </summary>
/// <param name="groupName"></param>
/// <param name="message"></param>
/// <returns></returns>
Task<bool> SendMessageToGroup (
string groupName,
XPushMessage message
);
/// <summary>
/// send a message to specific groups ...
/// </summary>
/// <param name="groupNames"></param>
/// <param name="message"></param>
/// <returns></returns>
Task<bool> SendMessageToGroups (
IEnumerable<string> groupNames,
XPushMessage message
);
/// <summary>
/// add a connection to specific group ...
/// </summary>
/// <param name="connectionId"></param>
/// <param name="groupName"></param>
/// <returns></returns>
Task<bool> AddConnectionToGroup (
string connectionId,
string groupName
);
/// <summary>
/// remove specific connection from a group ...
/// </summary>
/// <param name="connectionId"></param>
/// <param name="groupName"></param>
/// <returns></returns>
Task<bool> RemoveConnectionFromGroup (
string connectionId,
string groupName
);
/// <summary>
/// retrieve all groups name ...
/// </summary>
/// <returns></returns>
Task<IEnumerable<string>> GetGroupNames ();
/// <summary>
/// retrieve all groups with it's connections ...
/// </summary>
/// <returns></returns>
Task<IEnumerable<XPushGroupDto>> GetGroups ();
/// <summary>
/// remove all connections of specific group ...
/// </summary>
/// <param name="groupName"></param>
/// <returns></returns>
Task<bool> RemoveGroupConnections (string groupName);
/// <summary>
/// retrieve all groups name for specific connection ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<IEnumerable<string>> GetConnectionGroups (string connectionId);
/// <summary>
/// retrieve all connections in specific group ...
/// </summary>
/// <param name="groupName"></param>
/// <returns></returns>
Task<IEnumerable<XPushConnectionDto>> GetGroupConnections (string groupName);
}
}
-108
View File
@@ -1,108 +0,0 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using xModels.Dtos;
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXPushConnectionStore : IXBaseStore<XPushConnectionDto, string> {
//
#region Custom ...
/// <summary>
/// retrieve specific connection by it's Id ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<XPushConnectionDto> GetByConnectionId (string connectionId);
/// <summary>
/// retrieve specific user's connections ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<IEnumerable<XPushConnectionDto>> GetByUserName (string userName);
/// <summary>
/// retrieve specific user's connected device connection
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<XPushConnectionDto> GetByUserDevice (string userName, XDeviceDto device);
/// <summary>
/// check a connection exists or not by it's id ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<bool> IsExistsConnectionId (string connectionId);
/// <summary>
/// check specific user connected or not ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<bool> IsExistsUser (string userName);
/// <summary>
/// retrieve specific user's connected devices ...
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<IEnumerable<XDeviceDto>> GetUserDevices (string userName);
/// <summary>
/// remove specific connection by it's id ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<bool> RemoveByConnectionId (string connectionId);
/// <summary>
/// remove specified user's connected device connection ...
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<bool> RemoveByUserDevice (string userName, XDeviceDto device);
/// <summary>
/// remove specific user's all connected devices ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<bool> RemoveUser (string userName);
/// <summary>
/// Get specific connections last seen ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<DateTime> GetLastSeenByConnectionId (string connectionId);
/// <summary>
/// get specific user's last seen ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<DateTime> GetLastSeenByUserName (string userName);
/// <summary>
/// get specific user's connected device last seen ...
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<DateTime> GetLastSeenByUserDevice (string userName, XDeviceDto device);
/// <summary>
/// Update Connection last seen ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<bool> UpdateLastSeen(string connectionId);
#endregion
}
}
@@ -1,8 +0,0 @@
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces
{
public interface IXPushConnectionStoreEvents : IXBaseStoreEvents<XPushConnectionDto, string>
{ }
}
-8
View File
@@ -1,8 +0,0 @@
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces
{
public interface IXPushGroupStore : IXBaseStore<XPushGroupDto, string>
{ }
}
-8
View File
@@ -1,8 +0,0 @@
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces
{
public interface IXPushGroupStoreEvents : IXBaseStoreEvents<XPushGroupDto, string>
{}
}
-12
View File
@@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace xPushService.Interfaces
{
public interface IXPushProvider
{
}
}
-105
View File
@@ -1,105 +0,0 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using xModels.Dtos;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXUserPushActions {
/// <summary>
/// add an specific user to a group ...
/// </summary>
/// <param name="userName"></param>
/// <param name="groupName"></param>
/// <returns></returns>
Task<bool> AddUserToGroup (
string userName,
string groupName
);
/// <summary>
/// add an specific user's connected device to a group ...
/// </summary>
/// <param name="userName"></param>
/// <param name="groupName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<bool> AddUserDeviceToGroup (
string userName,
string groupName,
XDeviceDto device
);
/// <summary>
/// remove a user from specific groups ...
/// </summary>
/// <param name="userName"></param>
/// <param name="groupName"></param>
/// <returns></returns>
Task<bool> RemoveUserFromGroup (
string userName,
string groupName
);
/// <summary>
/// remove specific user's connected device from a group ...
/// </summary>
/// <param name="userName"></param>
/// <param name="groupName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<bool> RemoveUserDeviceFromGroup (
string userName,
string groupName,
XDeviceDto device
);
/// <summary>
/// send a message to specific user ...
/// </summary>
/// <param name="userName"></param>
/// <param name="message"></param>
/// <returns></returns>
Task<bool> SendMessageToUser (
string userName,
XPushMessage message
);
/// <summary>
/// send a message to a user's specific connected device ...
/// </summary>
/// <param name="userName"></param>
/// <param name="message"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<bool> SendMessageToUserDevice (
string userName,
XPushMessage message,
XDeviceDto device
);
/// <summary>
/// send a message to specific users ...
/// </summary>
/// <param name="userNamea"></param>
/// <param name="message"></param>
/// <returns></returns>
Task<bool> SendMessageToUsers (
IEnumerable<string> userNames,
XPushMessage message
);
/// <summary>
/// retrieve all users groups ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<IEnumerable<string>> GetUserGroups (string userName);
/// <summary>
/// retrieve specific user's connected device ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<IEnumerable<XPushConnectionDto>> GetUserConnections (string userName);
}
}
-6
View File
@@ -1,6 +0,0 @@
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXWebRTCConnectionStore : IXBaseStore<XWebRTCConnectionDto, string> { }
}
@@ -1,8 +0,0 @@
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces
{
public interface IXWebRTCConnectionStoreEvents : IXBaseStoreEvents<XWebRTCConnectionDto, string>
{ }
}