Skip to content

Commit a831918

Browse files
committed
Add an ability to use the library via SDK.
1 parent de9b2ed commit a831918

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

src/PleskX/Api/Client.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Copyright 1999-2016. Parallels IP Holdings GmbH.
33

44
namespace PleskX\Api;
5+
use PleskX\Api\Client\Exception;
56
use SimpleXMLElement;
67

78
/**
@@ -136,7 +137,12 @@ public function request($request, $mode = self::RESPONSE_SHORT)
136137
}
137138
}
138139

139-
$xml = $this->_performHttpRequest($request);
140+
if ('sdk' == $this->_protocol) {
141+
$requestXml = new SimpleXMLElement((string)$request);
142+
$xml = \pm_ApiRpc::getService()->call($requestXml->children()[0]->asXml());
143+
} else {
144+
$xml = $this->_performHttpRequest($request);
145+
}
140146

141147
return (self::RESPONSE_FULL == $mode) ? $xml : $xml->xpath('//result')[0];
142148
}
@@ -148,7 +154,7 @@ public function request($request, $mode = self::RESPONSE_SHORT)
148154
* @return XmlResponse
149155
* @throws Exception
150156
*/
151-
protected function _performHttpRequest($request)
157+
private function _performHttpRequest($request)
152158
{
153159
$curl = curl_init();
154160

@@ -196,7 +202,7 @@ public function multiRequest($requests, $mode = self::RESPONSE_SHORT)
196202

197203
foreach ($requests as $request) {
198204
if ($request instanceof SimpleXMLElement) {
199-
// TODO: implement
205+
throw new Exception('SimpleXML type of request is not supported for multi requests.');
200206
} else {
201207
if (is_array($request)) {
202208
$request = $this->_arrayToXml($request, $requestXml)->asXML();
@@ -207,7 +213,11 @@ public function multiRequest($requests, $mode = self::RESPONSE_SHORT)
207213
$responses[] = $this->request($request);
208214
}
209215

210-
$responseXml = $this->_performHttpRequest($requestXml->asXML());
216+
if ('sdk' == $this->_protocol) {
217+
throw new Exception('Multi requests are not supported via SDK.');
218+
} else {
219+
$responseXml = $this->_performHttpRequest($requestXml->asXML());
220+
}
211221

212222
$responses = [];
213223
foreach ($responseXml->children() as $childNode) {

src/PleskX/Api/InternalClient.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
// Copyright 1999-2016. Parallels IP Holdings GmbH.
3+
4+
namespace PleskX\Api;
5+
6+
/**
7+
* Internal client for Plesk API-RPC (via SDK)
8+
*/
9+
class InternalClient extends Client
10+
{
11+
public function __construct()
12+
{
13+
parent::__construct('localhost', 0, 'sdk');
14+
}
15+
}

0 commit comments

Comments
 (0)