/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla 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/MPL/ * * 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 the Initial Developer are Copyright (C) 2001 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" #include "nsISOAPMessage.idl" interface nsISOAPResponse; interface nsISOAPResponseListener; interface nsISOAPCallCompletion; /** * This interface is a convenience extension of the basic SOAP message, * which handles common patterns of calling, such as providing an * action URI in the HTTP header, locating and invoking the appropriate * transport based upon the protocol of the transportURI, and * automatically recieving the result in a new nsISOAPResponse object * which recieves an XML message. */ [scriptable, uuid(a8fefe40-52bc-11d4-9a57-000064657374)] interface nsISOAPCall : nsISOAPMessage { /** * The URI to which the message will be sent, identifying the * transport and transport-specific information about the * destination. * This does not have to match the targetObjectURI. */ attribute AString transportURI; /** * Enables alternative security model which may be available * from participating services. Securely adds a * "verifySource" header to the outgoing message with * "mustUnderstand" enabled, which permits the server to * decide whether the call should be honored from that * particular source. i *

When this verification header is enabled, the * calling script is released from the draconion * security checks of unverified SOAP calls. But * the service being invoked must not reject the * message, which is the prescribed action if a SOAP * server receives a header of type "mustUnderstand" that * it does not understand. *

Servers which accept "verified" messages * containing this header relieve the user of having to * configure and trust the domain of the web page never * to exploit behind his firewall, because the * responsibility is assumed by the service. If the * service is not behind a firewall, then merely * ignoring the packet is enough to free all * users of this facility to call the server whatever * their security configurations for unverified calls * may be. But it only works with services that * accept these verifySource headers. *

It is possible for a user to disable even verified * SOAP calls, but this is not the default setting. */ attribute boolean verifySourceHeader; /** * Synchronously invoke the call. The method returns only when * we receive a response (or an error occurs). The * transportURI must have been set, the * parameter list (even if empty) must have been encoded, * and the transportURI must use some known protocol. A * synchronous call assumes that there will be exactly one * response per call. * * If not, an error is returned in the status of the response. * * @returns The SOAP response */ nsISOAPResponse invoke(); /** * Asynchronously invoke the call. At this point, the document * rooted by the Envelope element is encoded to form the body * of the SOAP message. The method returns immediately, and the * listener is invoked when we eventually receive a response * (or error or successful completion). The * transportURI must have been set, the * parameter list (even if empty) must have been encoded, * and the transportURI must use some known protocol. * * If not, an error is returned in the status of the response. * * @param aListener Handler to be invoked asynchronously after the * response is recieved. Should be null if no response is * expected. */ nsISOAPCallCompletion asyncInvoke(in nsISOAPResponseListener aListener); }; %{C++ #define NS_SOAPCALL_CID \ { /* 87d21ec0-539d-11d4-9a59-00104bdf5339 */ \ 0x87d21ec0, 0x539d, 0x11d4, \ {0x9a, 0x59, 0x00, 0x10, 0x4b, 0xdf, 0x53, 0x39} } #define NS_SOAPCALL_CONTRACTID \ "@mozilla.org/xmlextras/soap/call;1" %}