// @ts-check

const https = require("https");
const http = require("http");

/**
 * @typedef {object} GrabHostNamesReturn
 * @property {string} host
 * @property {number | string} port
 * @property {typeof http | typeof https} scheme
 * @property {string | number} user_id
 */

/**
 *  # Grab Names For Query
 * @returns {GrabHostNamesReturn}
 */
function grabHostNames() {
    const scheme = process.env.DSQL_HTTP_SCHEME;
    const localHost = process.env.DSQL_LOCAL_HOST;
    const localHostPort = process.env.DSQL_LOCAL_HOST_PORT;
    const remoteHost = process.env.DSQL_API_REMOTE_HOST?.match(/.*\..*/)
        ? process.env.DSQL_API_REMOTE_HOST
        : undefined;
    const remoteHostPort = process.env.DSQL_API_REMOTE_HOST_PORT?.match(/./)
        ? process.env.DSQL_API_REMOTE_HOST_PORT
        : undefined;

    return {
        host: remoteHost || localHost || "datasquirel.com",
        port: remoteHostPort || localHostPort || 443,
        scheme: scheme?.match(/^http$/i) ? http : https,
        user_id: String(process.env.DSQL_API_USER_ID || 0),
    };
}

module.exports = grabHostNames;