Add xlvask module API integration

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.
This commit is contained in:
Jepp9350
2025-05-08 14:03:13 +02:00
parent 5550e2e57f
commit 023b6992b6
8 changed files with 428 additions and 1 deletions
@@ -0,0 +1,64 @@
<?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);
}
}