diff options
Diffstat (limited to 'ext/soap/php_sdl.h')
-rw-r--r-- | ext/soap/php_sdl.h | 272 |
1 files changed, 272 insertions, 0 deletions
diff --git a/ext/soap/php_sdl.h b/ext/soap/php_sdl.h new file mode 100644 index 0000000..78757d1 --- /dev/null +++ b/ext/soap/php_sdl.h @@ -0,0 +1,272 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2013 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Brad Lafountain <rodif_bl@yahoo.com> | + | Shane Caraveo <shane@caraveo.com> | + | Dmitry Stogov <dmitry@zend.com> | + +----------------------------------------------------------------------+ +*/ +/* $Id$ */ + +#ifndef PHP_SDL_H +#define PHP_SDL_H + +#define XSD_WHITESPACE_COLLAPSE 1 +#define XSD_WHITESPACE_PRESERVE 1 +#define XSD_WHITESPACE_REPLACE 1 + +typedef enum _sdlBindingType { + BINDING_SOAP = 1, + BINDING_HTTP = 2 +} sdlBindingType; + +typedef enum _sdlEncodingStyle { + SOAP_RPC = 1, + SOAP_DOCUMENT = 2 +} sdlEncodingStyle; + +typedef enum _sdlRpcEncodingStyle { + SOAP_ENCODING_DEFAULT = 0, + SOAP_ENCODING_1_1 = 1, + SOAP_ENCODING_1_2 = 2 +} sdlRpcEncodingStyle; + +typedef enum _sdlEncodingUse { + SOAP_ENCODED = 1, + SOAP_LITERAL = 2 +} sdlEncodingUse; + +typedef enum _sdlTransport { + SOAP_TRANSPORT_HTTP = 1 +} sdlTransport; + +struct _sdl { + HashTable functions; /* array of sdlFunction */ + HashTable *types; /* array of sdlTypesPtr */ + HashTable *elements; /* array of sdlTypesPtr */ + HashTable *encoders; /* array of encodePtr */ + HashTable *bindings; /* array of sdlBindings (key'd by name) */ + HashTable *requests; /* array of sdlFunction (references) */ + HashTable *groups; /* array of sdlTypesPtr */ + char *target_ns; + char *source; + zend_bool is_persistent; +}; + +typedef struct sdlCtx { + sdlPtr sdl; + + HashTable docs; /* array of xmlDocPtr */ + + HashTable messages; /* array of xmlNodePtr */ + HashTable bindings; /* array of xmlNodePtr */ + HashTable portTypes; /* array of xmlNodePtr */ + HashTable services; /* array of xmlNodePtr */ + + HashTable *attributes; /* array of sdlAttributePtr */ + HashTable *attributeGroups; /* array of sdlTypesPtr */ + php_stream_context *context; + zval *old_header; +} sdlCtx; + +struct _sdlBinding { + char *name; + char *location; + sdlBindingType bindingType; + void *bindingAttributes; /* sdlSoapBindingPtr */ +}; + +/* Soap Binding Specfic stuff */ +struct _sdlSoapBinding { + sdlEncodingStyle style; + sdlTransport transport; /* not implemented yet */ +}; + +typedef struct _sdlSoapBindingFunctionHeader { + char *name; + char *ns; + sdlEncodingUse use; + sdlTypePtr element; + encodePtr encode; + sdlRpcEncodingStyle encodingStyle; /* not implemented yet */ + HashTable *headerfaults; /* array of sdlSoapBindingFunctionHeaderPtr */ +} sdlSoapBindingFunctionHeader, *sdlSoapBindingFunctionHeaderPtr; + +typedef struct _sdlSoapBindingFunctionFault { + char *ns; + sdlEncodingUse use; + sdlRpcEncodingStyle encodingStyle; /* not implemented yet */ +} sdlSoapBindingFunctionFault, *sdlSoapBindingFunctionFaultPtr; + +struct _sdlSoapBindingFunctionBody { + char *ns; + sdlEncodingUse use; + sdlRpcEncodingStyle encodingStyle; /* not implemented yet */ + HashTable *headers; /* array of sdlSoapBindingFunctionHeaderPtr */ +}; + +struct _sdlSoapBindingFunction { + char *soapAction; + sdlEncodingStyle style; + + sdlSoapBindingFunctionBody input; + sdlSoapBindingFunctionBody output; +}; + +struct _sdlRestrictionInt { + int value; + char fixed; +}; + +struct _sdlRestrictionChar { + char *value; + char fixed; +}; + +struct _sdlRestrictions { + HashTable *enumeration; /* array of sdlRestrictionCharPtr */ + sdlRestrictionIntPtr minExclusive; + sdlRestrictionIntPtr minInclusive; + sdlRestrictionIntPtr maxExclusive; + sdlRestrictionIntPtr maxInclusive; + sdlRestrictionIntPtr totalDigits; + sdlRestrictionIntPtr fractionDigits; + sdlRestrictionIntPtr length; + sdlRestrictionIntPtr minLength; + sdlRestrictionIntPtr maxLength; + sdlRestrictionCharPtr whiteSpace; + sdlRestrictionCharPtr pattern; +}; + +typedef enum _sdlContentKind { + XSD_CONTENT_ELEMENT, + XSD_CONTENT_SEQUENCE, + XSD_CONTENT_ALL, + XSD_CONTENT_CHOICE, + XSD_CONTENT_GROUP_REF, + XSD_CONTENT_GROUP, + XSD_CONTENT_ANY +} sdlContentKind; + + +typedef struct _sdlContentModel sdlContentModel, *sdlContentModelPtr; + +struct _sdlContentModel { + sdlContentKind kind; + int min_occurs; + int max_occurs; + union { + sdlTypePtr element; /* pointer to element */ + sdlTypePtr group; /* pointer to group */ + HashTable *content; /* array of sdlContentModel for sequnce,all,choice*/ + char *group_ref; /* reference to group */ + } u; +}; + +typedef enum _sdlTypeKind { + XSD_TYPEKIND_SIMPLE, + XSD_TYPEKIND_LIST, + XSD_TYPEKIND_UNION, + XSD_TYPEKIND_COMPLEX, + XSD_TYPEKIND_RESTRICTION, + XSD_TYPEKIND_EXTENSION +} sdlTypeKind; + +typedef enum _sdlUse { + XSD_USE_DEFAULT, + XSD_USE_OPTIONAL, + XSD_USE_PROHIBITED, + XSD_USE_REQUIRED +} sdlUse; + +typedef enum _sdlForm { + XSD_FORM_DEFAULT, + XSD_FORM_QUALIFIED, + XSD_FORM_UNQUALIFIED +} sdlForm; + +struct _sdlType { + sdlTypeKind kind; + char *name; + char *namens; + char nillable; + HashTable *elements; /* array of sdlTypePtr */ + HashTable *attributes; /* array of sdlAttributePtr */ + sdlRestrictionsPtr restrictions; + encodePtr encode; + sdlContentModelPtr model; + char *def; + char *fixed; + char *ref; + sdlForm form; +}; + +struct _sdlParam { + int order; + sdlTypePtr element; + encodePtr encode; + char *paramName; +}; + +typedef struct _sdlFault { + char *name; + HashTable *details; /* array of sdlParamPtr */ + void *bindingAttributes; /* sdlSoapBindingFunctionFaultPtr */ +} sdlFault, *sdlFaultPtr; + +struct _sdlFunction { + char *functionName; + char *requestName; + char *responseName; + HashTable *requestParameters; /* array of sdlParamPtr */ + HashTable *responseParameters; /* array of sdlParamPtr (this should only be one) */ + struct _sdlBinding *binding; + void *bindingAttributes; /* sdlSoapBindingFunctionPtr */ + HashTable *faults; /* array of sdlFaultPtr */ +}; + +typedef struct _sdlExtraAttribute { + char *ns; + char *val; +} sdlExtraAttribute, *sdlExtraAttributePtr; + +struct _sdlAttribute { + char *name; + char *namens; + char *ref; + char *def; + char *fixed; + sdlForm form; + sdlUse use; + HashTable *extraAttributes; /* array of sdlExtraAttribute */ + encodePtr encode; +}; + + +sdlPtr get_sdl(zval *this_ptr, char *uri, long cache_wsdl TSRMLS_DC); + +encodePtr get_encoder_from_prefix(sdlPtr sdl, xmlNodePtr data, const xmlChar *type); +encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type); +encodePtr get_encoder_ex(sdlPtr sdl, const char *nscat, int len); + +sdlBindingPtr get_binding_from_type(sdlPtr sdl, int type); +sdlBindingPtr get_binding_from_name(sdlPtr sdl, char *name, char *ns); + +void delete_sdl(void *handle); +void delete_sdl_impl(void *handle); + +void sdl_set_uri_credentials(sdlCtx *ctx, char *uri TSRMLS_DC); +void sdl_restore_uri_credentials(sdlCtx *ctx TSRMLS_DC); + +#endif |