public function InstapageCmsPluginDrupal8Connector::remoteRequest in Instapage plugin 8.3
Same name and namespace in other branches
- 7.3 core/connectors/InstapageCmsPluginDrupal8Connector.php \InstapageCmsPluginDrupal8Connector::remoteRequest()
Performsremote request in a way specific for Drupal 7.
Parameters
string $url URL for the request.:
array $data Data that will be passed in the request.:
array $headers Headers for the request.:
string $method Method of the request. 'POST' or 'GET'.:
Return value
array Request result in a form of associative array.
2 calls to InstapageCmsPluginDrupal8Connector::remoteRequest()
- InstapageCmsPluginDrupal8Connector::remoteGet in core/
connectors/ InstapageCmsPluginDrupal8Connector.php - Performs remote GET request.
- InstapageCmsPluginDrupal8Connector::remotePost in core/
connectors/ InstapageCmsPluginDrupal8Connector.php - Performs remote POST request.
File
- core/
connectors/ InstapageCmsPluginDrupal8Connector.php, line 243
Class
- InstapageCmsPluginDrupal8Connector
- Class that utilizes native Drupal 8 functions to perform actions like remote requests and DB operations.
Code
public function remoteRequest($url, $data, $headers = array(), $method = 'POST') {
try {
if ($method == 'POST' && (!is_array($data) || !count($data))) {
$data = array(
'ping' => true,
);
InstapageCmsPluginHelper::writeDiagnostics($data, 'Request (' . $method . ') data empty. Ping added.');
}
$formParams = $data;
if ($method == 'GET' && is_array($data)) {
$dataString = http_build_query($data, '', '&');
$url .= '?' . urldecode($dataString);
$formParams = array();
}
$cookies = isset($data['cookies']) ? $data['cookies'] : array();
$cookieJar = false;
if (!empty($cookies)) {
$domain = parse_url($url, PHP_URL_HOST);
$cookieJar = \GuzzleHttp\Cookie\CookieJar::fromArray($cookies, $domain);
}
$client = \Drupal::httpClient();
$request = $client
->request($method, $url, array(
'allow_redirects' => array(
'max' => 5,
),
'connect_timeout' => 45,
'synchronous' => true,
'cookies' => $cookieJar,
'version' => '1.0',
'form_params' => $formParams,
'headers' => $headers,
));
if ($request
->getStatusCode() === 200) {
return $this
->prepareResponse($request);
}
else {
return [
'body' => json_encode([
'status' => 'ERROR',
'message' => InstapageCmsPluginConnector::lang('Request failed with status %s.', $request
->getStatusCode()),
]),
];
}
} catch (Exception $e) {
return [
'body' => json_encode([
'status' => 'ERROR',
'message' => InstapageCmsPluginConnector::lang('Request failed. ') . $e
->getMessage(),
]),
];
}
}