home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- #include "cxstubs.h"
-
- /////////////////////////////////////////////////////////////////////////////
- // CNetworkCX command target
-
- class CNetworkCX : public CCmdTarget, public CStubsCX
- {
- DECLARE_DYNCREATE(CNetworkCX)
- protected:
- CNetworkCX(); // protected constructor used by dynamic creation
-
- // Attributes
- private:
- URL_Struct *m_pUrlData; // The url to load.
- BOOL m_bStreamComplete; // Wether or not the load is completed.
-
- BOOL m_bShowAllNews; // Wether or not to show all news articles.
- BOOL m_bFancyNews; // Wether or not to use Fancy News.
- BOOL m_bFancyFTP; // Wether or not to use Fancy FTP.
- CString m_csUsername; // The registered user name.
- CString m_csPassword; // The registered password.
-
- enum {
- m_OK = 0x0000, // Data is loaded ok
- m_USER = 0x0001, // User name requested, may have still loaded if supplied
- m_PASS = 0x0002, // User password requested, may have still loaded if supplied
- m_BUSY = 0x0100, // Busy, try back later
- m_SRVR = 0x0200, // Server reported an irregular status, probably an error.
- m_INTL = 0x0400, // Internal loading error, never got to server.
- m_ERRS = 0x0800 // A helpful error string is available provided by Netscape.
- };
- long m_lFlags; // Some status flags, to mark what happened, to help caller figure out what went wrong.
- CString m_csErrorMessage;
-
- // Read buffers to store data as it comes in.
- private:
- CPtrList m_cplBuffers;
-
- public:
- char *AllocUsername();
- char *AllocPassword();
- void SetPasswordRequested() {
- m_lFlags |= m_PASS;
- }
- void SetUsernameRequested() {
- m_lFlags |= m_USER;
- }
-
- // Operations
- public:
- int StreamWrite(const char *pWriteData, int32 lLength);
- void StreamComplete();
- void StreamAbort(int iStatus);
- unsigned int StreamReady();
-
- // Context overrides
- public:
- virtual void Alert(MWContext *pContext, const char *pMessage);
- virtual XP_Bool Confirm(MWContext *pContext, const char *pConfirmMessage);
- virtual char *Prompt(MWContext *pContext, const char *pPrompt, const char *pDefault);
- virtual char *PromptPassword(MWContext *pContext, const char *pMessage);
- virtual XP_Bool PromptUsernameAndPassword(MWContext *pContext, const char *pMessage, char **ppUsername, char **ppPassword);
- virtual XP_Bool ShowAllNewsArticles(MWContext *pContext);
- virtual XP_Bool UseFancyFTP(MWContext *pContext);
- virtual XP_Bool UseFancyNewsgroupListing(MWContext *pContext);
-
- virtual void GetUrlExitRoutine(URL_Struct *pUrl, int iStatus, MWContext *pContext);
-
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CNetworkCX)
- public:
- virtual void OnFinalRelease();
- //}}AFX_VIRTUAL
-
- // Implementation
- protected:
- virtual ~CNetworkCX();
-
- // Generated message map functions
- //{{AFX_MSG(CNetworkCX)
- // NOTE - the ClassWizard will add and remove member functions here.
- //}}AFX_MSG
-
- DECLARE_MESSAGE_MAP()
- DECLARE_OLECREATE(CNetworkCX)
-
- // Generated OLE dispatch map functions
- //{{AFX_DISPATCH(CNetworkCX)
- afx_msg BSTR GetUsername();
- afx_msg void SetUsername(LPCTSTR lpszNewValue);
- afx_msg BSTR GetPassword();
- afx_msg void SetPassword(LPCTSTR lpszNewValue);
- afx_msg BOOL GetFlagShowAllNews();
- afx_msg void SetFlagShowAllNews(BOOL bNewValue);
- afx_msg BOOL GetFlagFancyFTP();
- afx_msg void SetFlagFancyFTP(BOOL bNewValue);
- afx_msg BOOL GetFlagFancyNews();
- afx_msg void SetFlagFancyNews(BOOL bNewValue);
- afx_msg void Close();
- afx_msg short Read(BSTR FAR* pBuffer, short iAmount);
- afx_msg long GetStatus();
- afx_msg BOOL Open(LPCTSTR pURL, short iMethod, LPCTSTR pPostData, long lPostDataSize, LPCTSTR pPostHeaders);
- afx_msg BSTR GetErrorMessage();
- afx_msg short GetServerStatus();
- afx_msg long GetContentLength();
- afx_msg BSTR GetContentType();
- afx_msg BSTR GetContentEncoding();
- afx_msg BSTR GetExpires();
- afx_msg BSTR GetLastModified();
- afx_msg BSTR Resolve(LPCTSTR pBase, LPCTSTR pRelative);
- afx_msg BOOL IsFinished();
- afx_msg short BytesReady();
- //}}AFX_DISPATCH
- DECLARE_DISPATCH_MAP()
- };
-
- /////////////////////////////////////////////////////////////////////////////
- // Miscellaneous Functions
- extern "C" {
- NET_StreamClass *nfe_OleStream(int iFormatOut, void *pDataObj, URL_Struct *pUrlData, MWContext *pContext);
- int nfe_StreamWrite(NET_StreamClass *stream, const char *pWriteData, int32 lLength);
- void nfe_StreamComplete(NET_StreamClass *stream);
- void nfe_StreamAbort(NET_StreamClass *stream, int iStatus);
- unsigned int nfe_StreamReady(NET_StreamClass *stream);
- };
-
-
- // Max amount of data to store in each CNetBuffer.
- #define NETBUFSIZE (30 * 1024)
-
- // Structure to store read data.
- struct CNetBuffer {
- int m_iHead;
- int m_iSize;
- char *m_pData;
-
- CNetBuffer(int iSize) {
- ASSERT(iSize);
- m_iHead = 0;
- m_iSize = iSize;
- m_pData = new char[iSize];
- }
- ~CNetBuffer() {
- if(m_pData) {
- delete m_pData;
- }
- }
- };
-
- /////////////////////////////////////////////////////////////////////////////
-