82 lines
2.2 KiB
C#
82 lines
2.2 KiB
C#
using MessagePack;
|
|
|
|
namespace ChatRoomContract;
|
|
|
|
/// <summary>
|
|
/// Minimal message description
|
|
/// </summary>
|
|
[MessagePackObject]
|
|
public class Message
|
|
{
|
|
/// <summary>
|
|
/// Message ID
|
|
/// </summary>
|
|
[Key(0)]
|
|
public int id;
|
|
/// <summary>
|
|
/// Message contents
|
|
/// </summary>
|
|
[Key(1)]
|
|
public string contents;
|
|
/// <summary>
|
|
/// Does this message need to be censored?
|
|
/// </summary>
|
|
[Key(2)]
|
|
public bool needsToBeCensored;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Chat room service contract
|
|
/// </summary>
|
|
public interface IChatRoomService
|
|
{
|
|
/// <summary>
|
|
/// Register client with a name
|
|
/// </summary>
|
|
/// <param name="name">Name of client, can be duplicate between clients</param>
|
|
/// <returns>Client ID</returns>
|
|
int RegisterClient(string name);
|
|
|
|
/// <summary>
|
|
/// Get number of strikes a participant has
|
|
/// </summary>
|
|
/// <param name="clientId">Client ID</param>
|
|
/// <returns>Number of strikes</returns>
|
|
int GetStrikes(int clientId);
|
|
|
|
/// <summary>
|
|
/// Get timestamp until when the client is blocked
|
|
/// </summary>
|
|
/// <param name="clientId">Client ID</param>
|
|
/// <returns>Optional datetime object</returns>
|
|
DateTime? GetBlockedUntil(int clientId);
|
|
|
|
/// <summary>
|
|
/// Send a message, will be given to a moderator to be approved
|
|
/// </summary>
|
|
/// <param name="clientId">Client ID</param>
|
|
/// <param name="contents">Message contents</param>
|
|
/// <param name="needsToBeCensored">Does this message need to be censored?</param>
|
|
/// <returns>Was sending successful, can fail if user is blocked</returns>
|
|
bool SendMessage(int clientId, string contents, bool needsToBeCensored);
|
|
|
|
/// <summary>
|
|
/// Get the next message which hasn't been approved or rejected
|
|
/// </summary>
|
|
/// <returns>Message object. Returns null if there is no message</returns>
|
|
Message? GetNewMessage();
|
|
|
|
/// <summary>
|
|
/// Reject a message
|
|
/// </summary>
|
|
/// <param name="messageId">Message ID</param>
|
|
void RejectMessage(int messageId);
|
|
|
|
/// <summary>
|
|
/// Approve a message
|
|
/// </summary>
|
|
/// <param name="messageId">Message ID</param>
|
|
void ApproveMessage(int messageId);
|
|
}
|
|
|