fix: full pagination + non-silent errors in PollingRadarrRetriever
Licence Check / Licence compatibility and copyright header verification (push) Successful in 51s
CI / Tests & coverage (push) Failing after 1m8s
CI / Security audit (push) Successful in 1m15s
CI / Tests & coverage (pull_request) Failing after 4s
Licence Check / Licence compatibility and copyright header verification (pull_request) Successful in 1m6s
CI / Security audit (pull_request) Successful in 1m35s
Licence Check / Licence compatibility and copyright header verification (push) Successful in 51s
CI / Tests & coverage (push) Failing after 1m8s
CI / Security audit (push) Successful in 1m15s
CI / Tests & coverage (pull_request) Failing after 4s
Licence Check / Licence compatibility and copyright header verification (pull_request) Successful in 1m6s
CI / Security audit (pull_request) Successful in 1m35s
This commit is contained in:
@@ -37,17 +37,35 @@ class PollingRadarrRetriever extends ArrRetriever {
|
||||
* @returns {Promise<Object>} Queue object with records array
|
||||
*/
|
||||
async getQueue() {
|
||||
try {
|
||||
// Fetch with large page size to get all items (Radarr has pagination)
|
||||
const response = await axios.get(`${this.url}/api/v3/queue`, {
|
||||
headers: { 'X-Api-Key': this.apiKey },
|
||||
params: { includeMovie: true, pageSize: 1000 }
|
||||
});
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
logToFile(`[PollingRadarrRetriever] ${this.id} queue error: ${error.message}`);
|
||||
return { records: [] };
|
||||
}
|
||||
const instanceName = this.name;
|
||||
let page = 1;
|
||||
let allRecords = [];
|
||||
let responseData = null;
|
||||
|
||||
do {
|
||||
try {
|
||||
const response = await axios.get(`${this.url}/api/v3/queue`, {
|
||||
headers: { 'X-Api-Key': this.apiKey },
|
||||
params: { includeMovie: true, page, pageSize: 1000 }
|
||||
});
|
||||
responseData = response.data;
|
||||
} catch (error) {
|
||||
console.error(`Radarr queue fetch failed for instance ${instanceName}:`, error.response?.data || error.message);
|
||||
throw error;
|
||||
}
|
||||
|
||||
const records = responseData.records || (Array.isArray(responseData) ? responseData : []);
|
||||
allRecords = allRecords.concat(records);
|
||||
page++;
|
||||
} while (
|
||||
(responseData.records || (Array.isArray(responseData) ? responseData : [])).length === 1000 &&
|
||||
page <= 50
|
||||
);
|
||||
|
||||
return {
|
||||
...responseData,
|
||||
records: allRecords
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,8 +87,14 @@ class PollingRadarrRetriever extends ArrRetriever {
|
||||
startDate
|
||||
} = options;
|
||||
|
||||
try {
|
||||
const instanceName = this.name;
|
||||
let page = 1;
|
||||
let allRecords = [];
|
||||
let responseData = null;
|
||||
|
||||
do {
|
||||
const params = {
|
||||
page,
|
||||
pageSize,
|
||||
includeMovie
|
||||
};
|
||||
@@ -79,15 +103,29 @@ class PollingRadarrRetriever extends ArrRetriever {
|
||||
if (sortDir) params.sortDir = sortDir;
|
||||
if (startDate) params.startDate = startDate;
|
||||
|
||||
const response = await axios.get(`${this.url}/api/v3/history`, {
|
||||
headers: { 'X-Api-Key': this.apiKey },
|
||||
params
|
||||
});
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
logToFile(`[PollingRadarrRetriever] ${this.id} history error: ${error.message}`);
|
||||
return { records: [] };
|
||||
}
|
||||
try {
|
||||
const response = await axios.get(`${this.url}/api/v3/history`, {
|
||||
headers: { 'X-Api-Key': this.apiKey },
|
||||
params
|
||||
});
|
||||
responseData = response.data;
|
||||
} catch (error) {
|
||||
console.error(`Radarr history fetch failed for instance ${instanceName}:`, error.response?.data || error.message);
|
||||
throw error;
|
||||
}
|
||||
|
||||
const records = responseData.records || (Array.isArray(responseData) ? responseData : []);
|
||||
allRecords = allRecords.concat(records);
|
||||
page++;
|
||||
} while (
|
||||
(responseData.records || (Array.isArray(responseData) ? responseData : [])).length === pageSize &&
|
||||
page <= 50
|
||||
);
|
||||
|
||||
return {
|
||||
...responseData,
|
||||
records: allRecords
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user