Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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"]);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        /// <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);
            }
        }