// Copyright © WireMock.Net using System.Net.WebSockets; using Stef.Validation; namespace WireMock.WebSockets; internal class WebSocketMessageBuilder : IWebSocketMessageBuilder { /// public string? MessageText { get; private set; } /// public byte[]? MessageBytes { get; private set; } /// public TimeSpan? Delay { get; private set; } /// public WebSocketMessageType Type { get; private set; } /// public bool ShouldClose { get; private set; } /// public IWebSocketMessageBuilder WithEcho() { Type = WebSocketMessageType.Close; return this; } /// public IWebSocketMessageBuilder WithText(string text) { MessageText = Guard.NotNull(text); Type = WebSocketMessageType.Text; return this; } /// public IWebSocketMessageBuilder WithBinary(byte[] bytes) { MessageBytes = Guard.NotNull(bytes); Type = WebSocketMessageType.Binary; return this; } /// public IWebSocketMessageBuilder WithDelay(TimeSpan delay) { Delay = delay; return this; } /// public IWebSocketMessageBuilder WithDelay(int delayInMilliseconds) { Guard.Condition(delayInMilliseconds, d => d >= 0); return WithDelay(TimeSpan.FromMilliseconds(delayInMilliseconds)); } /// public IWebSocketMessageBuilder Close() { ShouldClose = true; return this; } /// public IWebSocketMessageBuilder AndClose() => Close(); }