UNPKG

@strongnguyen/oidc-provider

Version:

OAuth 2.0 Authorization Server implementation for Node.js with OpenID Connect

44 lines (33 loc) 1.04 kB
const crypto = require('crypto'); const { strict: assert } = require('assert'); const { STATUS_CODES } = require('http'); const QuickLRU = require('quick-lru'); const request = require('./request'); class RequestUriCache { constructor(provider) { this.cache = new QuickLRU({ maxSize: 100 }); this.provider = provider; } async resolve(requestUri) { const { cache } = this; const cacheKey = crypto.createHash('sha256').update(requestUri).digest('hex'); const cached = cache.get(cacheKey); if (cached) { return cached; } const { statusCode, body } = await request.call(this.provider, { method: 'GET', url: requestUri, headers: { Accept: 'application/oauth-authz-req+jwt, application/jwt', }, }); assert.equal( statusCode, 200, `unexpected request_uri response status code, expected 200 OK, got ${statusCode} ${STATUS_CODES[statusCode]}`, ); cache.set(cacheKey, body); return body; } } module.exports = RequestUriCache;