47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
// Copyright (c) 2026 Gordon Bolton. MIT License.
|
|
/**
|
|
* Helper functions for extracting user information from Ombi API responses.
|
|
* The Ombi API returns requestedUser as an OmbiStore.Entities.OmbiUser object,
|
|
* not a string, so we need to extract the username from the object.
|
|
*/
|
|
|
|
/**
|
|
* Extracts the username from an Ombi request object.
|
|
* Handles both the OmbiUser object format and legacy string format.
|
|
*
|
|
* @param {Object} request - The Ombi request object
|
|
* @returns {string} The extracted username, or empty string if not found
|
|
*/
|
|
function extractRequestedUser(request) {
|
|
if (!request) return '';
|
|
|
|
const requestedUser = request.requestedUser || request.RequestedUser;
|
|
|
|
// Handle object format: OmbiStore.Entities.OmbiUser
|
|
if (requestedUser && typeof requestedUser === 'object') {
|
|
// Priority: alias > userAlias > userName > normalizedUserName > requestedByAlias
|
|
return requestedUser.alias || requestedUser.Alias ||
|
|
requestedUser.userAlias || requestedUser.UserAlias ||
|
|
requestedUser.userName || requestedUser.UserName ||
|
|
requestedUser.normalizedUserName || requestedUser.NormalizedUserName ||
|
|
request.requestedByAlias || request.RequestedByAlias || '';
|
|
}
|
|
// Handle string format (fallback for compatibility)
|
|
return requestedUser || request.requestedByAlias || request.RequestedByAlias || '';
|
|
}
|
|
|
|
function filterRequestsByUser(requests, username, showAll) {
|
|
if (!Array.isArray(requests)) return [];
|
|
if (showAll || !username) return requests;
|
|
const usernameLower = username.toLowerCase();
|
|
return requests.filter(req => {
|
|
const requestedUser = extractRequestedUser(req);
|
|
return requestedUser.toLowerCase() === usernameLower;
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
extractRequestedUser,
|
|
filterRequestsByUser
|
|
};
|