// @ts-check

import https from "https";
import http from "http";

type GrabHostNamesReturn = {
    host: string;
    port: number | string;
    scheme: typeof http | typeof https;
    user_id: string | number;
};

type Param = {
    userId?: string | number;
};

/**
 *  # Grab Names For Query
 */
export default function grabHostNames(param?: Param): GrabHostNamesReturn {
    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: param?.userId || String(process.env.DSQL_API_USER_ID || 0),
    };
}
