| /** |
| * 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 |
| * |
| * XSECSOAPRequestorSimple := (Very) Basic implementation of a SOAP |
| * HTTP wrapper for testing the client code. |
| * |
| * |
| * $Id$ |
| * |
| */ |
| |
| #ifndef XSECSOAPREQUESTORSIMPLE_INCLUDE |
| #define XSECSOAPREQUESTORSIMPLE_INCLUDE |
| |
| #include <xsec/framework/XSECDefs.hpp> |
| #include <xsec/utils/XSECSOAPRequestor.hpp> |
| |
| #ifdef XSEC_XKMS_ENABLED |
| |
| #include <xercesc/util/XMLUri.hpp> |
| |
| XSEC_DECLARE_XERCES_CLASS(DOMDocument); |
| |
| /** |
| * @ingroup xkms |
| */ |
| /*\@{*/ |
| |
| /** |
| * @brief Basic HTTP implementation for SOAP Requests |
| * |
| * 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 provides a very |
| * naieve implementation that wraps the message and does a basic |
| * HTTP POST to get the message to the end server. |
| * |
| */ |
| |
| |
| class XSEC_EXPORT XSECSOAPRequestorSimple : public XSECSOAPRequestor { |
| |
| public : |
| |
| /** |
| * Envelope Enumeration |
| */ |
| |
| enum envelopeType { |
| |
| ENVELOPE_NONE, /** No envelope - straight HTTP request */ |
| ENVELOPE_SOAP11, /** SOAP 1.1 envelope (default) */ |
| ENVELOPE_SOAP12 /** SOAP 1.2 envelope */ |
| |
| }; |
| |
| /** @name Constructors and Destructors */ |
| //@{ |
| |
| /** |
| * \brief Constructor |
| * |
| * Create a SOAP requestor that can be used to access a specific |
| * server |
| * |
| * @param uri The URI of the server that will be accessed. |
| * @note The URI must be http://... |
| */ |
| |
| XSECSOAPRequestorSimple(const XMLCh * uri); |
| virtual ~XSECSOAPRequestorSimple(); |
| |
| //@} |
| |
| /** @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 returns a pointer |
| * to the parsed result message (with the SOAP envelope removed) |
| * |
| * @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); |
| |
| //@} |
| |
| /** @name Configuration methods */ |
| //@{ |
| |
| /** |
| * \brief Set the envelope type |
| * |
| * The requestor can do a SOAP 1.1, SOAP 1.2 or no envelope around the |
| * message. This call allows the apllication to set the type. |
| * |
| * By default, the requestor uses a SOAP 1.1 envelope |
| * |
| * @param et - the type of envelope to use |
| */ |
| |
| void setEnvelopeType(envelopeType et); |
| |
| |
| private: |
| |
| char * wrapAndSerialise(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * request); |
| XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * |
| parseAndUnwrap(const char * buf, unsigned int len); |
| |
| XERCES_CPP_NAMESPACE_QUALIFIER XMLUri |
| m_uri; |
| |
| envelopeType m_envelopeType; |
| |
| }; |
| |
| #endif /* XSEC_XKMS_ENABLED */ |
| #endif /* XSECSOAPREQUESTORSIMPLE_INCLUDE */ |