/******************************************************************************* * Copyright (C) 2004-2006 Intel Corp. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * - Neither the name of Intel Corp. nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corp. OR THE CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ /** * @author Anas Nashif */ #ifndef WSMAN_SOAP_ENVELOPE_H_ #define WSMAN_SOAP_ENVELOPE_H_ #include "wsman-types.h" #include "wsman-soap.h" #include "wsman-soap-message.h" #define ENFORCE_MUST_UNDERSTAND "EnforceMustUnderstand" /* special hash key to denote method args (where array elements have identical keys) */ #define METHOD_ARGS_KEY "method_args" int wsman_is_valid_envelope(WsmanMessage * msg, WsXmlDocH doc); char *wsman_get_soap_header_value( WsXmlDocH doc, const char *nsUri, const char *name); WsXmlNodeH wsman_get_soap_header_element(WsXmlDocH doc, const char *nsUri, const char *name); WsXmlDocH wsman_build_soap_fault( const char *soapNsUri, const char *faultNsUri, const char *code, const char *subCode, const char *reason, const char *detail); WsXmlDocH wsman_create_response_envelope(WsXmlDocH rqstDoc, const char *action); WsXmlDocH wsman_build_inbound_envelope( WsmanMessage * msg); WsXmlDocH wsman_create_fault_envelope( WsXmlDocH rqstDoc, const char *code, const char *subCodeNs, const char *subCode, const char *fault_action, const char *lang, const char *reason, const char *faultDetail); char *wsman_get_class_name(WsContextH cntx); char *wsman_get_method_name(WsContextH cntx); hash_t *wsman_get_method_args(WsContextH cntx, const char *resource_uri); int wsman_get_max_elements(WsContextH cntx, WsXmlDocH doc); unsigned long wsman_get_max_envelope_size(WsContextH cntx, WsXmlDocH doc); char *wsman_get_fragment_string(WsContextH cntx, WsXmlDocH doc); void wsman_get_fragment_type(char *fragstr, int *fragment_flag, char **element, int *index); void wsman_set_estimated_total(WsXmlDocH in_doc, WsXmlDocH out_doc, WsEnumerateInfo * enumInfo); char *wsman_get_selector(WsContextH cntx, WsXmlDocH doc, const char *name, const int index); hash_t *wsman_get_selectors_from_epr(WsContextH cntx, WsXmlNodeH epr_node); hash_t *wsman_get_selector_list(WsContextH cntx, WsXmlDocH doc); hash_t *wsman_get_selector_list_from_filter(WsContextH cntx, WsXmlDocH doc); void wsman_add_selector(WsXmlNodeH baseNode, const char *name, const char *val); void wsman_add_selector_epr(WsXmlNodeH baseNode, const char *name, const epr_t *val); char *wsman_get_action(WsContextH cntx, WsXmlDocH doc); char *wsman_get_resource_uri(WsContextH cntx, WsXmlDocH doc); int wsman_is_fault_envelope(WsXmlDocH doc); void wsman_set_fault(WsmanMessage * msg, WsmanFaultCodeType fault_code, WsmanFaultDetailType fault_detail_code, const char *details); int wsman_is_identify_request(WsXmlDocH doc); int wsman_check_identify(WsmanMessage * msg); int wsman_is_event_related_request(WsXmlDocH doc); int wsman_is_valid_xml_envelope(WsXmlDocH doc); void wsman_add_namespace_as_selector(WsXmlDocH doc, const char *_namespace); void wsman_add_fragement_for_header(WsXmlDocH indoc, WsXmlDocH outdoc); char *wsman_get_option_set(WsContextH cntx, WsXmlDocH doc, const char *op); int wsman_parse_enum_request(WsContextH cntx, WsEnumerateInfo * enumInfo, WsmanStatus *status); int wsman_parse_event_request(WsXmlDocH doc, WsSubscribeInfo * subsInfo, WsmanFaultCodeType *faultcode, WsmanFaultDetailType *detailcode); int wsman_parse_credentials(WsXmlDocH doc, WsSubscribeInfo * subsInfo, WsmanFaultCodeType *faultcode, WsmanFaultDetailType *detailcode); void wsman_set_expiretime(WsXmlNodeH node, unsigned long * expire, WsmanFaultCodeType *fault_code); int time_expired(unsigned long lt); WsXmlDocH wsman_create_doc(const char *rootname); void wsman_destroy_doc(WsXmlDocH doc); #endif