1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
webservice.php
См. документацию.
1<?php
2
5
7
9{
10 var $wsname; // webservice name
11 var $wsclassname; // webservice class wrapper (i-face implementor) name
12 var $wsdlauto; // boolean, automatic generating wsdl
13
14 var $wstargetns; // target namespace
16
17 /*
18 * Return info about $reflect method, class, para,
19 * For method:
20 * classname=>method
21 *
22 * must contain array(
23 * "name" => string,
24 * "documentation" => "Description"
25 * "input" => array(..),
26 * "output" => array(..)
27 * )
28 * Input in method: list of para's.
29 * array(
30 * "name" => "type",
31 * ...
32 * )
33 * Output in method:
34 * 1) "simpleType" => "type"
35 * 2) "complexType" => array[] of structModuleSoapRetData declared by output array.
36 * */
37 var $classes; // class methods for soap
38
39 /*
40 * On next two, syntax same as for $classes, but:
41 *
42 */
43 var $structTypes; // complex assoc array data types.
44 var $classTypes; // complex class data struct. when soaped. must be unserialized to class.
45
47 var $_wsdlci; // wsdlcreator instance class
48 var $_soapsi; // soap server instance class
49}
50
52{
53 // May be called by Event to collect CWebServiceDesc on configuring WS.Server
54 public static function GetWebServiceDesc() {}
55
56 //function TestComponent() {}
57
58 /*
59 * Web Service methods must have ws prefix in there names and
60 * they have to be serviced by ReflectService function to generate
61 * valid wsdl code, binding and other.
62 * Example:
63 * wsGetUserInfo();
64 * */
65}
66
68{
69 public static function SetComponentContext($arParams)
70 {
71 if (is_array($arParams))
72 $GLOBALS["componentContext"] = $arParams;
73 }
74
75 public static function GetComponentContext($arParams)
76 {
77 if (is_array($GLOBALS["componentContext"]))
78 return $GLOBALS["componentContext"];
79
80 return false;
81 }
82
83 public static function SOAPServerProcessRequest($wsname)
84 {
85 if (!isset($GLOBALS["wsdescs"][$wsname]) or
86 !$GLOBALS["wsdescs"][$wsname] or
87 !$GLOBALS["wsdescs"][$wsname]->_soapsi)
88 return false;
89
90 return $GLOBALS["wsdescs"][$wsname]->_soapsi->ProcessRequest();
91 }
92
93 public static function RegisterWebService($className /*IWebService implementor*/)
94 {
95 $ifce =& CWebService::GetInterface($className);
96 if (!is_object($ifce)) return false;
97
98 $wsHandler = $ifce->GetWebServiceDesc();
99 if (!$wsHandler or
100 isset($GLOBALS["wsdescs"][$wsHandler->wsname])
101 or !$wsHandler->wsname
102 or !$wsHandler->wsclassname
103 or !$wsHandler->wstargetns
104 or !$wsHandler->wsendpoint
105 or !is_array($wsHandler->classes)
106 or !is_array($wsHandler->structTypes)
107 or !is_array($wsHandler->classTypes))
108 return false;
109
110 if (isset($GLOBALS["wsdescs"][$wsHandler->wsname]))
111 return false;
112
113 $wsHandler->_wsdlci = new CWSDLCreator(
114 $wsHandler->wsname,
115 $wsHandler->wsendpoint,
116 $wsHandler->wstargetns);
117
118 $wsHandler->_wsdlci->setClasses($wsHandler->classes);
119 if (count($wsHandler->structTypes))
120 foreach ($wsHandler->structTypes as $pname => $vars)
121 $wsHandler->_wsdlci->AddComplexDataType($pname, $vars);
122 if (count($wsHandler->classTypes))
123 foreach ($wsHandler->classTypes as $pname => $vars)
124 $wsHandler->_wsdlci->AddComplexDataType($pname, $vars);
125 $wsHandler->_wsdlci->createWSDL();
126
127 $wsHandler->_soapsi = new CSOAPServer();
128
129 $soapr = new CWSSOAPResponser();
130
131 foreach ($wsHandler->structTypes as $cTypeN => $desc)
132 {
133 $tdesc = $desc;
134 $tdesc["serialize"] = "assoc";
135 $soapr->RegisterComplexType(
136 array($cTypeN => $tdesc)
137 );
138 }
139
140 foreach ($wsHandler->classTypes as $cTypeN => $desc)
141 {
142 $tdesc = $desc;
143 $tdesc["serialize"] = "class";
144 $soapr->RegisterComplexType(
145 array($cTypeN => $tdesc)
146 );
147 }
148
149 foreach ($wsHandler->classes as $classws => $methods)
150 foreach ($methods as $method => $param)
151 {
152 if (isset($param["httpauth"]))
153 $httprequired = $param["httpauth"];
154 if ($httprequired!="Y")
155 $httprequired = "N";
156
157 $input = array(); if (is_array($param["input"]))
158 $input = $param["input"];
159 $output = array(); if (is_array($param["output"]))
160 $output = $param["output"];
161
162 $soapr->RegisterFunction(
163 $method,
164 array(
165 "input" => $input,
166 "output" => $output,
167 "myclassname" => $classws,
168 "request" => $method,
169 "response" => $method."Response",
170 "httpauth" => $httprequired
171 )
172 );
173
174
175 }
176
177 $wsHandler->_soapsi->AddServerResponser($soapr);
178
179 $GLOBALS["wsdescs"][$wsHandler->wsname] = &$wsHandler;
180 $GLOBALS["wswraps"][$wsHandler->wsname] = &$ifce;
181
182 return true;
183 }
184
185 public static function GetSOAPServerRequest($wsname)
186 {
187 if (isset($GLOBALS["wsdescs"][$wsname]) and
188 $GLOBALS["wsdescs"][$wsname]->_soapsi)
189 {
190 return $GLOBALS["wsdescs"][$wsname]->_soapsi->GetRequestData();
191 }
192 return false;
193 }
194
195 public static function GetSOAPServerResponse($wsname)
196 {
197 if (isset($GLOBALS["wsdescs"][$wsname]))
198 {
199 return $GLOBALS["wsdescs"][$wsname]->_soapsi->GetResponseData();
200 }
201 return false;
202 }
203
204 public static function MethodRequireHTTPAuth($class, $method)
205 {
206 global $USER;
207
208 if (!$USER->IsAuthorized())
209 {
211 return false;
212 }
213
214 return true;
215 }
216
217 public static function TestComponent($wsname)
218 {
219 if (isset($GLOBALS["wsdescs"][$wsname]))
220 {
221 $ifce =& CWebService::GetInterface($GLOBALS["wsdescs"][$wsname]->wsclassname);
222 if (!is_object($ifce)) return false;
223 $ifce->TestComponent();
224 }
225 return false;
226 }
227
228 public static function GetWSDL($wsname)
229 {
230 if (!isset($GLOBALS["wsdescs"][$wsname]) or
231 !$GLOBALS["wsdescs"][$wsname] or
232 !$GLOBALS["wsdescs"][$wsname]->_wsdlci)
233 return false;
234 return $GLOBALS["wsdescs"][$wsname]->_wsdlci->getWSDL();
235 }
236
237 public static function GetDefaultEndpoint()
238 {
239 global $APPLICATION;
240 return ($APPLICATION->IsHTTPS() ? "https" : "http")."://".$_SERVER["HTTP_HOST"].
241 $APPLICATION->GetCurPage();
242 }
243
244 public static function GetDefaultTargetNS()
245 {
246 global $APPLICATION;
247
248 return ($APPLICATION->IsHTTPS() ? "https" : "http")."://".$_SERVER["HTTP_HOST"]."/";
249 }
250
251 public static function &GetWebServiceDeclaration($className)
252 {
253 if (isset($GLOBALS["wsdescs"][$className])) return $GLOBALS["wsdescs"][$className];
254 $ifce =& CWebService::GetInterface($className);
255 if (!is_object($ifce)) return false;
256 return $ifce->GetWebServiceDesc();
257 }
258
259 public static function &GetInterface($className)
260 {
261 if (isset($GLOBALS["wswraps"][$className])) return $GLOBALS["wswraps"][$className];
262
263 if (!class_exists($className)) return 0;
264 //AddMessage2Log(mydump(class_exists($className, true)));
265 $ifce = new $className;
266 if (!is_subclass_of($ifce, "IWebService")) return 0;
267 return $ifce;
268 }
269}
$arParams
Определения access_dialog.php:21
global $APPLICATION
Определения include.php:80
static SetAuthHeader($bDigestEnabled=true)
Определения http.php:491
Определения soapserver.php:216
Определения wsdlcreator.php:4
Определения soapserver.php:31
Определения webservice.php:9
$classTypes
Определения webservice.php:44
$classes
Определения webservice.php:37
$structTypes
Определения webservice.php:43
$wsclassname
Определения webservice.php:11
$wsdlauto
Определения webservice.php:12
$wsname
Определения webservice.php:10
$wstargetns
Определения webservice.php:14
$_wsdlci
Определения webservice.php:47
$_soapsi
Определения webservice.php:48
$wsendpoint
Определения webservice.php:15
Определения webservice.php:68
static TestComponent($wsname)
Определения webservice.php:217
static RegisterWebService($className)
Определения webservice.php:93
static & GetInterface($className)
Определения webservice.php:259
static GetWSDL($wsname)
Определения webservice.php:228
static GetSOAPServerResponse($wsname)
Определения webservice.php:195
static GetDefaultTargetNS()
Определения webservice.php:244
static SOAPServerProcessRequest($wsname)
Определения webservice.php:83
static SetComponentContext($arParams)
Определения webservice.php:69
static MethodRequireHTTPAuth($class, $method)
Определения webservice.php:204
static GetSOAPServerRequest($wsname)
Определения webservice.php:185
static & GetWebServiceDeclaration($className)
Определения webservice.php:251
static GetDefaultEndpoint()
Определения webservice.php:237
static GetComponentContext($arParams)
Определения webservice.php:75
Определения webservice.php:52
static GetWebServiceDesc()
Определения webservice.php:54
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$output
Определения options.php:436
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $USER
Определения csv_new_run.php:40
if(mb_strlen($order)< 6) $desc
Определения payment.php:44
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$method
Определения index.php:27
$GLOBALS['_____370096793']
Определения update_client.php:1
$componentContext
Определения webservice.php:6
$wsdescs
Определения webservice.php:3
$wswraps
Определения webservice.php:4