n8n-nodes-base
Version:
Base nodes of n8n
116 lines • 4.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.searchUsers = searchUsers;
exports.searchGroups = searchGroups;
exports.searchGroupsForUser = searchGroupsForUser;
const n8n_workflow_1 = require("n8n-workflow");
const constants_1 = require("../helpers/constants");
const transport_1 = require("../transport");
function formatSearchResults(items, propertyName, filter) {
return items
.map((item) => ({
name: String(item[propertyName] ?? ''),
value: String(item[propertyName] ?? ''),
}))
.filter(({ name }) => !filter || name.includes(filter))
.sort((a, b) => a.name.localeCompare(b.name));
}
async function searchUsers(filter, paginationToken) {
const options = {
method: 'POST',
url: '',
body: {
Action: 'ListUsers',
Version: constants_1.CURRENT_VERSION,
...(paginationToken ? { Marker: paginationToken } : {}),
},
};
const responseData = (await transport_1.awsApiRequest.call(this, options));
const users = responseData.ListUsersResponse.ListUsersResult.Users || [];
const nextMarker = responseData.ListUsersResponse.ListUsersResult.IsTruncated
? responseData.ListUsersResponse.ListUsersResult.Marker
: undefined;
return {
results: formatSearchResults(users, 'UserName', filter),
paginationToken: nextMarker,
};
}
async function searchGroups(filter, paginationToken) {
const options = {
method: 'POST',
url: '',
body: {
Action: 'ListGroups',
Version: constants_1.CURRENT_VERSION,
...(paginationToken ? { Marker: paginationToken } : {}),
},
};
const responseData = (await transport_1.awsApiRequest.call(this, options));
const groups = responseData.ListGroupsResponse.ListGroupsResult.Groups || [];
const nextMarker = responseData.ListGroupsResponse.ListGroupsResult.IsTruncated
? responseData.ListGroupsResponse.ListGroupsResult.Marker
: undefined;
return {
results: formatSearchResults(groups, 'GroupName', filter),
paginationToken: nextMarker,
};
}
async function searchGroupsForUser(filter) {
const userName = this.getNodeParameter('user', undefined, { extractValue: true });
let allGroups = [];
let nextMarkerGroups;
do {
const options = {
method: 'POST',
url: '',
body: {
Action: 'ListGroups',
Version: constants_1.CURRENT_VERSION,
...(nextMarkerGroups ? { Marker: nextMarkerGroups } : {}),
},
};
const groupsData = (await transport_1.awsApiRequest.call(this, options));
const groups = groupsData.ListGroupsResponse?.ListGroupsResult?.Groups || [];
nextMarkerGroups = groupsData.ListGroupsResponse?.ListGroupsResult?.IsTruncated
? groupsData.ListGroupsResponse?.ListGroupsResult?.Marker
: undefined;
allGroups = [...allGroups, ...groups];
} while (nextMarkerGroups);
if (allGroups.length === 0) {
return { results: [] };
}
const groupCheckPromises = allGroups.map(async (group) => {
const groupName = group.GroupName;
if (!groupName) {
return null;
}
try {
const options = {
method: 'POST',
url: '',
body: {
Action: 'GetGroup',
Version: constants_1.CURRENT_VERSION,
GroupName: groupName,
},
};
const getGroupResponse = (await transport_1.awsApiRequest.call(this, options));
const groupResult = getGroupResponse?.GetGroupResponse?.GetGroupResult;
const userExists = groupResult?.Users?.some((user) => user.UserName === userName);
if (userExists) {
return { UserName: userName, GroupName: groupName };
}
}
catch (error) {
throw new n8n_workflow_1.NodeApiError(this.getNode(), error, {
message: `Failed to get group ${groupName}: ${error?.message ?? 'Unknown error'}`,
});
}
return null;
});
const validUserGroups = (await Promise.all(groupCheckPromises)).filter(Boolean);
return {
results: formatSearchResults(validUserGroups, 'GroupName', filter),
};
}
//# sourceMappingURL=listSearch.js.map