/* -*- 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/ * * 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. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ #include "nsIChannel.idl" interface nsIHTTPEventSink; interface nsIStreamListener; interface nsISimpleEnumerator; interface nsIAtom; interface nsIInputStream; interface nsIURI; [scriptable, uuid(35c00430-1938-11d3-933a-000064657374)] interface nsIHTTPChannel : nsIChannel { /** * More load attributes for http. */ const unsigned long BYPASS_CACHE = 1 << 1; const unsigned long BYPASS_PROXY = 1 << 2; /** * Referrer sending policy. */ const unsigned long REFERRER_NONE = 0; const unsigned long REFERRER_LINK_CLICK = 1; // http link clicks const unsigned long REFERRER_INLINES = 2; // images and other inlines. const unsigned long REFERRER_NON_HTTP = 3; // e.g. news clicks or FTP links. /* Request functions- These functions set/get parameters on the outbound request and may only be set before Load() function gets called. Calling them after the Load() method will result in a NS_ERROR_ALREADY_CONNECTED */ string GetRequestHeader(in nsIAtom headerAtom); void SetRequestHeader(in nsIAtom headerAtom, in string value); nsISimpleEnumerator GetRequestHeaderEnumerator(); void SetRequestMethod(in unsigned long method); // NS_IMETHOD SetRequestMethod(HTTPMethod i_Method=HM_GET) = 0; /* Pass in the post data if any... */ attribute nsIInputStream PostDataStream; /* Response funtions. A call to any of these implicitly calls Load() on this protocol instance. */ string GetResponseHeader(in nsIAtom headerAtom); void SetResponseHeader(in nsIAtom headerAtom, in string headerValue); nsISimpleEnumerator GetResponseHeaderEnumerator(); /* Explicitly set a referrer (HTTP's Referer) on this channel */ void SetReferrer(in nsIURI referrer, in unsigned long referrerLevel); readonly attribute unsigned long ResponseStatus; readonly attribute string ResponseString; readonly attribute nsIHTTPEventSink EventSink; readonly attribute nsIStreamListener ResponseDataListener; readonly attribute string Charset; attribute PRBool AuthTriedWithPrehost; readonly attribute PRBool UsingProxy; /* This string if set is used for forming the final request. So if you call SetProxyRequestURI(foo) on an HTTP Channel, the outbound request would look something like GET foo HTTP/1.0... This is done to allow other non-http specs to be used in proxy cases. */ attribute string ProxyRequestURI; };