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