Initial Commit ...

This commit is contained in:
2024-01-25 04:47:14 +03:30
commit d862146642
37 changed files with 4039 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
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);
}
}
+84
View File
@@ -0,0 +1,84 @@
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
@@ -0,0 +1,108 @@
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
}
}
+6
View File
@@ -0,0 +1,6 @@
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXPushGroupStore : IXBaseStore<XPushGroupDto, string> { }
}
+12
View File
@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace xPushService.Interfaces
{
public interface IXPushProvider
{
}
}
+105
View File
@@ -0,0 +1,105 @@
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
@@ -0,0 +1,6 @@
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXWebRTCConnectionStore : IXBaseStore<XWebRTCConnectionDto, string> { }
}