mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) GET endpoint for webhooks returns now data in format {webhooks:[...]}
Summary:
Rework of endpoint GET for webhooks to make it coherent with other endpoints. Now data should be return in {webhooks:[{id:"...",fields:{"..."}]} format
```
{
"webhooks": [
{
"id": ...
"fields": {
"url": ...
"unsubscribeKey": ...
"eventTypes": [
"add",
"update"
],
"isReadyColumn": null,
"tableId": "...",
"enabled": false,
"name": "...",
"memo": "..."
},
"usage": {
"status": "idle",
"numWaiting": 0,
"lastEventBatch": null
}
},
{
"id": "...",
"fields": {
"url": "...",
"unsubscribeKey": "...",
"eventTypes": [
"add",
"update"
],
"isReadyColumn": null,
"tableId": "...",
"enabled": true,
"name": "...",
"memo": "..."
},
"usage": {
"status": "error",
"numWaiting": 0,
"updatedTime": 1689076978098,
"lastEventBatch": {
"status": "rejected",
"httpStatus": 404,
"errorMessage": "{\"success\":false,\"error\":{\"message\":\"Alias 5a9bf6a8-4865-403a-bec6-b4ko not found\",\"id\":null}}",
"size": 49,
"attempts": 5
},
"lastSuccessTime": null,
"lastFailureTime": 1689076978097,
"lastErrorMessage": "{\"success\":false,\"error\":{\"message\":\"Alias 5a9bf6a8-4865-403a-bec6-b4ko not found\",\"id\":null}}",
"lastHttpStatus": 404
}
}
]
}
```
Test Plan: new test added to check if GET data fromat is correct. Other tests fixed to handle changed endpoint.
Reviewers: paulfitz
Reviewed By: paulfitz
Differential Revision: https://phab.getgrist.com/D3966
This commit is contained in:
@@ -8,7 +8,13 @@ import {fromTableDataAction, RowRecord, TableColValues, TableDataAction} from 'a
|
||||
import {StringUnion} from 'app/common/StringUnion';
|
||||
import {MetaRowRecord} from 'app/common/TableData';
|
||||
import {CellDelta} from 'app/common/TabularDiff';
|
||||
import {WebhookBatchStatus, WebhookStatus, WebhookSummary, WebhookUsage} from 'app/common/Triggers';
|
||||
import {
|
||||
WebhookBatchStatus,
|
||||
WebhookStatus,
|
||||
WebhookSummary,
|
||||
WebhookSummaryCollection,
|
||||
WebhookUsage
|
||||
} from 'app/common/Triggers';
|
||||
import {decodeObject} from 'app/plugin/objtypes';
|
||||
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
||||
import {makeExceptionalDocSession} from 'app/server/lib/DocSession';
|
||||
@@ -246,7 +252,7 @@ export class DocTriggers {
|
||||
/**
|
||||
* Creates summary for all webhooks in the document.
|
||||
*/
|
||||
public async summary(): Promise<WebhookSummary[]> {
|
||||
public async summary(): Promise<WebhookSummaryCollection> {
|
||||
// Prepare some data we will use.
|
||||
const docData = this._activeDoc.docData!;
|
||||
const triggersTable = docData.getMetaTable("_grist_Triggers");
|
||||
@@ -254,7 +260,7 @@ export class DocTriggers {
|
||||
const getColId = docData.getMetaTable("_grist_Tables_column").getRowPropFunc("colId");
|
||||
const getUrl = async (id: string) => (await this._getWebHook(id))?.url ?? '';
|
||||
const getUnsubscribeKey = async (id: string) => (await this._getWebHook(id))?.unsubscribeKey ?? '';
|
||||
const result: WebhookSummary[] = [];
|
||||
const resultTable: WebhookSummary[] = [];
|
||||
|
||||
// Go through all triggers int the document that we have.
|
||||
for (const t of triggersTable.getRecords()) {
|
||||
@@ -291,10 +297,10 @@ export class DocTriggers {
|
||||
// Create some statics and status info.
|
||||
usage: await this._stats.getUsage(act.id, this._webHookEventQueue),
|
||||
};
|
||||
result.push(entry);
|
||||
resultTable.push(entry);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
return {webhooks: resultTable};
|
||||
}
|
||||
|
||||
public getWebhookTriggerRecord(webhookId: string) {
|
||||
|
||||
Reference in New Issue
Block a user