blob: 587efa6e443187fcb9399058536c40ef1757a95c [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* XSEC
*
* XSECSOAPRequestor:= Interface class used by the XKMS client code to
* perform a SOAP request and receive response.
*
*
* $Id$
*
*/
#ifndef XSECSOAPREQUESTOR_INCLUDE
#define XSECSOAPREQUESTOR_INCLUDE
#include <xsec/framework/XSECDefs.hpp>
#ifdef XSEC_XKMS_ENABLED
XSEC_DECLARE_XERCES_CLASS(DOMDocument);
/**
* @brief Interface for SOAP Requests
* @ingroup interfaces
*
* The XKMS client code needs to be able to call on a SOAP requestor
* implementation that will handle wrapping the request in a SOAP msg
* and transporting it to the SOAP server. This class defines the
* interface used by the client code to make this happen.
*
* Implementors need to wrap the passed in DOM document in a SOAP 1.1
* or SOAP 1.2 msg. E.g. (SOAP 1.2)
* \verbatim
<?xml version='1.0' encoding="utf-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2002/06/soap-envelope">
<env:Header>
<env:Body>
XKMS Request Message element
</env:Body>
</env:Header>
</env:Envelope>
\endverbatim
*
* SOAP implentors may want/need to add other headers.
*
*/
class XSEC_EXPORT XSECSOAPRequestor {
public :
/** @name Constructors and Destructors */
//@{
XSECSOAPRequestor() {}
virtual ~XSECSOAPRequestor() {}
//@}
/** @name Interface methods */
/**
* \brief Do a SOAP request
*
* Performs a request based on the passed in DOM document and
* the indicated URI. The function is expected to return a pointer
* to the parsed result message (with the SOAP envelope removed)
*
* The implementing object is expected to know how to get the
* wrapped message to the server that will process the request
*
* @param request The DOM document containing the message to be
* wrapped and sent.
* @returns The DOM document representing the result, with all
* SOAP headers removed
*/
virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *
doRequest(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * request) = 0;
};
#endif /* XSEC_XKMS_ENABLED */
#endif /* XSECSOAPREQUESTOR_INCLUDE */