Rewrite executeApiCall for v2 API (Authorization header)

This commit is contained in:
Keith Solomon
2026-08-03 13:01:52 -05:00
parent 93b934c5cc
commit e25a069e00
+30 -6
View File
@@ -48,14 +48,25 @@ function ensureUserHasApiKey($user) {
/**
* Executes a GET request to the given API endpoint and returns the JSON response as an associative array.
*
* @param string $apiEndpoint The URL of the API endpoint to call
* Uses the v2 Torn API authentication scheme by sending the API key in an
* `Authorization: ApiKey <key>` header. The key is never transmitted as a
* query parameter.
*
* @throws Exception If the API call fails or if the response is invalid JSON
* @param string $apiEndpoint The URL of the API endpoint to call
* @param string $apiKey The v2 API key to authenticate with
*
* @throws ApiKeyMissingException If the API key is empty
* @throws CurlErrorException If the cURL call fails
* @throws JsonDataException If the response body cannot be decoded as JSON
*
* @return array The JSON response from the API
*/
function executeApiCall($apiEndpoint) {
$headers = ["Content-Type: application/json"];
function executeApiCall($apiEndpoint, $apiKey) {
if (empty($apiKey)) {
throw new ApiKeyMissingException('API key is required for executeApiCall.');
}
$headers = ["Authorization: ApiKey $apiKey"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiEndpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@@ -64,7 +75,7 @@ function executeApiCall($apiEndpoint) {
$response = curl_exec($ch);
if (curl_errno($ch)) {
throw new CurlErrorException("cURL error: " . curl_error($ch));
throw new CurlErrorException('cURL error: ' . curl_error($ch));
}
curl_close($ch);
@@ -72,7 +83,7 @@ function executeApiCall($apiEndpoint) {
$responseData = json_decode($response, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new JsonDataException("Failed to decode JSON response: " . json_last_error_msg());
throw new JsonDataException('Failed to decode JSON response: ' . json_last_error_msg());
}
return $responseData;
@@ -238,3 +249,16 @@ function getSign($number) {
return '$';
}
/**
* Print a variable to the console for debugging purposes.
*
* @param mixed $data The data to print to the console.
*
* @return void
*/
function consoleLog( $data ) {
echo '<script>';
echo 'console.log(' . json_encode($data) . ')';
echo '</script>';
}