/// <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); }
/// <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); }