MCPcopy Index your code
hub / github.com/simstudioai/sim / pollWebhook

Function pollWebhook

apps/sim/lib/webhooks/polling/google-drive.ts:85–201  ·  view source on GitHub ↗
(ctx: PollWebhookContext)

Source from the content-addressed store, hash-verified

83 label: 'Google Drive',
84
85 async pollWebhook(ctx: PollWebhookContext): Promise<'success' | 'failure'> {
86 const { webhookData, workflowData, requestId, logger } = ctx
87 const webhookId = webhookData.id
88
89 try {
90 const accessToken = await resolveOAuthCredential(
91 webhookData,
92 'google-drive',
93 requestId,
94 logger
95 )
96
97 const config = getProviderConfig<GoogleDriveWebhookConfig>(webhookData.providerConfig)
98
99 // First poll (or re-seed after 410): seed page token, preserve any existing known file IDs.
100 if (!config.pageToken) {
101 const startPageToken = await getStartPageToken(accessToken, config, requestId, logger)
102 await updateWebhookProviderConfig(
103 webhookId,
104 { pageToken: startPageToken, knownFileIds: config.knownFileIds ?? [] },
105 logger
106 )
107 await markWebhookSuccess(webhookId, logger)
108 logger.info(
109 `[${requestId}] First poll for webhook ${webhookId}, seeded pageToken: ${startPageToken}`
110 )
111 return 'success'
112 }
113
114 const { changes, newStartPageToken } = await fetchChanges(
115 accessToken,
116 config,
117 requestId,
118 logger
119 )
120
121 if (!changes.length) {
122 await updateWebhookProviderConfig(webhookId, { pageToken: newStartPageToken }, logger)
123 await markWebhookSuccess(webhookId, logger)
124 logger.info(`[${requestId}] No changes found for webhook ${webhookId}`)
125 return 'success'
126 }
127
128 const filteredChanges = filterChanges(changes, config)
129
130 if (!filteredChanges.length) {
131 await updateWebhookProviderConfig(webhookId, { pageToken: newStartPageToken }, logger)
132 await markWebhookSuccess(webhookId, logger)
133 logger.info(
134 `[${requestId}] ${changes.length} changes found but none match filters for webhook ${webhookId}`
135 )
136 return 'success'
137 }
138
139 logger.info(
140 `[${requestId}] Found ${filteredChanges.length} matching changes for webhook ${webhookId}`
141 )
142

Callers

nothing calls this directly

Calls 12

resolveOAuthCredentialFunction · 0.90
getProviderConfigFunction · 0.90
markWebhookSuccessFunction · 0.90
markWebhookFailedFunction · 0.90
getStartPageTokenFunction · 0.85
fetchChangesFunction · 0.85
filterChangesFunction · 0.85
processChangesFunction · 0.85
infoMethod · 0.80
errorMethod · 0.80
warnMethod · 0.65

Tested by

no test coverage detected