FilterDocument.cs
上传用户:huiyue
上传日期:2022-04-08
资源大小:1429k
文件大小:4k
源码类别:

搜索引擎

开发平台:

ASP/ASPX

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace Searcharoo.Common
  5. {
  6.     /// <summary>
  7.     /// WPD property retrieval in C#
  8.     /// http://blogs.msdn.com/dimeby8/archive/2006/12/11/wpd-property-retrieval-in-c.aspx
  9.     /// 
  10.     /// Marshalling variant properties in C#
  11.     /// http://blogs.msdn.com/dimeby8/archive/2006/12/12/marshalling-variant-properties-in-c.aspx
  12.     /// 
  13.     /// Blogs
  14.     /// http://blogs.msdn.com/dimeby8/default.aspx
  15.     /// 
  16.     /// TODO: OfficeFilterDocument - to use DSOFile.dll to extract properties (mainly title, keywords)
  17.     /// http://support.microsoft.com/kb/224351
  18.     /// http://msdn.microsoft.com/en-us/library/aa190636(office.10).aspx
  19.     /// </summary>
  20.     public class FilterDocument : DownloadDocument
  21.     {
  22.         private string _All;
  23.         private string _WordsOnly;
  24.         public FilterDocument(Uri location):base(location)
  25.         {}
  26.         /// <summary>
  27.         /// Set 'all' and 'words only' to the same value (no parsing)
  28.         /// </summary>
  29.         public override string All
  30.         {
  31.             get { return _All; }
  32.             set { 
  33.                 _All = value;
  34.                 _WordsOnly = _All;
  35.             }
  36.         }
  37.         
  38.         public override string WordsOnly
  39.         {
  40.             get { return _WordsOnly; }
  41.         }
  42.         public override string[] WordsArray
  43.         {
  44.             get { return this.WordsStringToArray(WordsOnly); }
  45.         }
  46.        
  47.         /// <summary>
  48.         /// 
  49.         /// </summary>
  50.         public override void Parse()
  51.         {
  52.             // no parsing (for now). perhaps in future we can regex look for urls (www.xxx.com) and try to link to them...
  53.         }
  54.         public override bool GetResponse(System.Net.HttpWebResponse webresponse)
  55.         {
  56.             string filename = System.IO.Path.Combine(
  57.                 Preferences.DownloadedTempFilePath
  58.             ,   (System.IO.Path.GetFileName(this.Uri.LocalPath))
  59.             );
  60.             GetResponseCore(webresponse, filename);
  61.             GetResponseCoreFinalize(filename);
  62.             if (this.All != string.Empty)
  63.             {
  64.                 this.Description = base.GetDescriptionFromWordsOnly(WordsOnly);
  65.                 return true;
  66.             }
  67.             else
  68.             {
  69.                 return false;
  70.             }
  71.         }
  72.         /// <summary>
  73.         /// [v7] Move the primary IFilter code into a protected method, 
  74.         /// to make extension (ie. subclassing) easier
  75.         /// </summary>
  76.         protected void GetResponseCore(System.Net.HttpWebResponse webresponse, string filename)
  77.         {
  78.             this.Title = System.IO.Path.GetFileNameWithoutExtension(filename);
  79.             SaveDownloadedFile(webresponse, filename);
  80.             try
  81.             {
  82.                 EPocalipse.IFilter.FilterReader ifil = new EPocalipse.IFilter.FilterReader(filename);
  83.                 this.All = ifil.ReadToEnd();
  84.                 ifil.Close();
  85.             }
  86.             catch (Exception argex)
  87.             {
  88.                 System.Diagnostics.Debug.WriteLine(argex);
  89.             }
  90.         }
  91.         /// <summary>
  92.         /// [v7] Move the IFilter cleanup code into a protected method 
  93.         /// so that subclasses can have a look at the file before it's deleted.
  94.         /// </summary>
  95.         protected void GetResponseCoreFinalize(string filename)
  96.         {
  97.             if (System.IO.File.Exists(filename))
  98.             {   // clean up - delete the PDF file since we don't want to cache them (for now)
  99.                 System.IO.File.Delete(filename);    
  100.             }
  101.         }
  102.     }
  103. }