diff --git a/src/modules/Analysis/Analysis.ts b/src/modules/Analysis/Analysis.ts index cedd3b0ce..7efa2599e 100644 --- a/src/modules/Analysis/Analysis.ts +++ b/src/modules/Analysis/Analysis.ts @@ -3,7 +3,7 @@ import TagoIOModule from "../../common/TagoIOModule.ts"; import { openSSEListening } from "../../infrastructure/apiSSE.ts"; import getRegionObj, { setRuntimeRegion } from "../../regions.ts"; import ConsoleService from "../Services/Console.ts"; -import type { AnalysisConstructorParams, AnalysisEnvironment, analysisFunction } from "./analysis.types.ts"; +import type { AnalysisConstructorParams, AnalysisEnvironment, analysisFunction, AnalysisItem } from "./analysis.types.ts"; /** * Analysis execution context for TagoIO @@ -211,6 +211,15 @@ class Analysis extends TagoIOModule { return new Analysis(analysis, params); } + + public async info(): Promise { + const result = await this.doRequest({ + path: "/info", + method: "GET", + }); + + return result; + } } export default Analysis; diff --git a/src/modules/Analysis/analysis.types.ts b/src/modules/Analysis/analysis.types.ts index ceeae6e3d..9075d150c 100644 --- a/src/modules/Analysis/analysis.types.ts +++ b/src/modules/Analysis/analysis.types.ts @@ -1,4 +1,5 @@ import type { Regions, RegionsObj } from "../../regions.ts"; +import type { GenericID } from "../../common/common.types.ts"; type analysisFunction = (context: any, data: any) => any; @@ -24,6 +25,13 @@ interface AnalysisConstructorParams { loadEnvOnProcess?: boolean; } +interface AnalysisItem { + id: GenericID; + name: string; + run_on: "tago" | "external"; + active: boolean; +} + interface AnalysisEnvironment { [key: string]: string; } @@ -40,4 +48,4 @@ interface TagoContext { log: (...args: any[]) => void; } -export type { AnalysisConstructorParams, analysisFunction, AnalysisEnvironment, TagoContext }; +export type { AnalysisConstructorParams, analysisFunction, AnalysisEnvironment, TagoContext, AnalysisItem }; diff --git a/src/modules/Services/PDF.ts b/src/modules/Services/PDF.ts index b988f9c99..d0b5079a9 100644 --- a/src/modules/Services/PDF.ts +++ b/src/modules/Services/PDF.ts @@ -1,4 +1,5 @@ import TagoIOModule, { type GenericModuleParams } from "../../common/TagoIOModule.ts"; +import { getTDeployRegion } from "../../regions.ts"; interface PDFResult { status: boolean; @@ -92,7 +93,9 @@ class PDFService extends TagoIOModule { */ public async generate(params: PDFParams): Promise { try { - const response = await fetch("https://pdf.middleware.tago.io", { + const tdeploy = getTDeployRegion(this.params.region); + const pdfUri = tdeploy ? `https://pdf.${tdeploy}.tagoio.net` : "https://pdf.middleware.tago.io"; + const response = await fetch(pdfUri, { method: "POST", headers: { "Content-Type": "application/json", diff --git a/src/regions.ts b/src/regions.ts index 96ed60dfc..2ccd5208f 100644 --- a/src/regions.ts +++ b/src/regions.ts @@ -52,6 +52,18 @@ const regionsDefinition: Record = { /** Runtime region cache */ let runtimeRegion: RegionsObj | undefined; +/** + * Extracts TDeploy region configuration if present + * @param region Region configuration + * @returns TDeploy id or undefined + */ +function getTDeployRegion(region?: Regions | RegionsObj): string { + if (region && typeof region === "object" && "tdeploy" in region && region.tdeploy) { + return region.tdeploy.trim(); + } + return undefined; +} + /** * Get connection URI for Realtime and API * @internal @@ -59,14 +71,12 @@ let runtimeRegion: RegionsObj | undefined; */ function getConnectionURI(region?: Regions | RegionsObj): RegionsObj { // Handle tdeploy in RegionsObj - takes precedence - if (region && typeof region === "object" && "tdeploy" in region && region.tdeploy) { - const tdeploy = region.tdeploy.trim(); - if (tdeploy) { - return { + const tdeploy = getTDeployRegion(region); + if (tdeploy) { + return { api: `https://api.${tdeploy}.tagoio.net`, sse: `https://sse.${tdeploy}.tagoio.net/events`, }; - } } let normalizedRegion = region; @@ -138,4 +148,4 @@ function setRuntimeRegion(region: RegionsObj): void { export default getConnectionURI; export type { Regions, RegionsObj }; -export { regionsDefinition, setRuntimeRegion }; +export { regionsDefinition, setRuntimeRegion, getTDeployRegion };