/*
 * carot.h : ここうさぎウィザード carot
 *      アプリケーション メイン ヘッダーファイル
 *          written by H.Tsujimura  15 Oct 2004
 *
 * $Log: /makeRSS/carot/carot.h $
 * 
 * 22    07/11/30 2:43 Tsujimura543
 * Jugem 向け専用処理、変数を削除、廃止
 * 
 * 21    07/10/17 23:48 Tsujimura543
 * ダミーのコピーコンストラクタ、代入演算子を private として導入。
 * 知らないうちにメモリ確保(と解放し忘れ)が発生する可能性を排除。
 * 
 * 20    07/10/17 23:14 Tsujimura543
 * コメントを整理
 * 
 * 19    07/10/17 23:11 Tsujimura543
 * バージョン管理用コメントを入れるようにする
 */

#if !defined(AFX_CAROT_H__48DF4978_2DA3_408E_B487_AF68C87D0A07__INCLUDED_)
#define AFX_CAROT_H__48DF4978_2DA3_408E_B487_AF68C87D0A07__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define VC_EXTRALEAN

#include <afxwin.h>
#include <afxext.h>
#include <afxdtctl.h>
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>
#endif // _AFX_NO_AFXCMN_SUPPORT

#ifdef __cplusplus
extern "C" {
#endif
#include "xmlRPC.h"
#include "atomAPI.h"
#ifdef __cplusplus
}
#endif

#include "resource.h"		// メイン シンボル

/////////////////////////////////////////////////////////////////////////////
// CCarotApp    アプリケーションメイン

#define MAX_NUM_OF_BLOGPETS 32
#define MAX_NUM_OF_BLOGS    48
#define MAX_CATS    32  /* 同一blog内カテゴリ最大数 (暫定値) */
#define MAX_TMPLS   128 /* テンプレート最大数 (暫定値) for ウェブリブログ */

class CCarotApp : public CWinApp
{
public:
	CCarotApp();

    volatile enum proxyType {
        autoDetect,     // proxy 使用状況自動取得 (default)
        manualSetting,  // proxy 使用状況手動設定、設定ファイルから取得
        specialSetting, // proxy 使用状況手動設定(ユーザ自身によって設定済み)
        notUsed         // proxy は使用しない    (ユーザ自身によって設定済み)
    }           m_proxyType;    // proxy 使用状況取得方法
    bool        m_useProxy;     /* proxy を使うか否か */
	CString	    m_proxyServerName;
	DWORD	    m_proxyPortNumber;
	CString	    m_proxyUserName;
	CString	    m_proxyPassword;

    long        m_numOfBlogPets;             /* 飼っている BlogPet の数     */
    struct blogPetList  {                    /* 飼っている BlogPet のリスト */
        int     blogPetType;                   /*  BlogPet種別              */
        char    blogPetID[MAX_NAMELEN + 1];    /*  BlogPet ID               */
        char    blogPetName[MAX_NAMELEN];      /*  ペットの名前             */
        char    blogPetUsername[MAX_NAMELEN];  /*  BlogPetサーバ ユーザ名   */
        char    blogPetPassword[MAX_PASSWDLEN];/*  BlogPetサーバ パスワード */
    }   *m_blogPetList;

    long        m_numOfBlogs;                /* 投稿対象の Blog の数        */
    struct blogList {                        /* 投稿対象の Blog のリスト    */
        int     blogKind;                      /*  blog 種別                */
        char    blogName[MAX_BLOGNAMELENGTH];  /*  blog の名前              */
        char    blogUsername[MAX_NAMELEN];     /*  blog ログインユーザ名    */
        char    blogPassword[MAX_PASSWDLEN + 1];/* blog ログインパスワード  */
        char    blogID[MAX_BLOGIDLENGTH + 1];  /*  blog ID                  */
        char    blogURL[MAX_URLLENGTH];        /*  blog トップページ URL    */
        char    endpointURL[MAX_URLLENGTH];    /*  エンドポイントURL        */
        bool    useCbox;                       /*  for “Blog Pet 飼育箱”  */
        long    numOfCategories;               /*  カテゴリーの数           */
        char    **catagory;                    /*  カテゴリーのリスト       */
    }   *m_blogList;

// オーバーライド
	//{{AFX_VIRTUAL(CCarotApp)
	public:
	virtual BOOL InitInstance();
	virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
	//}}AFX_VIRTUAL

// インプリメンテーション
    int     LoginBlogPet(
                    const char *userName,  // (I)   ユーザ名
                    const char *password,  // (I)   パスワード
                    char       *request,   // (I/O) httpリクエスト本体格納領域
                    char       *response,  // (I/O) httpレスポンス本体格納領域
                    char       *cookie,    // (I/O) クッキー
                    char       *userID     // (O)   ユーザID
                );
    void    LogoutBlogPet(
                    char *request,  // (I/O) httpリクエスト本体格納領域
                    char *response, // (I/O) httpレスポンス本体格納領域
                    char *cookie    // (I/O) クッキー
                );
    void    GetBlogPetID( const char *username,
                          const char *password,
                          char *blogPetID );
    void    MakeProxyText( const char *dirname = NULL );

	//{{AFX_MSG(CCarotApp)
	afx_msg void OnAppAbout();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

private:
    CCarotApp( CCarotApp &dlg );
    CCarotApp   operator = ( CCarotApp &dlg );
};

int confirmProxyInfo( int            *useProxy,
                      char           *proxyServer,
                      unsigned short *proxyPort,
                      char           *proxyUserName,
                      char           *proxyPassword );

void    initProxyInfo();
bool    checkProxyInfo();

#define syncProxyInfo   initProxyInfo

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

#endif // !defined(AFX_CAROT_H__48DF4978_2DA3_408E_B487_AF68C87D0A07__INCLUDED_)
