index.ts•1.77 kB
import { createCustomApiCallAction, httpClient, HttpMethod } from '@activepieces/pieces-common';
import { PieceAuth, createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { createComment } from './lib/actions/create-comment';
import { createNewFeatureRequest } from './lib/actions/create-feature-request';
import { createBeamerPost } from './lib/actions/create-posts';
import { createVote } from './lib/actions/create-vote';
import { beamerCommon } from './lib/common';
import { newPost } from './lib/trigger/new-post';
export const beamerAuth = PieceAuth.SecretText({
displayName: 'API Key',
required: true,
description: 'API key acquired from your Beamer settings',
validate: async ({ auth }) => {
try {
const res = await httpClient.sendRequest({
method: HttpMethod.GET,
url: `${beamerCommon.baseUrl}/ping`,
headers: {
'Beamer-Api-Key': `${auth}`,
},
})
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid API key.',
};
}
},
});
export const beamer = createPiece({
displayName: 'Beamer',
description: 'Engage users with targeted announcements',
logoUrl: 'https://cdn.activepieces.com/pieces/beamer.png',
categories: [PieceCategory.PRODUCTIVITY],
auth: beamerAuth,
authors: ["i-nithin","kishanprmr","MoShizzle","abuaboud"],
actions: [
createBeamerPost,
createNewFeatureRequest,
createComment,
createVote,
createCustomApiCallAction({
baseUrl: () => beamerCommon.baseUrl,
auth: beamerAuth,
authMapping: async (auth) => ({
'Beamer-Api-Key': `${auth}`,
}),
}),
],
triggers: [newPost],
});