Introduced xlvask module with request handling, endpoints, and route mappings. Implemented functionalities to fetch usage logs, vehicles, and customers from the API, along with basic authentication support. Includes error handling and configuration setup for seamless integration.
64 lines
2.3 KiB
PHP
64 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace xlvask\classes;
|
|
require_once WD . '/modules/xlvask/interfaces/xlvask_request_i.php';
|
|
|
|
use xlvask\interfaces\xlvask_request_i;
|
|
|
|
class xlvask_request implements xlvask_request_i
|
|
{
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function sendRequest(string $url, string $method = 'GET', array $data = [], array $headers = []): array
|
|
{
|
|
// Initialize cURL
|
|
$ch = curl_init();
|
|
$method = strtoupper($method);
|
|
// Set the URL
|
|
curl_setopt($ch, CURLOPT_URL, $url . ($method === 'GET' && !empty($data) ? '?' . http_build_query($data) : ''));
|
|
// Set the HTTP method
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
|
|
// Set the data to send with the request
|
|
if ($method !== 'GET') {
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
|
$headers[] = 'Content-Type: application/json';
|
|
};
|
|
// Set the headers
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
// Set options to return the response and handle SSL
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
|
// Execute the request
|
|
$response = curl_exec($ch);
|
|
// Check for errors
|
|
if (curl_errno($ch)) {
|
|
throw new \Exception('cURL error: ' . curl_error($ch));
|
|
}
|
|
// Get the HTTP status code
|
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
// Close the cURL session
|
|
curl_close($ch);
|
|
// Check if the response is successful
|
|
if ($httpCode < 200 || $httpCode >= 300) {
|
|
throw new \Exception('Request failed with status code ' . $httpCode);
|
|
}
|
|
// Check if the response is valid JSON
|
|
$responseData = json_decode($response, true);
|
|
if (json_last_error() !== JSON_ERROR_NONE) {
|
|
throw new \Exception('Invalid JSON response: ' . json_last_error_msg());
|
|
}
|
|
// Return the response data
|
|
return $responseData;
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function generateBasicAuthHeader(string $username, string $password): string
|
|
{
|
|
return 'Authorization: Basic ' . base64_encode($username . ':' . $password);
|
|
}
|
|
} |