Example #1
0
        /// <summary>
        /// 指定したスレッドの草稿を取得
        /// </summary>
        /// <param name="header"></param>
        /// <returns></returns>
        public Draft Load(ThreadHeader header)
        {
            if (header == null)
            {
                throw new ArgumentNullException("header");
            }

            Draft draft = null;

            string filePath = cache.GetFolderPath(header.BoardInfo);

            filePath = Path.Combine(filePath, DraftFileName);

            if (File.Exists(filePath))
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(filePath);

                // 同じスレッド番号を持つ草稿要素を検索するためのXPath
                string  xpath = String.Format("draft/thread[@key=\"{0}\"]", header.Key);
                XmlNode node  = doc.SelectSingleNode(xpath);

                if (node != null && ThreadIndexer.Read(cache, header) != null)
                {
                    string name  = node.SelectSingleNode("from").InnerText;
                    string email = node.SelectSingleNode("email").InnerText;
                    string body  = node.SelectSingleNode("message").InnerText;

                    // 草稿情報を作成
                    PostRes res = new PostRes(name, email, body);
                    draft = new Draft(header, res);
                }
            }

            return(draft);
        }