示例#1
0
// メソッド

		public void Load(HatomaruManager manager, XmlElement contentElement){
			string path = contentElement.GetAttribute(HatomaruReputation.UriAttributeName);
			Path = new AbsPath(path);
			Count = contentElement.GetAttributeInt(HatomaruReputation.CountAttributeName);
			Description = contentElement[HatomaruReputation.DescriptionElementName];

			Title = manager.GetResponseTitle(Path);

		}
示例#2
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo を指定して、HatomaruData のインスタンスを開始します。
		/// </summary>
		protected HatomaruData(HatomaruManager manager, FileInfo f){
			myManager = manager;
			myFile = f;
			myLastModified = myFile.LastWriteTime;
			if(Manager.IniData.ExtInfo.ContainsKey(f.Extension.ToLower())){
				myExt = Manager.IniData.ExtInfo[f.Extension.ToLower()];
			}
			myBasePath = GetTrueFilePath();
		}
示例#3
0
		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruBbs のインスタンスを開始します。
		/// </summary>
		public SpamRule(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
			myAsciionlyScore = GetWeight(AsciionlyScoreName);
			myNewpostScore = GetWeight(NewpostScoreName);
			myUrlScore = GetWeight(UrlScoreName);
			myEmailScore = GetWeight(EmailScoreName);
			
			foreach(XmlElement e in Document.GetElementsByTagName(WordElementName)){
				myNGWords.Add(new NGWord(e));
			}
			
		}
示例#4
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、Doc のインスタンスを開始します。
		/// </summary>
		public HatomaruDoc(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
			int index = 0;
			foreach(XmlElement e in x.GetElementsByTagName(TopicElement)){
				if(string.IsNullOrEmpty(e.GetAttributeValue(HatomaruDoc.PageIdAttribute))){
					DocTopic dt = new DocTopic(e, 0);
					myAnonymousTopics.Add(dt);
				} else {
					DocTopic dt = new DocTopic(e, ++index);
					myTopicsDic.Add(dt.Id, dt);
				}
			}
			myNamedTopics = new DocTopic[myTopicsDic.Values.Count];
			myTopicsDic.Values.CopyTo(myNamedTopics, 0);
		}
示例#5
0
// パブリックメソッド
		public void ProcessRequest(HttpContext context){

			if(myManager == null || myManager.IsOld){
				string iniFilePath = WebConfigurationManager.AppSettings[IniXmlPath];
				if(!File.Exists(iniFilePath)){
					throw new Exception("初期設定ファイルが見つかりません :" + iniFilePath);
				}
				myManager = new HatomaruManager(iniFilePath);
			}

			// robots.txt で 204 を返す
			if(context.Request.RawUrl.EndsWith("/robots.txt")){
				context.Response.StatusCode = 204;
				return;
			}

			// 処理開始
			myManager.Log.Clear();
			try{
				SendResponse(context);
			} catch(HatomaruXmlException e){
				string errorLog = GetError(e, context.Request);
				try{
					ThreadPool.QueueUserWorkItem(new WaitCallback(SaveLog), errorLog);
				} catch {
					// ログに保存できない例外はそのままスロー
					throw e;
				}
				SendServiceUnabailableResponse(context, errorLog);
			} catch(Exception e){
				string errorLog = GetError(e, context.Request);
				try{
					ThreadPool.QueueUserWorkItem(new WaitCallback(SaveLog), errorLog);
				} catch {
					// ログに保存できない例外はそのままスロー
					throw e;
				}
				SendInternalServerErrorResponse(context, errorLog);
			}
		}
示例#6
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruData のインスタンスを開始します。
		/// </summary>
		protected HatomaruXml(HatomaruManager manager, FileInfo f, XmlDocument doc) : base(manager, f){
			myDocument = doc; // ロード済み
			
			myMetaData = Document.DocumentElement[MetaName];
			if(myMetaData == null) return;
			
			XmlElement title = myMetaData[TitleName];
			if(title != null) myBaseTitle = title.InnerText;
			XmlElement desc = myMetaData[DescName];
			if(desc != null) myDescription = desc.InnerText;
			XmlElement keywords = myMetaData[KeywordName];
			if(keywords != null) myKeywords = keywords.InnerText;

			XmlElement topicSuffix = myMetaData[TopicSuffixName];
			if(topicSuffix != null) myTopicSuffix = topicSuffix.InnerText;

			XmlNodeList styles = myMetaData.GetElementsByTagName(StyleName);
			foreach(XmlNode x in styles){
				XmlElement e = x as XmlElement;
				if(x == null) continue;
				string linkHref = e.GetAttribute("href");
				string linkTitle = e.GetAttribute("title");
				linkHref = '/' + linkHref.TrimStart('/');
				LinkItem s = new LinkItem(linkHref, linkTitle);
				myStyles.Add(s);
			}

			// 親 XML を取得
			XmlNodeList indexes = myMetaData.GetElementsByTagName(IndexXmlName);
			if(indexes.Count > 0){
				string indexXmlName = Util.GetAttributeValue(indexes[0], IndexXmlRefAttrName);
				if(!string.IsNullOrEmpty(indexXmlName)) myParentXml = GetDataByPathString(indexXmlName);
			} else if(!manager.RootXmlFile.FullName.Equals(f.FullName)){
				myParentXml = manager.RootXml;
			}

		}
