n8n-nodes-feishu-lark
Version:
n8n custom nodes for n8n to interact with Feishu/Lark, including Lark Bot, Lark MCP, and Lark Trigger.
226 lines • 8.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseJsonParameter = void 0;
exports.larkApiRequestSheetList = larkApiRequestSheetList;
exports.larkApiRequestCalendarEventList = larkApiRequestCalendarEventList;
exports.larkApiRequestCalendarList = larkApiRequestCalendarList;
exports.larkApiRequestBaseRoleList = larkApiRequestBaseRoleList;
exports.larkApiRequestTableFieldList = larkApiRequestTableFieldList;
exports.larkApiRequestTableViewList = larkApiRequestTableViewList;
exports.larkApiRequestTableList = larkApiRequestTableList;
exports.getFileList = getFileList;
const n8n_workflow_1 = require("n8n-workflow");
const RequestUtils_1 = __importDefault(require("../help/utils/RequestUtils"));
async function larkApiRequestSheetList(spreadsheetId) {
const { data: { sheets }, } = await RequestUtils_1.default.request.call(this, {
method: 'GET',
url: `/open-apis/sheets/v3/spreadsheets/${spreadsheetId}/sheets/query`,
});
return sheets;
}
async function larkApiRequestCalendarEventList(options) {
const { calendarId, query, user_id_type } = options;
const allEvents = [];
let hasMore = false;
let pageToken = '';
do {
const { data: { page_token, items }, } = await RequestUtils_1.default.request.call(this, {
method: 'POST',
url: `/open-apis/calendar/v4/calendars/${calendarId}/events/search`,
qs: {
user_id_type,
...(pageToken && { page_token: pageToken }),
page_size: 100,
},
body: {
query,
},
});
hasMore = page_token ? true : false;
pageToken = page_token;
if (items) {
allEvents.push(...items);
}
} while (hasMore);
return allEvents;
}
async function larkApiRequestCalendarList() {
const allCalendars = [];
let hasMore = false;
let pageToken = '';
do {
const { data: { has_more, page_token, calendar_list }, } = await RequestUtils_1.default.request.call(this, {
method: 'GET',
url: `/open-apis/calendar/v4/calendars`,
qs: {
...(pageToken && { page_token: pageToken }),
page_size: 1000,
},
});
hasMore = has_more;
pageToken = page_token;
if (calendar_list) {
allCalendars.push(...calendar_list);
}
} while (hasMore);
return allCalendars;
}
async function larkApiRequestBaseRoleList(options) {
const allRoles = [];
let hasMore = false;
let pageToken = '';
const { app_token } = options;
do {
const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, {
method: 'GET',
url: `/open-apis/base/v2/apps/${app_token}/roles`,
qs: {
...(pageToken && { page_token: pageToken }),
page_size: 100,
},
});
hasMore = has_more;
pageToken = page_token;
if (items) {
allRoles.push(...items);
}
} while (hasMore);
return allRoles;
}
async function larkApiRequestTableFieldList(options) {
const allFields = [];
let hasMore = false;
let pageToken = '';
const { app_token, table_id } = options;
do {
const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, {
method: 'GET',
url: `/open-apis/bitable/v1/apps/${app_token}/tables/${table_id}/fields`,
qs: {
page_token: pageToken,
page_size: 100,
},
});
hasMore = has_more;
pageToken = page_token;
if (items) {
allFields.push(...items);
}
} while (hasMore);
return allFields;
}
async function larkApiRequestTableViewList(options) {
const allViews = [];
let hasMore = false;
let pageToken = '';
const { app_token, table_id, user_id_type } = options;
do {
const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, {
method: 'GET',
url: `/open-apis/bitable/v1/apps/${app_token}/tables/${table_id}/views`,
qs: {
page_token: pageToken,
page_size: 100,
user_id_type,
},
});
hasMore = has_more;
pageToken = page_token;
if (items) {
allViews.push(...items);
}
} while (hasMore);
return allViews;
}
async function larkApiRequestTableList(appToken) {
const allTables = [];
let hasMore = false;
let pageToken = '';
do {
const { data: { has_more, page_token, items }, } = await RequestUtils_1.default.request.call(this, {
method: 'GET',
url: `/open-apis/bitable/v1/apps/${appToken}/tables`,
qs: {
page_token: pageToken,
page_size: 100,
},
});
hasMore = has_more;
pageToken = page_token;
if (items) {
allTables.push(...items);
}
} while (hasMore);
return allTables;
}
async function getFileList(type, order_by = 'EditedTime', direction = 'DESC', user_id_type = 'open_id', folderToken) {
let hasMore = true;
let pageToken = '';
const allFiles = [];
while (hasMore) {
const response = await RequestUtils_1.default.request.call(this, {
method: 'GET',
url: `/open-apis/drive/v1/files`,
qs: {
page_size: 100,
page_token: pageToken,
folder_token: folderToken,
order_by,
direction,
user_id_type,
},
});
const responseData = response.data;
const { files, has_more, next_page_token: nextPageToken } = responseData;
hasMore = has_more;
pageToken = nextPageToken || '';
for (const file of files) {
if (type.includes(file.type)) {
allFiles.push(file);
}
if (file.type === "folder") {
const results = await getFileList.call(this, type, order_by, direction, user_id_type, file.token);
allFiles.push(...results);
}
}
}
return allFiles;
}
const parseJsonParameter = (jsonData, node, i, entryName) => {
let returnData;
const location = entryName ? `entry "${entryName}" inside 'Fields to Set'` : "'JSON Output'";
if (typeof jsonData === 'string') {
try {
returnData = (0, n8n_workflow_1.jsonParse)(jsonData);
}
catch (error) {
let recoveredData = '';
try {
recoveredData = jsonData
.replace(/'/g, '"')
.replace(/(['"])?([a-zA-Z0-9_]+)(['"])?:/g, '"$2":')
.replace(/,\s*([\]}])/g, '$1')
.replace(/,+$/, '');
returnData = (0, n8n_workflow_1.jsonParse)(recoveredData);
}
catch (err) {
const description = recoveredData === jsonData ? jsonData : `${recoveredData};\n Original input: ${jsonData}`;
throw new n8n_workflow_1.NodeOperationError(node, `The ${location} in item ${i} contains invalid JSON`, {
description,
});
}
}
}
else {
returnData = jsonData;
}
if (returnData === undefined || typeof returnData !== 'object' || Array.isArray(returnData)) {
throw new n8n_workflow_1.NodeOperationError(node, `The ${location} in item ${i} does not contain a valid JSON object`);
}
return returnData;
};
exports.parseJsonParameter = parseJsonParameter;
//# sourceMappingURL=GenericFunctions.js.map