1999-03-22 23:46:37 +00:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
|
|
*
|
1999-11-06 02:47:15 +00:00
|
|
|
* The contents of this file are subject to the Netscape Public
|
|
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of
|
|
|
|
* the License at http://www.mozilla.org/NPL/
|
1999-03-22 23:46:37 +00:00
|
|
|
*
|
1999-11-06 02:47:15 +00:00
|
|
|
* Software distributed under the License is distributed on an "AS
|
|
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
|
|
* implied. See the License for the specific language governing
|
|
|
|
* rights and limitations under the License.
|
1999-03-22 23:46:37 +00:00
|
|
|
*
|
1999-11-06 02:47:15 +00:00
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape
|
1999-03-22 23:46:37 +00:00
|
|
|
* Communications Corporation. Portions created by Netscape are
|
1999-11-06 02:47:15 +00:00
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
* Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
1999-03-22 23:46:37 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _nsICoolURL_h_
|
|
|
|
#define _nsICoolURL_h_
|
|
|
|
|
|
|
|
/*
|
|
|
|
The nsICoolURL class is an interface to the URL behaviour.
|
|
|
|
This follows the URL spec at-
|
|
|
|
|
|
|
|
http://www.w3.org/Addressing/URL/url-spec.txt
|
|
|
|
|
|
|
|
For the purpose of this class, here is the most elaborate form of a URL
|
|
|
|
and its corresponding parts-
|
|
|
|
|
|
|
|
ftp://username:password@hostname:portnumber/pathname
|
|
|
|
\ / \ / \ / \ /\ /
|
|
|
|
- --------------- ------ -------- -------
|
|
|
|
| | | | |
|
|
|
|
| | | | Path
|
|
|
|
| | | Port
|
|
|
|
| | Host
|
|
|
|
| PreHost
|
|
|
|
Scheme
|
|
|
|
|
|
|
|
The URL class extends the URI behaviour by providing a mechanism
|
|
|
|
for consumers to retreive (and on protocol specific levels put)
|
|
|
|
documents defined by the URI.
|
|
|
|
|
|
|
|
Functions missing from this file are the stream listener portions
|
|
|
|
for asynch operations. TODO.
|
|
|
|
|
|
|
|
Please send me a mail before you add anything to this file.
|
|
|
|
Thanks!- Gagan Saksena
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "nsIURI.h"
|
|
|
|
#include "nsIInputStream.h"
|
|
|
|
#include "nsIProtocolInstance.h"
|
|
|
|
|
|
|
|
class nsICoolURL : public nsIURI
|
|
|
|
{
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
//Core action functions
|
|
|
|
/*
|
|
|
|
Note: The GetStream function also opens a connection using
|
|
|
|
the available information in the URL. This is the same as
|
|
|
|
calling OpenInputStream on the connection returned from
|
|
|
|
OpenProtocolInstance. Note that this stream doesn't contain any
|
|
|
|
header information either.
|
|
|
|
*/
|
|
|
|
NS_IMETHOD GetStream(nsIInputStream* *o_InputStream) = 0;
|
|
|
|
|
|
|
|
#if 0 //Will go away...
|
|
|
|
/*
|
|
|
|
The GetDocument function BLOCKS till the data is made available
|
|
|
|
or an error condition is encountered. The return type is the overall
|
|
|
|
success status which depends on the protocol implementation.
|
|
|
|
Its just a convenience function that internally sets up a temp
|
|
|
|
stream in memory and buffers everything. Note that this
|
|
|
|
mechanism strips off the headers and only the raw data is
|
|
|
|
copied to the passed string.
|
|
|
|
|
|
|
|
TODO - return status?
|
|
|
|
*/
|
|
|
|
NS_IMETHOD GetDocument(const char* *o_Data) = 0;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
The OpenProtocolInstance method sets up the connection as decided by the
|
|
|
|
protocol implementation. This may then be used to get various
|
|
|
|
connection specific details like the input and the output streams
|
|
|
|
associated with the connection, or the header information by querying
|
|
|
|
on the connection type which will be protocol specific.
|
|
|
|
*/
|
|
|
|
NS_IMETHOD OpenProtocolInstance(nsIProtocolInstance* *o_ProtocolInstance) = 0;
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
NS_IMETHOD DebugString(const char* *o_URLString) const=0;
|
|
|
|
#endif //DEBUG
|
|
|
|
|
|
|
|
static const nsIID& GetIID() {
|
|
|
|
// {6DA32F00-BD64-11d2-B00F-006097BFC036}
|
|
|
|
static const nsIID NS_ICOOLURL_IID =
|
|
|
|
{ 0x6da32f00, 0xbd64, 0x11d2, { 0xb0, 0xf, 0x0, 0x60, 0x97, 0xbf, 0xc0, 0x36 } };
|
|
|
|
return NS_ICOOLURL_IID;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
// Should change to NS_METHOD CreateURL(nsICoolURL* *o_URL, const char* i_URL)
|
|
|
|
// and be placed where?
|
|
|
|
extern NS_NET
|
|
|
|
nsICoolURL* CreateURL(const char* i_URL);
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* _nsICoolURL_h_ */
|