Files
oneuptime/Common/Server/API/OpenSourceDeploymentAPI.ts

80 lines
2.6 KiB
TypeScript

import OpenSourceDeployment from "../../Models/DatabaseModels/OpenSourceDeployment";
import { JSONObject } from "../../Types/JSON";
import URL from "../../Types/API/URL";
import API from "../../Utils/API";
import OpenSourceDeploymentService, {
Service as OpenSourceDeploymentServiceType,
} from "../Services/OpenSourceDeploymentService";
import { OpenSourceDeploymentWebhookUrl } from "../EnvironmentConfig";
import logger from "../Utils/Logger";
import Response from "../Utils/Response";
import {
ExpressRequest,
ExpressResponse,
NextFunction,
} from "../Utils/Express";
import BaseAPI from "./BaseAPI";
export default class OpenSourceDeploymentAPI extends BaseAPI<
OpenSourceDeployment,
OpenSourceDeploymentServiceType
> {
public constructor() {
super(OpenSourceDeployment, OpenSourceDeploymentService);
this.router.post(
`${new this.entityType().getCrudApiPath()?.toString()}/register`,
async (
req: ExpressRequest,
res: ExpressResponse,
next: NextFunction,
) => {
try {
const body: JSONObject = req.body;
const deployment: OpenSourceDeployment =
new OpenSourceDeployment();
deployment.email = (body["email"] as string) || "";
deployment.name = (body["name"] as string) || "";
deployment.companyName =
(body["companyName"] as string) || "";
deployment.companyPhoneNumber =
(body["companyPhoneNumber"] as string) || "";
deployment.oneuptimeVersion =
(body["oneuptimeVersion"] as string) || "unknown";
deployment.instanceUrl =
(body["instanceUrl"] as string) || "";
await OpenSourceDeploymentService.create({
data: deployment,
props: {
isRoot: true,
},
});
if (OpenSourceDeploymentWebhookUrl) {
API.post({
url: URL.fromString(OpenSourceDeploymentWebhookUrl),
data: {
email: deployment.email?.toString() || "",
name: deployment.name?.toString() || "",
companyName: deployment.companyName?.toString() || "",
companyPhoneNumber: deployment.companyPhoneNumber?.toString() || "",
oneuptimeVersion: deployment.oneuptimeVersion?.toString() || "",
instanceUrl: deployment.instanceUrl?.toString() || "",
},
}).catch((err: Error) => {
logger.error(err);
});
}
return Response.sendEmptySuccessResponse(req, res);
} catch (err) {
next(err);
}
},
);
}
}