112 lines
3.3 KiB
PHP
112 lines
3.3 KiB
PHP
<?php
|
|
|
|
class HTTP
|
|
{
|
|
/**
|
|
* Make a POST request with JSON or form data
|
|
*/
|
|
public static function post($url, $data = [], $headers = [])
|
|
{
|
|
$ch = curl_init();
|
|
|
|
$default_headers = [
|
|
'Content-Type: application/x-www-form-urlencoded',
|
|
'Accept: application/json',
|
|
'User-Agent: Web-App-Starter/1.0'
|
|
];
|
|
|
|
$headers = array_merge($default_headers, $headers);
|
|
|
|
curl_setopt_array($ch, [
|
|
CURLOPT_URL => $url,
|
|
CURLOPT_POST => true,
|
|
CURLOPT_POSTFIELDS => is_array($data) ? http_build_query($data) : $data,
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_SSL_VERIFYPEER => true,
|
|
CURLOPT_SSL_VERIFYHOST => 2,
|
|
CURLOPT_TIMEOUT => 30,
|
|
CURLOPT_HTTPHEADER => $headers,
|
|
CURLOPT_FOLLOWLOCATION => true,
|
|
CURLOPT_MAXREDIRS => 3
|
|
]);
|
|
|
|
$response = curl_exec($ch);
|
|
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
$error = curl_error($ch);
|
|
curl_close($ch);
|
|
|
|
if ($error) {
|
|
return ['error' => 'cURL Error: ' . $error, 'http_code' => 0];
|
|
}
|
|
|
|
$decoded = json_decode($response, true);
|
|
|
|
return [
|
|
'success' => $http_code >= 200 && $http_code < 300,
|
|
'http_code' => $http_code,
|
|
'raw' => $response,
|
|
'data' => $decoded ?: $response,
|
|
'error' => $http_code >= 400 ? "HTTP Error $http_code" : null
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Make a GET request
|
|
*/
|
|
public static function get($url, $params = [], $headers = [])
|
|
{
|
|
if (!empty($params)) {
|
|
$url .= (strpos($url, '?') === false ? '?' : '&') . http_build_query($params);
|
|
}
|
|
|
|
$ch = curl_init();
|
|
|
|
$default_headers = [
|
|
'Accept: application/json',
|
|
'User-Agent: Web-App-Starter/1.0'
|
|
];
|
|
|
|
$headers = array_merge($default_headers, $headers);
|
|
|
|
curl_setopt_array($ch, [
|
|
CURLOPT_URL => $url,
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_SSL_VERIFYPEER => true,
|
|
CURLOPT_SSL_VERIFYHOST => 2,
|
|
CURLOPT_TIMEOUT => 30,
|
|
CURLOPT_HTTPHEADER => $headers,
|
|
CURLOPT_FOLLOWLOCATION => true,
|
|
CURLOPT_MAXREDIRS => 3
|
|
]);
|
|
|
|
$response = curl_exec($ch);
|
|
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
$error = curl_error($ch);
|
|
curl_close($ch);
|
|
|
|
if ($error) {
|
|
return ['error' => 'cURL Error: ' . $error, 'http_code' => 0];
|
|
}
|
|
|
|
$decoded = json_decode($response, true);
|
|
|
|
return [
|
|
'success' => $http_code >= 200 && $http_code < 300,
|
|
'http_code' => $http_code,
|
|
'raw' => $response,
|
|
'data' => $decoded ?: $response,
|
|
'error' => $http_code >= 400 ? "HTTP Error $http_code" : null
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Make a request with Bearer token authentication
|
|
*/
|
|
public static function get_with_token($url, $token, $params = [])
|
|
{
|
|
return self::get($url, $params, [
|
|
'Authorization: Bearer ' . $token
|
|
]);
|
|
}
|
|
}
|