private static string InitiateAsk(string userName, string computerName, UriBuilder uriBuilder) { uriBuilder.Path = "/ods-ask"; HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(uriBuilder.Uri); wreq.Method = "POST"; Dictionary <string, object> req = new Dictionary <string, object>(); req["askDevice"] = string.Empty; req["computer"] = computerName; req["user"] = userName; using (Stream outStream = wreq.GetRequestStream()) using (StreamWriter w = new StreamWriter(outStream, Encoding.UTF8)) { Plist.Write(outStream, req); } string askId; WebResponse wrsp = wreq.GetResponse(); using (Stream inStream = wrsp.GetResponseStream()) { Dictionary <string, object> plist = Plist.Parse(inStream); askId = ((int)plist["askID"]).ToString(); } return(askId); }
public void Parse() { using (Stream stream = File.OpenRead("plist.xml")) { var plist = Plist.Parse(stream); Assert.NotNull(plist); Assert.Equal(4, plist.Keys.Count); Assert.Equal("valueA", plist["keyA"]); Assert.Equal("value&B", plist["key&B"]); } }
private static string GetAskToken(string askId, UriBuilder uriBuilder, int maxWaitSecs) { uriBuilder.Path = "/ods-ask-status"; uriBuilder.Query = "askID=" + askId; bool askBusy = true; string askStatus = "unknown"; string askToken = null; DateTime start = DateTime.UtcNow; TimeSpan maxWait = TimeSpan.FromSeconds(maxWaitSecs); while (askStatus == "unknown" && DateTime.Now - start < maxWait) { Thread.Sleep(1000); WebRequest wreq = WebRequest.Create(uriBuilder.Uri); wreq.Method = "GET"; WebResponse wrsp = wreq.GetResponse(); using (Stream inStream = wrsp.GetResponseStream()) { Dictionary <string, object> plist = Plist.Parse(inStream); askBusy = (bool)plist["askBusy"]; askStatus = plist["askStatus"] as string; if (askStatus == "accepted") { askToken = plist["askToken"] as string; } } } if (askToken == null) { throw new UnauthorizedAccessException("Access not granted"); } return(askToken); }
/// <summary> /// Initializes a new instance of the DiskImageFile class. /// </summary> /// <param name="stream">The stream to read</param> /// <param name="ownsStream">Indicates if the new instance should control the lifetime of the stream.</param> public DiskImageFile(Stream stream, Ownership ownsStream) { _udifHeader = new UdifResourceFile(); _stream = stream; _ownsStream = ownsStream; stream.Position = stream.Length - _udifHeader.Size; byte[] data = Utilities.ReadFully(stream, _udifHeader.Size); _udifHeader.ReadFrom(data, 0); if (_udifHeader.SignatureValid) { stream.Position = (long)_udifHeader.XmlOffset; byte[] xmlData = Utilities.ReadFully(stream, (int)_udifHeader.XmlLength); var plist = Plist.Parse(new MemoryStream(xmlData)); _resources = ResourceFork.FromPlist(plist); _buffer = new UdifBuffer(stream, _resources, _udifHeader.SectorCount); } }