示例#7
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、Redirect のインスタンスを開始します。
		/// </summary>
		public HatomaruRedirect(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
		}
示例#8
0
		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruBbs のインスタンスを開始します。
		/// </summary>
		public YearDiary(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
			Load();
		}
示例#9
0
// コンストラクタ

		public AmazonManager(HatomaruManager manager){
			myManager = manager;
			Aws = new AmazonWebService(manager);
		}
示例#10
0
	// コンストラクタ
		public AmazonWebService(HatomaruManager manager){
			myManager = manager;
			myHelper = new AmazonProductAdvtApi.SignedRequestHelper(manager.IniData.AmazonWsAccessKeyId, manager.IniData.AmazonWsSecretKey, manager.IniData.AmazonServiceHostName);
		}
示例#11
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、インスタンスを開始します。
		/// </summary>
		public CacheViewer(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){}
示例#12
0
		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruBbs のインスタンスを開始します。
		/// </summary>
		public DiaryIndex(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
		}
		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruAccessCounter のインスタンスを開始します。
		/// </summary>
		public HatomaruAccessCounter(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){}
示例#14
0
		public ReputationContent(HatomaruManager manager, XmlElement contentElement){
			Load(manager, contentElement);
		}
示例#15
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruHtmlReference のインスタンスを開始します。
		/// </summary>
		public HatomaruHtmlRef(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
			InitTables();
			Load();
		}
示例#16
0
		private Dictionary<char, List<GlossaryWord>> myReadDic = new Dictionary<char, List<GlossaryWord>>(); // 読みの Dictionary


// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruBbs のインスタンスを開始します。
		/// </summary>
		public HatomaruGlossary(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
			myTable = new GlossaryTable();
			myReadTable = new GlossaryReadTable();
			Load();
		}
示例#17
0
// コンストラクタ

		/// <summary>
		/// HatomaruFile のインスタンスを開始します。
		/// </summary>
		public HatomaruFile(HatomaruManager manager, FileInfo f) : base(manager, f){
		}
示例#18
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、インスタンスを開始します。
		/// </summary>
		public AmazonSearch(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
		}
示例#19
0
// 静的メソッド

		// XMLデータを読み取り、HatomaruXml を生成します。
		public static HatomaruXml GetHatomaruXml(HatomaruManager manager, FileInfo f){
			try{
				XmlDocument x = new XmlDocument();
				x.XmlResolver = null;
				for(int i=0;;i++){
					try{
						x.Load(f.FullName);
						break;
					} catch(IOException e){
						System.Threading.Thread.Sleep(SaveRetryInterval);
						if(i > SaveRetryTime){
							throw new HatomaruXmlException("データのロードに失敗しました。", e);
						}
					}
				}
				if(x.DocumentElement == null) throw new HatomaruXmlException("XMLファイルが空か、ルート要素がありません。");
				string rootName = x.DocumentElement.Name;
				foreach(Type t in mySubTypes){
					string name = GetFieldValue(t, "Name");
					if(name.Eq(rootName)){
						ConstructorInfo ci = t.GetConstructor(new Type[]{typeof(HatomaruManager), typeof(FileInfo), typeof(XmlDocument)});
						if(ci == null) throw new Exception(name + "には適切なコンストラクタがありません。");
						Object o = ci.Invoke(new Object[]{manager, f, x});
						HatomaruXml result = o as HatomaruXml;
						return result;
					}
				}
				return new HatomaruDoc(manager, f, x);
			} catch(System.Data.ConstraintException e){
				throw new HatomaruXmlException("データのロードに失敗しました。", e);
			} catch(System.Xml.XmlException e){
				throw new HatomaruXmlException("XMLデータのパースに失敗しました。", e);
			}
		}
示例#20
0
		/// <summary>
		/// データソースの FileInfo と XmlDocument を指定して、Reputation のインスタンスを開始します。
		/// </summary>
		public HatomaruReputation(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
			Table = new ReputationTable(this);
		}
示例#21
0
// コンストラクタ

		/// <summary>
		/// 鳩丸データのデータソースの FileInfo と XmlDocument を指定して、HatomaruBbs のインスタンスを開始します。
		/// </summary>
		public HatomaruBbs(HatomaruManager manager, FileInfo f, XmlDocument x) : base(manager, f, x){
			myTable = new BbsTable(x);
		}