#pragma once

#include "Config.h"

/*!
	class CAlias

	パスの解析と情報の保持を行うクラス
*/
class CAlias
{
public:
	CAlias();
	CAlias(CString url,CString targetHost,CConfigAccess serverSetting);
	virtual ~CAlias(void);

	CConfigAccess GetPathInfo();				//	パス情報の取得
	CConfigAccess GetPathOptions();				//	パス情報のOptions取得
	CString GetTarget();						//	ターゲットを取得
	CString GetTargetHost();					//	ホストを取得
	CString GetMoveTo();						//	移動先を取得

	CString GetExtraTarget();					//	ターゲットを取得
	CString GetExtraPath();						//	エクストラパスを取得

	int IsMove();								//	移動の必要があるか取得
	int IsDirectory();							//	ディレクトリ？
	int IsExist();								//	存在するの？
	int IsHidden();								//	隠しファイル？
	int	IsExtarExist();							//	エクストラパスがあるのか？
	int CheckIndexFile();						//	インデックスファイルは？

	//	CGI用
	int CheckExtraPath();						//	エキストラパスを調べる

private:
	CConfigAccess FindPathInfo(CString url,CString targetHost);					//	パス情報検索
	void FindTarget(CString url);												//	ローカルパスに変換
	void FindVirtualHost(CString targetHost,CStringArray &nodeList);			//	バーチャルホスト検索
	void FindPath(CString url,CStringArray &allNode,CStringArray &nodeList);	//	一致するパスを検索

private:
	CConfigAccess	m_serverSetting;	//	サーバ設定
	CConfigAccess	m_pathSetting;		//	パス設定
	CConfigAccess	m_indexSetting;		//	インデックス設定
	CConfigAccess	m_pathInfo;			//	パス情報

	CString			m_url;				//	URL
	CString			m_target;			//	ターゲット
	CString			m_extraTarget;		//	エクストラパス ターゲット
	CString			m_extraPath;		//	エクストラパス
	CString			m_moveTo;			//	移動先
	CString			m_targetHost;
	int				m_isMove;			//	移動する必要があり
	int				m_isDirectory;		//	ディレクトリ？
};
