Files
zap-stream-api/NostrStreamer/Services/StreamManager/IStreamManager.cs
2023-08-22 20:04:25 +01:00

89 lines
2.2 KiB
C#

using NostrStreamer.Database;
namespace NostrStreamer.Services.StreamManager;
public interface IStreamManager
{
/// <summary>
/// Return the current stream
/// </summary>
/// <returns></returns>
UserStream GetStream();
/// <summary>
/// Test if streaming is allowed for this user, otherwise throw
/// </summary>
/// <exception cref="Exception">Throws if cant stream</exception>
void TestCanStream();
/// <summary>
/// Stream ingress check on srs-edge
/// </summary>
/// <returns>List of forward URLs</returns>
Task<List<string>> OnForward();
/// <summary>
/// Stream started at origin for HLS split
/// </summary>
/// <returns></returns>
Task StreamStarted();
/// <summary>
/// Stream stopped
/// </summary>
/// <returns></returns>
Task StreamStopped();
/// <summary>
/// Stream reap HLS
/// </summary>
/// <param name="duration"></param>
/// <returns></returns>
Task ConsumeQuota(double duration);
/// <summary>
/// Update viewer count
/// </summary>
public Task UpdateViewers();
/// <summary>
/// Add a guest to the stream
/// </summary>
/// <param name="pubkey"></param>
/// <param name="role"></param>
/// <param name="zapSplit"></param>
/// <returns></returns>
Task AddGuest(string pubkey, string role, decimal zapSplit);
/// <summary>
/// Remove guest from the stream
/// </summary>
/// <param name="pubkey"></param>
/// <returns></returns>
Task RemoveGuest(string pubkey);
/// <summary>
/// When a new DVR segment is available
/// </summary>
/// <param name="segment"></param>
/// <returns></returns>
Task OnDvr(Uri segment);
/// <summary>
/// Republish stream event
/// </summary>
/// <returns></returns>
Task UpdateEvent();
/// <summary>
/// Return a list of recordings segments
/// </summary>
/// <returns></returns>
Task<List<UserStreamRecording>> GetRecordings();
/// <summary>
/// Return the last added recording segment
/// </summary>
/// <returns></returns>
Task<UserStreamRecording?> GetLatestRecordingSegment();
}