Skip to content
This repository was archived by the owner on Oct 29, 2025. It is now read-only.

Commit 52d6300

Browse files
Merge pull request #48 from MichaelJ2324/2.0
SUPP-1841 - Fix Bulk Request Handling oh PHP 7.3
2 parents 2e39879 + 3a3920d commit 52d6300

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

src/Endpoint/Data/BulkRequest.php

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,20 @@ public function asArray($compile = TRUE){
4242
$request = $value;
4343
}
4444
if ($request instanceof AbstractRequest) {
45-
$compiled[self::BULK_REQUEST_DATA_NAME][] = $this->extractRequest($request);
45+
$request = $this->extractRequest($request);
46+
if ($request){
47+
$compiled[self::BULK_REQUEST_DATA_NAME][] = $request;
48+
}
49+
} else {
50+
if (isset($request->url)
51+
&& isset($request->method)){
52+
$compiled = array(
53+
'url' => $request->url,
54+
'method' => $request->method,
55+
'headers' => isset($request->headers)?$request->headers:array(),
56+
'data' => isset($request->data)?$request->data:""
57+
);
58+
}
4659
}
4760
}
4861
}
@@ -57,13 +70,16 @@ public function asArray($compile = TRUE){
5770
*/
5871
protected function extractRequest(AbstractRequest $Request){
5972
$curlOptions = $Request->getCurlOptions();
60-
$url = $curlOptions[CURLOPT_URL];
73+
$url = isset($curlOptions[CURLOPT_URL])?$curlOptions[CURLOPT_URL]:"";
74+
if (empty($url)){
75+
return false;
76+
}
6177
$urlArray = explode("/rest/",$url);
6278
return array(
6379
'url' => "/".$urlArray[1],
6480
'method' => $Request->getMethod(),
65-
'headers' => $curlOptions[CURLOPT_HTTPHEADER],
66-
'data' => $curlOptions[CURLOPT_POSTFIELDS]
81+
'headers' => isset($curlOptions[CURLOPT_HTTPHEADER])?$curlOptions[CURLOPT_HTTPHEADER]:array(),
82+
'data' => isset($curlOptions[CURLOPT_POSTFIELDS])?$curlOptions[CURLOPT_POSTFIELDS]:null
6783
);
6884
}
6985
}

tests/Endpoint/Data/BulkRequestTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,21 @@ public function testExtractRequest(){
115115
$this->assertArrayHasKey('headers',$result);
116116
$this->assertArrayHasKey('data',$result);
117117
$this->assertEquals(json_encode(array('foo'=>'bar')),$result['data']);
118+
119+
$Data = new BulkRequest();
120+
$ReflectedData = new \ReflectionClass('Sugarcrm\\REST\\Endpoint\\Data\\BulkRequest');
121+
$extractRequest = $ReflectedData->getMethod('extractRequest');
122+
$extractRequest->setAccessible(TRUE);
123+
$Request = new JSON();
124+
$Request->setURL('http://localhost/rest/v10/Accounts');
125+
$Request->setMethod(JSON::HTTP_GET);
126+
$result = $extractRequest->invoke($Data,$Request);
127+
$this->assertArrayHasKey('url',$result);
128+
$this->assertEquals('/v10/Accounts',$result['url']);
129+
$this->assertArrayHasKey('method',$result);
130+
$this->assertEquals(JSON::HTTP_GET,$result['method']);
131+
$this->assertArrayHasKey('headers',$result);
132+
$this->assertArrayHasKey('data',$result);
133+
$this->assertEquals(null,$result['data']);
118134
}
119135
}

0 commit comments

Comments
 (0)