Skip to main content
Glama

mcp-google-sheets

new-post.ts3.66 kB
import { PiecePropValueSchema, TriggerStrategy, createTrigger, } from '@activepieces/pieces-framework'; import { BASE_URL, spaceIdDropdown } from '../common'; import { DedupeStrategy, httpClient, HttpMethod, Polling, pollingHelper, } from '@activepieces/pieces-common'; import { circleAuth } from '../common/auth'; import { ListBasicPostsResponse } from '../common/types'; import dayjs from 'dayjs'; const polling: Polling<PiecePropValueSchema<typeof circleAuth>, { space_id?: number }> = { strategy: DedupeStrategy.TIMEBASED, async items({ auth, propsValue, lastFetchEpochMS }) { const spaceId = propsValue.space_id!; let page = 1; let hasMorePages = true; let stopFetching = false; const posts = []; do { const response = await httpClient.sendRequest<ListBasicPostsResponse>({ method: HttpMethod.GET, url: `${BASE_URL}/posts`, queryParams: { space_id: spaceId.toString(), status: 'published', sort: 'latest', page: page.toString(), per_page: '60', }, headers: { Authorization: `Bearer ${auth}`, 'Content-Type': 'application/json', }, }); const items = response.body.records || []; for (const post of items) { const publishedAt = dayjs(post.published_at).valueOf(); if (publishedAt < lastFetchEpochMS) { stopFetching = true; break; } posts.push(post); } if (stopFetching || lastFetchEpochMS === 0) break; page++; hasMorePages = response.body.has_next_page; } while (hasMorePages); return posts.map((post) => { return { epochMilliSeconds: dayjs(post.published_at).valueOf(), data: post, }; }); }, }; export const newPostCreated = createTrigger({ auth: circleAuth, name: 'new_post_created', displayName: 'New Post Created', description: 'Triggers when a new post is created in a specific space.', props: { space_id: spaceIdDropdown, }, type: TriggerStrategy.POLLING, async onEnable(context) { await pollingHelper.onEnable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async onDisable(context) { await pollingHelper.onDisable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async test(context) { return await pollingHelper.test(polling, context); }, async run(context) { return await pollingHelper.poll(polling, context); }, sampleData: { id: 2, status: 'published', name: 'Second post', slug: 'kiehn', comments_count: 0, hide_meta_info: false, published_at: '2024-06-27T08:31:30.777Z', created_at: '2024-06-27T08:31:30.781Z', updated_at: '2024-06-27T08:31:30.784Z', is_comments_enabled: true, is_liking_enabled: true, flagged_for_approval_at: null, body: { id: 2, name: 'body', body: '<div><!--block-->Iusto sint asperiores sed.</div>', record_type: 'Post', record_id: 2, created_at: '2024-06-27T08:31:30.000Z', updated_at: '2024-06-27T08:31:30.000Z', }, url: 'http://dickinson.circledev.net:31337/c/post/kiehn', space_name: 'post', space_slug: 'post', space_id: 1, user_id: 6, user_email: 'lyndon@frami.info', user_name: 'Rory Wyman', community_id: 1, user_avatar_url: 'https://example.com/avatar.png', cover_image_url: 'http://example.com/cover.jpeg', cover_image: 'identifier-string', cardview_thumbnail_url: 'http://example.com/thumbnail.jpeg', cardview_thumbnail: 'identifier-string', is_comments_closed: false, custom_html: '<div>Click Me!</div>', likes_count: 0, member_posts_count: 2, member_comments_count: 0, member_likes_count: 0, topics: [12, 43, 54], }, });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server