public async Task ParseCircuitEstablishedStatusEventAsync() { string data = "650 STATUS_CLIENT NOTICE CIRCUIT_ESTABLISHED\r\n"; TorControlReply rawReply = await TorControlReplyReaderTest.ParseAsync(data); StatusEvent statusEvent = StatusEvent.FromReply(rawReply); Assert.Equal(StatusType.STATUS_CLIENT, statusEvent.Type); Assert.Equal(StatusSeverity.NOTICE, statusEvent.Severity); Assert.Equal("CIRCUIT_ESTABLISHED", statusEvent.Action); Assert.Empty(statusEvent.Arguments); }
/// <exception cref="TorControlReplyParseException"/> public static IAsyncEvent Parse(TorControlReply reply) { if (reply.StatusCode != StatusCode.AsynchronousEventNotify) { throw new TorControlReplyParseException($"Event: Expected {StatusCode.AsynchronousEventNotify} status code."); } (string value, _) = Tokenizer.ReadUntilSeparator(reply.ResponseLines[0]); return(value switch { "STATUS_CLIENT" or "STATUS_SERVER" or "STATUS_GENERAL" => StatusEvent.FromReply(reply), "CIRC" => CircEvent.FromReply(reply), _ => throw new NotSupportedException("This should never happen."), });
public async Task ParseBootstrapStatusEvent2Async() { string data = "650 STATUS_CLIENT NOTICE BOOTSTRAP PROGRESS=95 TAG=circuit_create SUMMARY=\"Establishing a Tor circuit\"\r\n"; TorControlReply rawReply = await TorControlReplyReaderTest.ParseAsync(data); StatusEvent statusEvent = StatusEvent.FromReply(rawReply); Assert.Equal(StatusType.STATUS_CLIENT, statusEvent.Type); Assert.Equal(StatusSeverity.NOTICE, statusEvent.Severity); Assert.Equal("BOOTSTRAP", statusEvent.Action); Assert.Equal(3, statusEvent.Arguments.Count); Assert.Equal("95", statusEvent.Arguments["PROGRESS"]); Assert.Equal("circuit_create", statusEvent.Arguments["TAG"]); Assert.Equal("Establishing a Tor circuit", statusEvent.Arguments["SUMMARY"]); }
public async Task ParseBootstrapStatusEvent1Async() { string data = "650 STATUS_CLIENT NOTICE BOOTSTRAP PROGRESS=14 TAG=handshake SUMMARY=\"Handshaking with a relay\"\r\n"; TorControlReply rawReply = await TorControlReplyReaderTest.ParseAsync(data); StatusEvent statusEvent = StatusEvent.FromReply(rawReply); Assert.Equal(StatusType.STATUS_CLIENT, statusEvent.Type); Assert.Equal(StatusSeverity.NOTICE, statusEvent.Severity); Assert.Equal("BOOTSTRAP", statusEvent.Action); Assert.Equal(3, statusEvent.Arguments.Count); Assert.Equal("14", statusEvent.Arguments["PROGRESS"]); Assert.Equal("handshake", statusEvent.Arguments["TAG"]); Assert.Equal("Handshaking with a relay", statusEvent.Arguments["SUMMARY"]); }
/// <exception cref="TorControlReplyParseException"/> public static IAsyncEvent Parse(TorControlReply reply) { if (reply.StatusCode != StatusCode.AsynchronousEventNotify) { throw new TorControlReplyParseException($"Event: Expected {StatusCode.AsynchronousEventNotify} status code."); } (string value, _) = Tokenizer.ReadUntilSeparator(reply.ResponseLines[0]); return(value switch { StatusEvent.EventNameStatusClient or StatusEvent.EventNameStatusServer or StatusEvent.EventNameStatusGeneral => StatusEvent.FromReply(reply), CircEvent.EventName => CircEvent.FromReply(reply), NetworkLivenessEvent.EventName => NetworkLivenessEvent.FromReply(reply), OrConnEvent.EventName => OrConnEvent.FromReply(reply), _ => throw new NotSupportedException("This should never happen."), });