pjs/netwerk/base/public/nsIIOService.idl

182 строки
6.9 KiB
Plaintext
Исходник Обычный вид История

1999-06-08 01:33:30 +04:00
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* 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-06-08 01:33:30 +04: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-06-08 01:33:30 +04:00
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
1999-06-08 01:33:30 +04:00
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
1999-06-08 01:33:30 +04:00
*/
#include "nsISupports.idl"
interface nsIProtocolHandler;
interface nsIChannel;
1999-06-08 01:33:30 +04:00
interface nsIURI;
[scriptable, uuid(ab7c3a84-d488-11d3-8cda-0060b0fc14a3)]
1999-06-08 01:33:30 +04:00
interface nsIIOService : nsISupports
{
/**
* Returns a protocol handler for a given URI scheme.
*
* @param scheme URI scheme
* @return reference to nsIProtcolHandler
1999-06-08 01:33:30 +04:00
*/
nsIProtocolHandler getProtocolHandler(in string scheme);
1999-06-08 01:33:30 +04:00
/**
* This method constructs a new URI by first determining the scheme
* of the URI spec, and then delegating the construction of the URI
* to the protocol handler for that scheme. QueryInterface can be used
* on the resulting URI object to obtain a more specific type of URI.
*
* @param aSpec URI spec (http, ftp, etc)
* @param aBaseURI nsIURI to construct the actual URI from
* @return reference to a new nsIURI object
1999-06-08 01:33:30 +04:00
*/
nsIURI newURI(in string aSpec, in nsIURI aBaseURI);
1999-06-08 01:33:30 +04:00
/**
* Creates a channel for a given URI. The notificationCallbacks argument
* is used to obtain the appropriate callbacks for the URI's protocol from the
1999-06-08 01:33:30 +04:00
* application.
*
* @param originalURI - Specifies the original URI which caused the creation
* of this channel. This can occur when the construction of one channel
* (e.g. for resource:) causes another channel to be created on its behalf
* (e.g. a file: channel), or if a redirect occurs, causing the current
* URL to become different from the original URL. If NULL, the aURI parameter
* will be used as the originalURI instead.
*
* @param aURI - nsIURI to make a channel from
* @return a reference to the new nsIChannel object
1999-06-08 01:33:30 +04:00
*/
nsIChannel newChannelFromURI(in nsIURI aURI);
1999-06-08 01:33:30 +04:00
/**
* Convenience routine that first creates a URI by calling NewURI, and
* then passes the URI to NewChannelFromURI.
*
* @param originalURI - Specifies the original URI which caused the creation
* of this channel. This can occur when the construction of one channel
* (e.g. for resource:) causes another channel to be created on its behalf
* (e.g. a file: channel), or if a redirect occurs, causing the current
* URL to become different from the original URL. If NULL, the aURI parameter
* will be used as the originalURI instead.
*
* @param aSpec URI spec to select the appropriate protocol handler
* @param aBaseURI a base URI to create a channel to
* @return a reference to the new nsIChannel object
1999-06-08 01:33:30 +04:00
*/
nsIChannel newChannel(in string aSpec, in nsIURI aBaseURI);
1999-06-08 01:33:30 +04:00
/**
* Returns true if networking is in "offline" mode. When in offline mode, attempts
* to access the network will fail (although this is not necessarily corrolated with
* whether there is actually a network available -- that's hard to detect without
* causing the dialer to come up).
*/
attribute boolean offline;
/**
* Checks if a port number is banned.
*
* |allowPort| will check a list of "known-to-do-bad-things" port numbers. If the
* given port is found on the blacklist, |allowPort| will ask the protocol handler
* if it wishes to override. Scheme can be null.
*/
boolean allowPort(in long port, in string scheme);
////////////////////////////////////////////////////////////////////////////
// URL parsing utilities
/**
* Utility for protocol implementors -- extracts the scheme from a URL
* string, consistently and according to spec.
* @param urlString - the URL string to parse
* @param schemeStartPos - the resulting starting position of the scheme substring
* (may skip over whitespace)
* @param schemeEndPos - the resulting ending position of the scheme substring
* (the position of the colon)
* @param scheme - an allocated substring containing the scheme. If this parameter
* is null going into the routine, then the scheme is not allocated and
* returned. Free with nsCRT::free.
*
* @return NS_OK - if successful
* @return NS_ERROR_MALFORMED_URI - if the urlString is not of the right form
*/
void extractScheme(in string urlString,
out unsigned long schemeStartPos,
out unsigned long schemeEndPos,
out string scheme);
2000-01-05 05:44:23 +03:00
/**
* Constants for the mask in the call to Escape
*/
const short url_Scheme = (1<<0);
const short url_Username = (1<<1);
const short url_Password = (1<<2);
const short url_Host = (1<<3);
const short url_Directory = (1<<4);
const short url_FileBaseName = (1<<5);
const short url_FileExtension = (1<<6);
const short url_Param = (1<<7);
const short url_Query = (1<<8);
const short url_Ref = (1<<9);
const short url_Forced = (1<<10);
2000-01-05 05:44:23 +03:00
/**
* Encode characters into % escaped hexcodes.
*
* @param str a string to convert from
* @param mask a mask of flags to tell the converter which part of the url to escape
* @return escaped string
2000-01-05 05:44:23 +03:00
*/
string escape(in string str, in short mask);
/**
* Decode % escaped hex codes into character values.
*
* @param str a string to unescape from
* @return resulted unescaped string
*/
string unescape(in string str);
2000-01-25 00:28:28 +03:00
/**
* Get port from string.
*
* @param str URI-style string
* @return port number
*/
long extractPort(in string str);
/**
* Resolves a relative path string containing "." and ".."
* with respect to a base path (assumed to already be resolved).
* For example, resolving "../../foo/./bar/../baz.html" w.r.t.
* "/a/b/c/d/e/" yields "/a/b/c/foo/baz.html". Attempting to
* ascend above the base results in the NS_ERROR_MALFORMED_URI
* exception. If basePath is null, it treats it as "/".
*
* @param relativePath a relative URI
* @param basePath a base URI
* @return a new string, representing canonical uri
*/
string resolveRelativePath(in string relativePath,
in string basePath);
1999-06-08 01:33:30 +04:00
};