internal static Workspace FromXml(RepositoryService versionControl, XElement element)
        {
            string computer = element.Attribute("computer").Value;
            string name     = element.Attribute("name").Value;
            string owner    = element.Attribute("owner").Value;
            //bool isLocal = Convert.ToBoolean(element.Attribute("islocal").Value);

            string   comment        = element.Element(XmlNamespaces.GetMessageElementName("Comment")).Value;
            DateTime lastAccessDate = DateTime.Parse(element.Element(XmlNamespaces.GetMessageElementName("LastAccessDate")).Value);
            var      folders        = new List <WorkingFolder>(element.Element(XmlNamespaces.GetMessageElementName("Folders"))
                                                               .Elements(XmlNamespaces.GetMessageElementName("WorkingFolder"))
                                                               .Select(el => WorkingFolder.FromXml(el)));

            return(new Workspace(versionControl, name, owner, comment, folders, computer)
            {
                LastAccessDate = lastAccessDate
            });
        }
        public Message(WebRequest request, string methodName)
        {
            this.methodName     = methodName;
            this.request        = request;
            this.request.Method = "POST";

            // PreAuth can't be used with NTLM afaict
            //this.request.PreAuthenticate=true;

            // must allow buffering for NTLM authentication
            HttpWebRequest req = (HttpWebRequest)request;

            req.AllowWriteStreamBuffering = true;

            //http://blogs.x2line.com/al/archive/2005/01/04/759.aspx#780
            //req.KeepAlive = false;
            //req.ProtocolVersion = HttpVersion.Version10;

            this.request.ContentType = "text/xml; charset=utf-8";
            this.request.Headers.Add("X-TFS-Version", "1.0.0.0");
            this.request.Headers.Add("accept-language", "en-US");
            this.request.Headers.Add("X-VersionControl-Instance", "ac4d8821-8927-4f07-9acf-adbf71119886");

            XNamespace xsiNs = XmlSchema.InstanceNamespace;
            XNamespace xsdNs = XmlSchema.Namespace;

            this.document       = new XDocument(new XDeclaration("1.0", "utf-8", "no"));
            this.messageElement = new XElement(XmlNamespaces.GetMessageElementName(methodName));
            XElement messageEl = new XElement(SoapNs + "Envelope",
                                              new XAttribute(XNamespace.Xmlns + "xsi", xsiNs),
                                              new XAttribute(XNamespace.Xmlns + "xsd", xsdNs),
                                              new XAttribute(XNamespace.Xmlns + "soap", SoapNs),
                                              new XElement(SoapNs + "Body", this.messageElement));

            this.document.Add(messageEl);
        }
 public void AddParam(string name, params object[] content)
 {
     this.messageElement.Add(new XElement(XmlNamespaces.GetMessageElementName(name), content));
 }
        public XElement ResponseReader(HttpWebResponse response)
        {
            XDocument doc = XDocument.Load(response.GetResponseStream());

            return(doc.Root.Element(SoapNs + "Body").Element(XmlNamespaces.GetMessageElementName(MethodName + "Response")).Element(XmlNamespaces.GetMessageElementName(MethodName + "Result")));
        }