예제 #1
0
        /// <summary>
        /// 指定した板の草稿を削除
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="draft"></param>
        public void Remove(BoardInfo board, Draft draft)
        {
            if (board == null)
            {
                throw new ArgumentNullException("board");
            }
            if (draft == null)
            {
                throw new ArgumentNullException("draft");
            }

            XmlDocument doc = new XmlDocument();
            XmlElement  root;

            string filePath = cache.GetFolderPath(board);

            filePath = Path.Combine(filePath, DraftFileName);

            if (File.Exists(filePath))
            {
                doc.Load(filePath);
                root = doc.DocumentElement;

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

                // 既に同じ草稿が存在した場合、一端削除してから新しい要素を追加
                XmlNode node = doc.SelectSingleNode(xpath);
                if (node != null)
                {
                    root.RemoveChild(node);
                }

                doc.Save(filePath);
            }
        }
예제 #2
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);
        }