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

搜索引擎

开发平台:

ASP/ASPX

  1. using System;
  2. namespace Searcharoo.Common 
  3. {
  4.     /// <summary>
  5.     /// Retrieve data from web.config (or app.config)
  6.     /// </summary>
  7.     public static class Preferences
  8.     {
  9.         #region Private Fields
  10.         private static int _RecursionLimit;
  11.         private static string _UserAgent;
  12.         private static string _RobotUserAgent;
  13.         private static int _RequestTimeout;
  14.         private static bool _AssumeAllWordsAreEnglish;
  15.         private static string _IgnoreRegionTagNoIndex;
  16.         private static int _SummaryCharacters;
  17.         private static string _DownloadedTempFilePath;
  18.         private static bool _InMediumTrust;
  19.         private static string _ProxyUrl;
  20.         private static string _DefaultDocument;
  21.         #endregion
  22.         /// <summary>
  23.         /// Load preferences from *.config (web.config for ASPX, app.config for the console program)
  24.         /// and apply defaults where the values are not found.
  25.         /// </summary>
  26.         static Preferences()
  27.         { 
  28.             _AssumeAllWordsAreEnglish = true;
  29.             _RecursionLimit = IfNullDefault("Searcharoo_RecursionLimit", 200);
  30.             _UserAgent =  IfNullDefault("Searcharoo_UserAgent", "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Searcharoo.NET; robot)");
  31.             _RobotUserAgent = IfNullDefault("Searcharoo_RobotUserAgent", "Searcharoo");
  32.             _RequestTimeout = IfNullDefault("Searcharoo_RequestTimeout", 5);
  33.             _IgnoreRegionTagNoIndex = IfNullDefault("Searcharoo_IgnoreRegionTagNoIndex", "");
  34.             _SummaryCharacters  = IfNullDefault("Searcharoo_SummaryChars", 350);
  35.             _DownloadedTempFilePath = IfNullDefault("Searcharoo_TempFilepath", "");
  36.             _InMediumTrust = IfNullDefault("Searcharoo_InMediumTrust", true);
  37.             _ProxyUrl = IfNullDefault("Searcharoo_ProxyUrl", "");
  38.             _DefaultDocument = IfNullDefault("Searcharoo_DefaultDocument", ""); //[v7]
  39.         }
  40.         /// <summary>
  41.         /// Seconds to wait for a page to respond, before giving up. 
  42.         /// Default: 5 seconds
  43.         /// </summary>
  44.         public static int RequestTimeout
  45.         {
  46.             get
  47.             {
  48.                 return _RequestTimeout; // IfNullDefault("Searcharoo_RequestTimeout", 5);
  49.             }
  50.         }
  51.         /// <summary>
  52.         /// First page to search - should have LOTS of links to follow
  53.         /// Default: http://localhost/
  54.         /// </summary>
  55.         public static string StartPage
  56.         {
  57.             get
  58.             {
  59.                 return IfNullDefault("Searcharoo_VirtualRoot", @"http://localhost/");
  60.             }
  61.         }
  62.         /// <summary>
  63.         /// Limit to the number of 'levels' of links to follow
  64.         /// Default: 200 
  65.         /// </summary>
  66.         public static int RecursionLimit
  67.         {
  68.             get
  69.             {
  70.                 return _RecursionLimit; // IfNullDefault("Searcharoo_RecursionLimit", 200);
  71.             }
  72.         }
  73.         /// <summary>
  74.         /// Request another page after waiting x seconds; use zero ONLY on your own/internal sites
  75.         /// Default: 1 
  76.         /// </summary>
  77.         [Obsolete("Not currently used")]
  78.         public static int SpeedLimit
  79.         {
  80.             get
  81.             {
  82.                 return IfNullDefault("Searcharoo_SpeedLimit", 1);
  83.             }
  84.         }
  85.         /// <summary>
  86.         /// Whether to use stemming (English only), and if so, what mode [ Off | StemOnly | StemAndOriginal ]
  87.         /// Default: Off
  88.         /// </summary>
  89.         public static int StemmingMode
  90.         {
  91.             get
  92.             {
  93.                 return IfNullDefault("Searcharoo_StemmingType", 0);
  94.             }
  95.         }
  96.         /// <summary>
  97.         /// Whether to use stemming (English only), and if so, what mode [ Off | Short | List ]
  98.         /// Default: Off
  99.         /// </summary>
  100.         public static int StoppingMode
  101.         {
  102.             get
  103.             {
  104.                 return IfNullDefault("Searcharoo_StoppingType", 0);
  105.             }
  106.         }
  107.         /// <summary>
  108.         /// Whether to use go words (English only), and if so, what mode [ Off | On ]
  109.         /// Default: Off
  110.         /// </summary>
  111.         public static int GoWordMode
  112.         {
  113.             get
  114.             {
  115.                 return IfNullDefault("Searcharoo_GoType", 0);
  116.             }
  117.         }
  118.         /// <summary>
  119.         /// Number of characters to include in 'file summary'
  120.         /// Default: 350
  121.         /// </summary>
  122.         public static int SummaryCharacters
  123.         {
  124.             get
  125.             {
  126.                 return _SummaryCharacters; // IfNullDefault("Searcharoo_SummaryChars", 350);
  127.             }
  128.         }
  129.         /// <summary>
  130.         /// User Agent sent with page requests, in case you wish to change it
  131.         /// Default: Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Searcharoo.NET; robot)
  132.         /// </summary>
  133.         public static string UserAgent
  134.         {
  135.             get
  136.             {
  137.                 return _UserAgent; // IfNullDefault("Searcharoo_UserAgent", "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Searcharoo.NET; robot)");
  138.             }
  139.         }
  140.         /// <summary>
  141.         /// User Agent detected by robots
  142.         /// Default: Searcharoo
  143.         /// </summary>
  144.         public static string RobotUserAgent
  145.         {
  146.             get
  147.             {
  148.                 return _RobotUserAgent; // IfNullDefault("Searcharoo_RobotUserAgent", "Searcharoo");
  149.             }
  150.         }
  151.         /// <summary>
  152.         /// Application[] cache key where the Catalog is stored, in case you need to alter it
  153.         /// Default: Searcharoo_Catalog
  154.         /// </summary>
  155.         public static string CatalogCacheKey
  156.         {
  157.             get
  158.             {
  159.                 return IfNullDefault("Searcharoo_CacheKey", "Searcharoo_Catalog");
  160.             }
  161.         }
  162.         /// <summary>
  163.         /// Name of file where the Catalog object is serialized (.dat and .xml)
  164.         /// Default: searcharoo
  165.         /// </summary>
  166.         public static string CatalogFileName
  167.         {
  168.             get
  169.             {   //TODO: remove HttpContext dependency!
  170.                 string location = IfNullDefault("Searcharoo_CatalogFilepath", "");
  171.                 if (location == "")
  172.                 {
  173.                     location = System.Web.HttpContext.Current.Server.MapPath("~/");
  174.                 }
  175.                 location = location + IfNullDefault("Searcharoo_CatalogFilename", "searcharoo");
  176.                 return location;
  177.             }
  178.         }
  179.         /// <summary>
  180.         /// Location to save files that must be downloaded to disk before indexing 
  181.         /// (eg IFilter docs like Word, PDF, Powerpoint)
  182.         /// Default: "C:temp"
  183.         /// </summary>
  184.         public static string DownloadedTempFilePath
  185.         {
  186.             get
  187.             {   //TODO: remove HttpContext dependency!
  188.                 string location = _DownloadedTempFilePath; // IfNullDefault("Searcharoo_TempFilepath", "");
  189.                 if (location == "")
  190.                 {
  191.                     if (null == System.Web.HttpContext.Current)
  192.                     {
  193.                         location = @"C:Temp";
  194.                     }
  195.                     else
  196.                     { 
  197.                         location = System.Web.HttpContext.Current.Server.MapPath("~/Temp/"); 
  198.                     }
  199.                 }
  200.                 return location;
  201.             }
  202.         }
  203.         /// <summary>
  204.         /// Number of result links to include per page
  205.         /// Default: 10
  206.         /// </summary>
  207.         public static int ResultsPerPage
  208.         {
  209.             get
  210.             {
  211.                 return IfNullDefault("Searcharoo_DefaultResultsPerPage", 10);
  212.             }
  213.         }
  214.         /// <summary>
  215.         /// Language to use when none is supplied (or supplied language is not available)
  216.         /// Default: en-US
  217.         /// </summary>
  218.         public static string DefaultLanguage
  219.         {
  220.             get
  221.             {
  222.                 return IfNullDefault("Searcharoo_DefaultLanguage", "en-US");
  223.             }
  224.         }
  225.         /// <summary>
  226.         /// Whether to create the Xml Serialized Catalog (for debugging purposes).
  227.         /// The filesize tends to be quite large (DOUBLE the source data size) so
  228.         /// it is FALSE by default.
  229.         /// Default: false
  230.         /// </summary>
  231.         public static bool DebugSerializeXml
  232.         {
  233.             get
  234.             {
  235.                 return IfNullDefault("Searcharoo_DebugSerializeXml", false);
  236.             }
  237.         }
  238.         /// <summary>
  239.         /// Whether to create the Xml Serialized Catalog (for debugging purposes).
  240.         /// The filesize tends to be quite large (DOUBLE the source data size) so
  241.         /// it is FALSE by default.
  242.         /// Default: false
  243.         /// </summary>
  244.         public static string QuerystringParameterName
  245.         {
  246.             get
  247.             {
  248.                 return IfNullDefault("Searcharoo_QuerystringParameter", "searchfor");
  249.             }
  250.         }
  251.         /// <summary>
  252.         /// Tagname to extract from html documents before parsing (to 'ignore' menus, for example)
  253.         /// </summary>
  254.         public static string IgnoreRegionTagNoIndex
  255.         {
  256.             get
  257.             {
  258.                 return _IgnoreRegionTagNoIndex; // IfNullDefault("Searcharoo_IgnoreRegionTagNoIndex", "");
  259.             }
  260.         }
  261.         /// <summary>
  262.         /// Whether to ignore sections of HTML wrapped in a special comment tag
  263.         /// </summary>
  264.         public static bool IgnoreRegions
  265.         {
  266.             get { return IgnoreRegionTagNoIndex.Length > 0;  }
  267.         }
  268.         /// <summary>
  269.         /// Controls how agressively the parser strips punctuation from a word before indexing it
  270.         /// </summary>
  271.         public static bool AssumeAllWordsAreEnglish
  272.         {
  273.             get { return _AssumeAllWordsAreEnglish; }
  274.         }
  275.         /// <summary>
  276.         /// Whether the application is running in medium-trust (and requires Xml rather than Binary serialization)
  277.         /// Default: true
  278.         /// </summary>
  279.         public static bool InMediumTrust
  280.         {
  281.             get
  282.             {
  283.                 return _InMediumTrust; // IfNullDefault("Searcharoo_RequestTimeout", 5);
  284.             }
  285.         }
  286.         /// <summary>
  287.         /// Whether a proxy server has been specified [v6]
  288.         /// </summary>
  289.         public static bool UseProxy
  290.         {
  291.             get {
  292.                 return (_ProxyUrl != "");
  293.             }
  294.         }
  295.         /// <summary>
  296.         /// eg. http://proxy:80/ [v6]
  297.         /// </summary>
  298.         public static string ProxyUrl
  299.         {
  300.             get {
  301.                 return _ProxyUrl;
  302.             }
  303.         }
  304.         /// <summary>
  305.         /// Whether to treat a 'directory root' as a call for the default document.
  306.         /// Eg. /Documents/ is treated as the same url as /Documents/default.aspx
  307.         /// </summary>
  308.         public static bool UseDefaultDocument
  309.         {
  310.             get
  311.             {
  312.                 return (_DefaultDocument != "");
  313.             }
  314.         }
  315.         /// <summary>
  316.         /// eg. default.aspx [v7]
  317.         /// </summary>
  318.         public static string DefaultDocument
  319.         {
  320.             get
  321.             {
  322.                 return _DefaultDocument.ToLower();
  323.             }
  324.         }
  325.         #region Private Methods: IfNullDefault
  326.         private static int IfNullDefault(string appSetting, int defaultValue)
  327.         {
  328.             return System.Configuration.ConfigurationManager.AppSettings[appSetting] == null ? defaultValue : Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings[appSetting]);
  329.         }
  330.         private static string IfNullDefault(string appSetting, string defaultValue)
  331.         {
  332.             return System.Configuration.ConfigurationManager.AppSettings[appSetting] == null ? defaultValue : System.Configuration.ConfigurationManager.AppSettings[appSetting];
  333.         }
  334.         private static bool IfNullDefault(string appSetting, bool defaultValue)
  335.         {
  336.             return System.Configuration.ConfigurationManager.AppSettings[appSetting] == null ? defaultValue : Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings[appSetting]);
  337.         }
  338.         #endregion
  339.     }  // Preferences class
  340. }