コード例 #1
0
        /// <summary>
        /// インデックスを読み込む
        /// </summary>
        /// <param name="header">基本的な情報が格納されたThreadHeader</param>
        /// <returns>読み込みに成功すればThreadHeaderのインスタンス、失敗すればnull</returns>
        public static ThreadHeader Read(Cache cache, ThreadHeader header)
        {
            if (cache == null)
            {
                throw new ArgumentNullException("cache");
            }

            if (header == null)
            {
                throw new ArgumentNullException("header");
            }

            // インデックスファイルへのパス
            string       filePath = cache.GetIndexPath(header);
            ThreadHeader result   = Read(filePath);

            if (result != null)
            {
                // 参照はそのままで値だけをコピーする
                result.Tag = header.Tag;
                result.CopyTo(header);
            }
            else
            {
                header = null;
            }

            return(header);
        }
コード例 #2
0
        /// <summary>
        /// 過去ログが存在するかどうかを調べてみる
        /// </summary>
        /// <param name="header"></param>
        /// <returns></returns>
        public static bool KakologIsExist(ThreadHeader header, out bool gzipCompress)
        {
            X2chKakoThreadHeader kako = new X2chKakoThreadHeader();

            header.CopyTo(kako);

            // まず.dat.gzを取得してみて、だめなら.datヲ取得する。
            // それでもだめなら諦める。
            kako.GzipCompress = true;
            bool retried = false;

Retry:
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(kako.DatUrl);

            req.UserAgent = TwinDll.UserAgent;
            req.Headers.Add("Accept-Encoding", "gzip");
            req.Method            = "HEAD";
            req.AllowAutoRedirect = false;

            HttpWebResponse res = (HttpWebResponse)req.GetResponse();

            res.Close();

            if (res.StatusCode == HttpStatusCode.OK)
            {
                gzipCompress = kako.GzipCompress;
                return(true);
            }
            else if (!retried)
            {
                kako.GzipCompress = false;
                retried           = true;
                goto Retry;
            }

            gzipCompress = false;

            return(false);
        }