From 8530e376473fd5da7ab1f9559678bfacee34a3fa Mon Sep 17 00:00:00 2001 From: mohd hassaan <sr.hassan23@gmail.com> Date: Mon, 22 Apr 2019 20:42:16 +0530 Subject: [PATCH] feat(nuget): Cache searchqueryservice URL (#3570) --- lib/datasource/nuget/v3.js | 23 +++++++++++++++++++++-- test/datasource/nuget.spec.js | 1 + 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/datasource/nuget/v3.js b/lib/datasource/nuget/v3.js index dee96f9cfa..ec1bba0901 100644 --- a/lib/datasource/nuget/v3.js +++ b/lib/datasource/nuget/v3.js @@ -10,6 +10,7 @@ module.exports = { // https://api.nuget.org/v3/index.json is a default official nuget feed const defaultNugetFeed = 'https://api.nuget.org/v3/index.json'; +const cacheNamespace = 'datasource-nuget'; function getDefaultFeed() { return defaultNugetFeed; @@ -17,6 +18,15 @@ function getDefaultFeed() { async function getQueryUrl(url) { // https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource + const resourceType = 'SearchQueryService'; + const cacheKey = `${url}:${resourceType}`; + const cachedResult = await renovateCache.get(cacheNamespace, cacheKey); + + // istanbul ignore if + if (cachedResult) { + return cachedResult; + } + try { const servicesIndexRaw = await got(url, { json: true, platform: 'nuget' }); if (servicesIndexRaw.statusCode !== 200) { @@ -27,9 +37,18 @@ async function getQueryUrl(url) { return null; } const searchQueryService = servicesIndexRaw.body.resources.find( - resource => resource['@type'] === 'SearchQueryService' + resource => resource['@type'] === resourceType + ); + const searchQueryServiceId = searchQueryService['@id']; + + const cacheMinutes = 60; + await renovateCache.set( + cacheNamespace, + cacheKey, + searchQueryServiceId, + cacheMinutes ); - return searchQueryService['@id']; + return searchQueryServiceId; } catch (e) { logger.debug( { e }, diff --git a/test/datasource/nuget.spec.js b/test/datasource/nuget.spec.js index 918e30907d..e1cc3abee4 100644 --- a/test/datasource/nuget.spec.js +++ b/test/datasource/nuget.spec.js @@ -65,6 +65,7 @@ const configV3NotNugetOrg = { }; describe('datasource/nuget', () => { + beforeEach(() => global.renovateCache.rmAll()); describe('getPkgReleases', () => { beforeEach(() => { jest.resetAllMocks(); -- GitLab