@veecode-platform/safira-cli
Version:
Generate a microservice project from your spec.
90 lines (89 loc) • 3.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CodeQuarkusService = void 0;
const tslib_1 = require("tslib");
const got_1 = tslib_1.__importDefault(require("got"));
const package_manager_enum_1 = require("../package-manager-enum");
const url_1 = require("url");
const string_utils_1 = require("../../../utils/string-utils");
const properties = tslib_1.__importStar(require("../../../properties.json"));
const https = tslib_1.__importStar(require("https"));
class CodeQuarkusService {
constructor() { }
getCode(name, { packageManager = package_manager_enum_1.PackageManager.maven, packageName = "br.com.safira", quarkusVersion, javaVersion }, dataBase) {
const searchParams = new url_1.URLSearchParams([
["a", name.toLowerCase().trim()],
["g", packageName.trim()],
["nc", "true"],
["e", "resteasy-reactive"],
["e", "resteasy-reactive-jackson"],
["e", "container-image-jib"],
["e", "hibernate-validator"],
["e", "smallrye-health"],
["e", "kubernetes"],
["j", javaVersion],
]);
if (dataBase) {
searchParams.append("e", `quarkus-jdbc-${dataBase.toLocaleLowerCase()}`);
searchParams.append("e", "quarkus-hibernate-orm-panache");
}
if (quarkusVersion) {
searchParams.append("S", `io.quarkus.platform:${quarkusVersion}`);
}
if (packageManager === package_manager_enum_1.PackageManager.gradle) {
searchParams.append("b", "GRADLE");
}
const paramsList = [];
searchParams.append("v", "1.0.0");
for (const element of searchParams.entries()) {
paramsList.push(`${element[0]}=${element[1]}`);
}
console.log(`https://code.quarkus.io/d?${paramsList.join("&")}`);
return got_1.default.stream("https://code.quarkus.io/d?", {
searchParams: searchParams,
headers: {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36",
},
retry: 5,
}).on("error", err => {
throw new Error(`Failed to get Quarkus code base. ${err.message}`);
});
}
getPublicVersions() {
return new Promise((resolve, reject) => {
const url = new URL(properties.quarkus["supported-versions-endpoint"]);
const options = {
hostname: url.hostname,
port: 443,
path: url.pathname,
method: "GET",
headers: {
Accept: "application/json",
"User-Agent": string_utils_1.StringUtils.getUserAgent(),
},
};
const req = https.request(options, res => {
res.setEncoding("utf8");
let body = "";
res.on("data", d => {
body += d;
});
res.on("end", () => {
if (res.statusCode === 200)
resolve(JSON.parse(body));
reject(new Error(`Error: ${res.statusMessage}`));
});
});
req.on("error", error => {
reject(error);
});
req.end();
});
}
static get instance() {
if (!this._instance)
this._instance = new this();
return this._instance;
}
}
exports.CodeQuarkusService = CodeQuarkusService;