/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import * as https from 'node:https';
export function getGitHubToken() {
    return process.env['GITHUB_TOKEN'];
}
export async function fetchJson(url, redirectCount = 0) {
    const headers = {
        'User-Agent': 'gemini-cli',
    };
    const token = getGitHubToken();
    if (token) {
        headers.Authorization = `token ${token}`;
    }
    return new Promise((resolve, reject) => {
        https
            .get(url, { headers }, (res) => {
            if (res.statusCode === 302 || res.statusCode === 301) {
                if (redirectCount >= 10) {
                    return reject(new Error('Too many redirects'));
                }
                if (!res.headers.location) {
                    return reject(new Error('No location header in redirect response'));
                }
                fetchJson(res.headers.location, redirectCount++)
                    .then(resolve)
                    .catch(reject);
                return;
            }
            if (res.statusCode !== 200) {
                return reject(new Error(`Request failed with status code ${res.statusCode}`));
            }
            const chunks = [];
            res.on('data', (chunk) => chunks.push(chunk));
            res.on('end', () => {
                const data = Buffer.concat(chunks).toString();
                // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
                resolve(JSON.parse(data));
            });
        })
            .on('error', reject);
    });
}
//# sourceMappingURL=github_fetch.js.map