1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef PHP_SDL_H
23 #define PHP_SDL_H
24
25 #define XSD_WHITESPACE_COLLAPSE 1
26 #define XSD_WHITESPACE_PRESERVE 1
27 #define XSD_WHITESPACE_REPLACE 1
28
29 typedef enum _sdlBindingType {
30 BINDING_SOAP = 1,
31 BINDING_HTTP = 2
32 } sdlBindingType;
33
34 typedef enum _sdlEncodingStyle {
35 SOAP_RPC = 1,
36 SOAP_DOCUMENT = 2
37 } sdlEncodingStyle;
38
39 typedef enum _sdlRpcEncodingStyle {
40 SOAP_ENCODING_DEFAULT = 0,
41 SOAP_ENCODING_1_1 = 1,
42 SOAP_ENCODING_1_2 = 2
43 } sdlRpcEncodingStyle;
44
45 typedef enum _sdlEncodingUse {
46 SOAP_ENCODED = 1,
47 SOAP_LITERAL = 2
48 } sdlEncodingUse;
49
50 typedef enum _sdlTransport {
51 SOAP_TRANSPORT_HTTP = 1
52 } sdlTransport;
53
54 struct _sdl {
55 HashTable functions;
56 HashTable *types;
57 HashTable *elements;
58 HashTable *encoders;
59 HashTable *bindings;
60 HashTable *requests;
61 HashTable *groups;
62 char *target_ns;
63 char *source;
64 zend_bool is_persistent;
65 };
66
67 typedef struct sdlCtx {
68 sdlPtr sdl;
69
70 HashTable docs;
71
72 HashTable messages;
73 HashTable bindings;
74 HashTable portTypes;
75 HashTable services;
76
77 HashTable *attributes;
78 HashTable *attributeGroups;
79 php_stream_context *context;
80 zval old_header;
81 } sdlCtx;
82
83 struct _sdlBinding {
84 char *name;
85 char *location;
86 sdlBindingType bindingType;
87 void *bindingAttributes;
88 };
89
90
91 struct _sdlSoapBinding {
92 sdlEncodingStyle style;
93 sdlTransport transport;
94 };
95
96 typedef struct _sdlSoapBindingFunctionHeader {
97 char *name;
98 char *ns;
99 sdlEncodingUse use;
100 sdlTypePtr element;
101 encodePtr encode;
102 sdlRpcEncodingStyle encodingStyle;
103 HashTable *headerfaults;
104 } sdlSoapBindingFunctionHeader, *sdlSoapBindingFunctionHeaderPtr;
105
106 typedef struct _sdlSoapBindingFunctionFault {
107 char *ns;
108 sdlEncodingUse use;
109 sdlRpcEncodingStyle encodingStyle;
110 } sdlSoapBindingFunctionFault, *sdlSoapBindingFunctionFaultPtr;
111
112 struct _sdlSoapBindingFunctionBody {
113 char *ns;
114 sdlEncodingUse use;
115 sdlRpcEncodingStyle encodingStyle;
116 HashTable *headers;
117 };
118
119 struct _sdlSoapBindingFunction {
120 char *soapAction;
121 sdlEncodingStyle style;
122
123 sdlSoapBindingFunctionBody input;
124 sdlSoapBindingFunctionBody output;
125 };
126
127 struct _sdlRestrictionInt {
128 int value;
129 char fixed;
130 };
131
132 struct _sdlRestrictionChar {
133 char *value;
134 char fixed;
135 };
136
137 struct _sdlRestrictions {
138 HashTable *enumeration;
139 sdlRestrictionIntPtr minExclusive;
140 sdlRestrictionIntPtr minInclusive;
141 sdlRestrictionIntPtr maxExclusive;
142 sdlRestrictionIntPtr maxInclusive;
143 sdlRestrictionIntPtr totalDigits;
144 sdlRestrictionIntPtr fractionDigits;
145 sdlRestrictionIntPtr length;
146 sdlRestrictionIntPtr minLength;
147 sdlRestrictionIntPtr maxLength;
148 sdlRestrictionCharPtr whiteSpace;
149 sdlRestrictionCharPtr pattern;
150 };
151
152 typedef enum _sdlContentKind {
153 XSD_CONTENT_ELEMENT,
154 XSD_CONTENT_SEQUENCE,
155 XSD_CONTENT_ALL,
156 XSD_CONTENT_CHOICE,
157 XSD_CONTENT_GROUP_REF,
158 XSD_CONTENT_GROUP,
159 XSD_CONTENT_ANY
160 } sdlContentKind;
161
162
163 typedef struct _sdlContentModel sdlContentModel, *sdlContentModelPtr;
164
165 struct _sdlContentModel {
166 sdlContentKind kind;
167 int min_occurs;
168 int max_occurs;
169 union {
170 sdlTypePtr element;
171 sdlTypePtr group;
172 HashTable *content;
173 char *group_ref;
174 } u;
175 };
176
177 typedef enum _sdlTypeKind {
178 XSD_TYPEKIND_SIMPLE,
179 XSD_TYPEKIND_LIST,
180 XSD_TYPEKIND_UNION,
181 XSD_TYPEKIND_COMPLEX,
182 XSD_TYPEKIND_RESTRICTION,
183 XSD_TYPEKIND_EXTENSION
184 } sdlTypeKind;
185
186 typedef enum _sdlUse {
187 XSD_USE_DEFAULT,
188 XSD_USE_OPTIONAL,
189 XSD_USE_PROHIBITED,
190 XSD_USE_REQUIRED
191 } sdlUse;
192
193 typedef enum _sdlForm {
194 XSD_FORM_DEFAULT,
195 XSD_FORM_QUALIFIED,
196 XSD_FORM_UNQUALIFIED
197 } sdlForm;
198
199 struct _sdlType {
200 sdlTypeKind kind;
201 char *name;
202 char *namens;
203 char nillable;
204 HashTable *elements;
205 HashTable *attributes;
206 sdlRestrictionsPtr restrictions;
207 encodePtr encode;
208 sdlContentModelPtr model;
209 char *def;
210 char *fixed;
211 char *ref;
212 sdlForm form;
213 };
214
215 struct _sdlParam {
216 int order;
217 sdlTypePtr element;
218 encodePtr encode;
219 char *paramName;
220 };
221
222 typedef struct _sdlFault {
223 char *name;
224 HashTable *details;
225 void *bindingAttributes;
226 } sdlFault, *sdlFaultPtr;
227
228 struct _sdlFunction {
229 char *functionName;
230 char *requestName;
231 char *responseName;
232 HashTable *requestParameters;
233 HashTable *responseParameters;
234 struct _sdlBinding *binding;
235 void *bindingAttributes;
236 HashTable *faults;
237 };
238
239 typedef struct _sdlExtraAttribute {
240 char *ns;
241 char *val;
242 } sdlExtraAttribute, *sdlExtraAttributePtr;
243
244 struct _sdlAttribute {
245 char *name;
246 char *namens;
247 char *ref;
248 char *def;
249 char *fixed;
250 sdlForm form;
251 sdlUse use;
252 HashTable *extraAttributes;
253 encodePtr encode;
254 };
255
256
257 sdlPtr get_sdl(zval *this_ptr, char *uri, zend_long cache_wsdl);
258
259 encodePtr get_encoder_from_prefix(sdlPtr sdl, xmlNodePtr data, const xmlChar *type);
260 encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type);
261 encodePtr get_encoder_ex(sdlPtr sdl, const char *nscat, int len);
262
263 sdlBindingPtr get_binding_from_type(sdlPtr sdl, int type);
264 sdlBindingPtr get_binding_from_name(sdlPtr sdl, char *name, char *ns);
265
266 void delete_sdl(void *handle);
267 void delete_sdl_impl(void *handle);
268
269 void sdl_set_uri_credentials(sdlCtx *ctx, char *uri);
270 void sdl_restore_uri_credentials(sdlCtx *ctx);
271
272 #endif