UNPKG

test-this-package-today

Version:

Event Inc is a fully managed event bus lets you send and receive data across mission-critical cloud apps, databases and warehouses.

69 lines (60 loc) 1.71 kB
import { OauthConnections } from '@event-inc/types'; interface OauthConnectionOptions { OAUTH_APP_CLIENT_ID: string; OAUTH_APP_CLIENT_SECRET: string; type: OauthConnections; } enum OauthConnectionTypes { Xero = 'xero', } const endpoints = { xero: 'https://identity.xero.com/connect/token', }; export class OauthConnection { private readonly OAUTH_APP_CLIENT_ID: string; private readonly OAUTH_APP_CLIENT_SECRET: string; private readonly type: string; constructor({ OAUTH_APP_CLIENT_ID, OAUTH_APP_CLIENT_SECRET, type, }: OauthConnectionOptions) { this.OAUTH_APP_CLIENT_ID = OAUTH_APP_CLIENT_ID; this.OAUTH_APP_CLIENT_SECRET = OAUTH_APP_CLIENT_SECRET; this.type = type; } getOauthDetails = () => { switch (this.type) { case OauthConnectionTypes.Xero: return { endpoint: endpoints[this.type], headers: { 'Content-Type': 'application/x-www-form-urlencoded', Authorization: `Basic ${Buffer.from( `${this.OAUTH_APP_CLIENT_ID}:${this.OAUTH_APP_CLIENT_SECRET}` ).toString('base64')}`, }, sourceIntegrationDefinitionId: 'conn_def_src_MTY4ODc2MzM3ODY2OQ::OWE2NDdmYjAtZjFlMy00MWEyLTgwMTctMzVhODMxYTBkOWNi', destinationIntegrationDefinitionId: 'conn_def_dst_MTY4NjA3MDUyOTk1OA::MTgwM2E1NGItMTYxMC00NjE4LTk1NTItNjBjY2I1NmY1ZmQx', }; } }; getOauthFormData = ({ accessToken, refreshToken, }: { accessToken: string; refreshToken: string; }) => { switch (this.type) { case OauthConnectionTypes.Xero: return { XERO_REFRESH_TOKEN: refreshToken, XERO_ACCESS_TOKEN: accessToken, XERO_CLIENT_ID: this.OAUTH_APP_CLIENT_ID, XERO_CLIENT_SECRET: this.OAUTH_APP_CLIENT_SECRET, }; } }; }