/* -*- 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" interface nsIDOMDocument; interface nsIDOMElement; interface nsISOAPEncoding; interface nsISOAPHeaderBlock; interface nsISOAPParameter; interface nsIVariant; /** * This interface controls all SOAP messages. It permits easy * construction of a message, typically through encoding of * parameters and certain properties settable on this interface * or through deserialization of a transport stream. It * permits easy processing of a message typically through * decoding of parameters and certain properties available * on this interface. It also encapsulates protocol information * interpreted by the transport. */ [scriptable, uuid(3970815e-1dd2-11b2-a475-db4dac6826f1)] interface nsISOAPMessage : nsISupports { const unsigned short VERSION_1_1 = 0; const unsigned short VERSION_1_2 = 1; const unsigned short VERSION_UNKNOWN = 0xFFFF; /** * The document which captures the message, if any. A simple * sending application passes parameters to the method * encodeSOAPParameters, which calls SOAP encoders * to construct this document along with all contained elements. * * But an application may create and set the message directly * instead of invoking encodeSOAPParameters to use encoders * or access and manipulate the message after it has been * constructed by encodeSOAPParameters. If the message has * not been set, invoking a call will fail. A message reciever * may also use this accessor to get the document to avoid using * decoders. */ attribute nsIDOMDocument message; /** * A convenience attribute to obtain the DOM element representing the * SOAP envelope from the document. DOM methods may be used to * access, add, or modify attributes of the envelope. * * If the message attribute is null or is not a document containing * a root soap envelope element, then this will be null. */ readonly attribute nsIDOMElement envelope; /** * A convenience attribute to obtain the SOAP version number, if * it is known, from the envelope. * * If the message attribute is null or is not a document containing * a root soap envelope element, then this will be VERSION_UNKNOWN. */ readonly attribute unsigned short version; /** * A convenience attribute to obtain the DOM element representing the * SOAP header from the envelope. DOM methods may be used to * access, add, or modify attributes or elements of the header. * * If the envelope attribute is null or does not contain a SOAP header * element type, then this will be null. */ readonly attribute nsIDOMElement header; /** * A convenience attribute to obtain the DOM element representing the * SOAP body from the envelope. DOM methods may be used to * access, add, or modify attributes or elements of the body. * * If the envelope attribute is null or does not contain a SOAP body * element type, then this will be null. */ readonly attribute nsIDOMElement body; /** * The name of the method being invoked. The methodName is set * during encoding as the tagname of the single child of body * of RPC-style messages. When there is no encoded message * this will be null. The value of this attribute for * document-style messages may be non-null but should be * ignored. It is up to the application to know whether the * message is RPC-style or document style because the SOAP * specification makes it difficult to tell which way a * message was encoded. */ readonly attribute AString methodName; /** * The target object on which the method is being invoked. This URI * is set during encoding as the namespace to qualify the tagname * of the single child of body of RPC-style messages. When there * is no encoded message, this will be null. The value of this * attribute for document-style messages may be non-null but should * be ignored. It is up to the application to know whether the * message is RPC-style or document style because the SOAP * specification makes it difficult to tell which way a * message was encoded. */ readonly attribute AString targetObjectURI; /** * Encodes the specified parameters into this message, if * this message type supports it. * * @param aMethodName The name of the method being invoked * for rpc-style messages. For document-style messages, * this must be null. * * @param aTargetObjectURI The name of the target object * for rpc-style messages. For document-style messages, * this must be null. * * @param aHeaderBlockCount Number of header blocks in array to be * encoded. Must be 0 if header block array is null. * * @param aHeaderBlocks Array of header blocks to be encoded, which * may be null if there are no header blocks. * * @param aParameterCount Number of parameters in array * to be encoded. Must be 0 if parameter array is null. * * @param aParameters An array of parameters to be * encoded, which may null if there are no parameters. */ void encode(in unsigned short aVersion, in AString aMethodName, in AString aTargetObjectURI, in unsigned long aHeaderBlockCount, [array, size_is(aHeaderBlockCount)] in nsISOAPHeaderBlock aHeaderBlocks, in unsigned long aParameterCount,[array, size_is (aParameterCount)] in nsISOAPParameter aParameters); /** * Gathers the header blocks of a message so that they can be * accessed by a recipient. * * @param aCount Integer to receive the length of the list * of header blocks. * * @return Array of header blocks found in the message. */ void getHeaderBlocks(out unsigned long aCount, [array, size_is(aCount), retval] out nsISOAPHeaderBlock aHeaderBlocks); /** * Gathers the parameters of a message so that they can be * accessed by a recipient. * * @param aDocumentStyle If true, then the parameters * are looked for treating the message as a document * style message, otherwise it treated as an RPC-style * message. * * @param aCount Integer to receive the length of the list * of parameters. * * @return Array of parameters found in the message. */ void getParameters(in boolean aDocumentStyle, out unsigned long aCount, [array, size_is(aCount), retval] out nsISOAPParameter aParameters); /** * The primary encoding of the message, which is established * at the envelope and used unless overridden. By default, * this is the SOAP encoding, which may be locally modified * or used to obtain alternative encodings, which may be * locally modified, but it may be set to an encoding that * is shared, or it may be set to null, in which case all * non-literal header blocks and parameters must specify an * encoding. */ attribute nsISOAPEncoding encoding; /** * An optional URI that can be used to add a SOAPAction HTTP * header field. If this attribute is NULL (the default case), * no SOAPAction header will be added. */ attribute AString actionURI; };