public static function execute($requests) { $jsonRpcRequest = array(); foreach ($requests as $request) { $parameters = array(); foreach ($request->getParameters() as $parameterName => $parameterVal) { $parameters[$parameterName] = $parameterVal['value']; } $jsonRpcRequest[] = array('id' => $request->getBatchKey(), 'method' => $request->getRpcName(), 'params' => $parameters, 'apiVersion' => 'v1'); } $httpRequest = new apiHttpRequest($request->getRpcPath()); $httpRequest->setRequestHeaders(array('Content-Type' => 'application/json')); $httpRequest->setRequestMethod('POST'); $httpRequest->setPostBody(json_encode($jsonRpcRequest)); $httpRequest = apiClient::$io->authenticatedRequest($httpRequest); if (($decodedResponse = json_decode($httpRequest->getResponseBody(), true)) != false) { $ret = array(); foreach ($decodedResponse as $response) { $ret[$response['id']] = self::checkNextLink($response['result']); } return $ret; } else { throw new apiServiceException("Invalid json returned by the json-rpc end-point"); } }
public function testProcessEntityRequest() { $io = new apiCurlIO(); $req = new apiHttpRequest("http://localhost.com"); $req->setRequestMethod("POST"); // Verify that the content-length is calculated. $req->setPostBody("{}"); $io->processEntityRequest($req); $this->assertEquals(2, $req->getRequestHeader("content-length")); // Test an empty post body. $req->setPostBody(""); $io->processEntityRequest($req); $this->assertEquals(0, $req->getRequestHeader("content-length")); // Test a null post body. $req->setPostBody(null); $io->processEntityRequest($req); $this->assertEquals(0, $req->getRequestHeader("content-length")); // Set an array in the postbody, and verify that it is url-encoded. $req->setPostBody(array("a" => "1", "b" => 2)); $io->processEntityRequest($req); $this->assertEquals(7, $req->getRequestHeader("content-length")); $this->assertEquals(apiCurlIO::FORM_URLENCODED, $req->getRequestHeader("content-type")); $this->assertEquals("a=1&b=2", $req->getPostBody()); // Verify that the content-type isn't reset. $payload = array("a" => "1", "b" => 2); $req->setPostBody($payload); $req->setRequestHeaders(array("content-type" => "multipart/form-data")); $io->processEntityRequest($req); $this->assertEquals("multipart/form-data", $req->getRequestHeader("content-type")); $this->assertEquals($payload, $req->getPostBody()); }