skaut/Skautis

BatchRequest SOAP

JindrichPilar opened this issue · 1 comments

Pracovni myslenka je podporovat batch request. Coz se da udelat pres cURL.
Samozrejme by zustala moznost synchroniho spracovani. I jako fallback kdy neni cURL k dispozici.

Jako transportni vrstva by se dala pouzit https://github.com/guzzle/guzzle
Jelikoz Guzzle by nevalidoval pozadavek vuci WSDL, dalo by se pouzit https://github.com/wsdl2phpgenerator/wsdl2phpgenerator

Navrh implementace:

Pro co nejvetsi kompabilitu s klasickymi requesty by $webService->call('function' $args); vracela proxy object, do ktereho by knihovna dodatecne dohrala data. Dohrani dat by se spoustelo pri prvni ctenim z nektereho proxy objektu. Takze by to vypadalo asi takto:

$userService = $skautis->User;
$a = $user->call('UserDetail');
$b = $user->call('UserDetail');
$c = $user->call('UserDetail');
$d = $user->call('UserDetail');
// Doted by se nic nedelo, jen prazdne objekty cekajici na naplneni

// Prvni pristup
// Vezme vsechny definovane pozadavky, provede batch request a nahraje do vsech objektu data
// Smaze frontu pozadavku na Skautis
$id = $d['id']; 

Vnitrni implementace pomoci Guzzle batch request

Aby se dalo detekovat pristup k datum musela by metoda call z WebServiceInterface vracet nejaky objekt se kterym so dobre pracuje a zaroven se na nem da cekat na pristup. Vhodna by byla StdClass.