using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TorControlLibrary.Responses { public class RouterStatusResponse : CommandResponse { public static RouterStatusResponse Parse(String routerLine, String flagLine) { RouterStatusResponse resp = new RouterStatusResponse(); resp.PopulateData(routerLine, resp); resp.Flags = flagLine.Substring(2).Split(' '); return resp; } protected String ParseEncodedHashes(String value) { if (value.Length % 2 != 0) value += "="; Byte[] digest = Convert.FromBase64String(value); String hash = String.Empty; for (int i = 0; i < digest.Length; i++) hash += String.Format("{0:X2}", digest[i]); return hash; } //Starts at 2, line is r [ParseAttribute(2)] public String NickName { get; set; } [ParseAttribute(3, CustomParser="ParseEncodedHashes")] public String Identity { get; set; } [ParseAttribute(4, CustomParser = "ParseEncodedHashes")] public String Digest { get; set; } [ParseAttribute(5,DataElementsToRead=2)] public DateTime Publication { get; set; } [ParseAttribute(7)] public System.Net.IPAddress Address { get; set; } [ParseAttribute(8)] public Int32 ORPort { get; set; } [ParseAttribute(9)] public Int32 DirPort { get; set; } public String[] Flags { get; set; } } }