Files
sofarr/server/utils/ombiHelpers.js
T

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
};