#ifndef __MyuRssWriter_H__
#define __MyuRssWriter_H__

#include <msl.h>
#include "MyuXmlElement.h"

#define MYU_RSS_WRITER_VERSION_1_0		(10);
#define MYU_RSS_WRITER_VERSION_2_0		(20);


//	channel情報構造体
typedef struct
{
	string strLanguage;
	string strCopyright;
	string strManagingEditor;
	string strWebMaster;
	string strPubDate;
	string strLastBuildDate;
	string strCategory;
	string strGenerator;
	string strDocs;

/*cloud RSS フィード用のライトウェイトな配信予約プロトコルを使って、チャンネルへ更新を通知してもらうために、cloud に登録することができます。詳細情報はこちらをご覧下さい。 <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/> 
ttl ttl は、time to live （有効期間）の略語です。それは、ソースからリフレッシュする前に、どれだけの期間、チャンネルをキャッシュすることができるかを指し示す分数です。詳細情報はこちらをご覧下さい。 <ttl>60</ttl> 
image チャンネルと一緒に表示可能な GIF, JPEG, PNG 画像を指定します。詳細情報はこちらをご覧下さい。  
rating チャンネルの PICS レーティングです。  
textInput チャンネルと一緒に表示表示可能なテキスト入力ボックスを指定します。詳細情報はこちらをご覧下さい。  
skipHours アグリゲータは何時にスキップすることができるかを伝える暗示です。詳細情報はこちらをご覧下さい。  
skipDays アグリゲータは何曜日をスキップすることができるかを伝える暗示です。詳細情報はこちらをご覧下さい。 
*/
}
MYURSS20_CHANNEL_INFO;

//	item情報構造体
typedef struct
{
	string strAuthor;
	string strCategory;
	string strComments;
	string strEnclosure;
	string strGuid;
	string strPubDate;
	string strSource;
}
MYURSS20_ITEM_INFO;



//	クラス宣言
class CMyuRss20Writer
{
private:
	//int m_nRssVersion;
	CMyuXmlElement m_xmlElem;
	CMyuXmlElement* m_pElemChannel;
	string m_strEncode;

	//	内部メソッド
	void AddChannelInfo( const char* title, const char* value ){
		CMyuXmlElement elem;
		elem.SetElementName(title);
		elem.SetData(value);
		m_pElemChannel->AddChild(elem);
	}
	void AddItemInfo( CMyuXmlElement* pParentElem, const char* title, const char* value ){
		if ( value == NULL )
			return;
		CMyuXmlElement elem;
		elem.SetElementName(title);
		elem.SetData(value);
		pParentElem->AddChild(elem);
	}
	void AddChannelInfo_Auto( const char* title, string &strValue ){
		if ( strValue != "" )
			AddChannelInfo(title, strValue.c_str() );
	}
	void AddItemInfo_Auto( CMyuXmlElement* pParentElem, const char* title, string strValue ){
		if ( strValue != "" )
			AddItemInfo(pParentElem, title, strValue.c_str() );
	}

public:
	//	コンストラクタ・デストラクタ
	CMyuRss20Writer(){ /*SetRssVer20();*/ Clear(); }
	virtual ~CMyuRss20Writer(){}
	void Clear();

	//	設定・追加等
	void SetXmlEncode( const char* szEncode ){ m_strEncode=szEncode; }
	void SetChannelInfo( const char* szTitle, const char* szLink, const char* szDescription,
		MYURSS20_CHANNEL_INFO* pInfo=NULL );
	/*void SetChannelInfo( const char* szTitle, const char* szLink, const char* szDescription,
		const char* szLanguage=NULL, const char* szCopyright=NULL, const char* szManagingEditor=NULL,
		const char* szWebMaster=NULL, const char* szPubDate=NULL, const char* szLastBuildDate=NULL,
		const char* szCategory=NULL, const char* szGenerator=NULL, const char* szDocs=NULL );*/
/*
cloud RSS フィード用のライトウェイトな配信予約プロトコルを使って、チャンネルへ更新を通知してもらうために、cloud に登録することができます。詳細情報はこちらをご覧下さい。 <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/> 
ttl ttl は、time to live （有効期間）の略語です。それは、ソースからリフレッシュする前に、どれだけの期間、チャンネルをキャッシュすることができるかを指し示す分数です。詳細情報はこちらをご覧下さい。 <ttl>60</ttl> 
image チャンネルと一緒に表示可能な GIF, JPEG, PNG 画像を指定します。詳細情報はこちらをご覧下さい。  
rating チャンネルの PICS レーティングです。  
textInput チャンネルと一緒に表示表示可能なテキスト入力ボックスを指定します。詳細情報はこちらをご覧下さい。  
skipHours アグリゲータは何時にスキップすることができるかを伝える暗示です。詳細情報はこちらをご覧下さい。  
skipDays アグリゲータは何曜日をスキップすることができるかを伝える暗示です。詳細情報はこちらをご覧下さい。 

	http://www.futomi.com/lecture/japanese/rss20.html
*/

	void AddItem( const char* szTitle, const char* szLink, const char* szDescription,
		MYURSS20_ITEM_INFO* pInfo=NULL );
	/*void AddItem( const char* szTitle, const char* szLink, const char* szDescription,
		const char* szAuthor=NULL, const char* szCategory=NULL, const char* szComments=NULL,
		const char* szEnclosure=NULL, const char* szGuid=NULL, const char* szPubDate=NULL,
		const char* szSource=NULL );*/

	//	出力
	bool Write( const char* szFileName );

/*	//	出力RSSのバージョンを設定
	void SetRssVer10(){ m_nRssVersion=MYU_RSS_WRITER_VERSION_1_0; }
	void SetRssVer20(){ m_nRssVersion=MYU_RSS_WRITER_VERSION_2_0; }*/
};

#endif//__MyuRssWriter_H__
