Integration API.
This commit is contained in:
parent
98de7e69d1
commit
bb4d7e0b32
|
@ -1,12 +1,17 @@
|
||||||
import { getDefinition, getDefinitions } from "../../integrations"
|
import { getDefinition, getDefinitions } from "../../integrations"
|
||||||
import { SourceName, UserCtx } from "@budibase/types"
|
import {
|
||||||
|
SourceName,
|
||||||
|
UserCtx,
|
||||||
|
FetchIntegrationsResponse,
|
||||||
|
FindIntegrationResponse,
|
||||||
|
} from "@budibase/types"
|
||||||
|
|
||||||
const DISABLED_EXTERNAL_INTEGRATIONS = [
|
const DISABLED_EXTERNAL_INTEGRATIONS = [
|
||||||
SourceName.AIRTABLE,
|
SourceName.AIRTABLE,
|
||||||
SourceName.BUDIBASE,
|
SourceName.BUDIBASE,
|
||||||
]
|
]
|
||||||
|
|
||||||
export async function fetch(ctx: UserCtx) {
|
export async function fetch(ctx: UserCtx<void, FetchIntegrationsResponse>) {
|
||||||
const definitions = await getDefinitions()
|
const definitions = await getDefinitions()
|
||||||
for (let disabledIntegration of DISABLED_EXTERNAL_INTEGRATIONS) {
|
for (let disabledIntegration of DISABLED_EXTERNAL_INTEGRATIONS) {
|
||||||
delete definitions[disabledIntegration]
|
delete definitions[disabledIntegration]
|
||||||
|
@ -14,10 +19,14 @@ export async function fetch(ctx: UserCtx) {
|
||||||
ctx.body = definitions
|
ctx.body = definitions
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function find(ctx: UserCtx) {
|
export async function find(ctx: UserCtx<void, FindIntegrationResponse>) {
|
||||||
const sourceType = ctx.params?.type
|
const sourceType = ctx.params?.type
|
||||||
if (DISABLED_EXTERNAL_INTEGRATIONS.indexOf(sourceType) !== -1) {
|
if (DISABLED_EXTERNAL_INTEGRATIONS.indexOf(sourceType) !== -1) {
|
||||||
ctx.throw(400, `Invalid source type - ${sourceType} is not supported.`)
|
ctx.throw(400, `Invalid source type - ${sourceType} is not supported.`)
|
||||||
}
|
}
|
||||||
ctx.body = await getDefinition(ctx.params.type)
|
const integration = await getDefinition(ctx.params.type)
|
||||||
|
if (!integration) {
|
||||||
|
ctx.throw(400, "Integration not found")
|
||||||
|
}
|
||||||
|
ctx.body = integration
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,3 +10,4 @@ export * from "./user"
|
||||||
export * from "./rowAction"
|
export * from "./rowAction"
|
||||||
export * from "./automation"
|
export * from "./automation"
|
||||||
export * from "./component"
|
export * from "./component"
|
||||||
|
export * from "./integration"
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { Integration, SourceName } from "../../../sdk"
|
||||||
|
|
||||||
|
export type FetchIntegrationsResponse = Record<
|
||||||
|
SourceName,
|
||||||
|
Integration | undefined
|
||||||
|
>
|
||||||
|
|
||||||
|
export type FindIntegrationResponse = Integration
|
Loading…
Reference in New Issue