UNPKG

koa-userinfo

Version:

openid style userinfo as middleware, for koa

62 lines (49 loc) 1.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _http = require("http"); var _https = require("https"); var _url = require("url"); const debug = require('debug')('koa-userinfo'); var _default = async (url, token) => { const { hostname, port, protocol, path } = (0, _url.parse)(url); const _get = protocol === 'https:' ? _https.get : _http.get; return new Promise((resolve, reject) => { debug('requesting userinfo', { hostname, port, protocol, path, token }); const req = _get({ hostname, port, protocol, path, headers: { authorization: `Bearer ${token}` } }, res => { debug('userinfo response.statusCode', res.statusCode); let data = ''; res.on('data', _data => data += _data); res.on('end', () => { debug('userinfo received', data); if (res.statusCode !== 200) { return reject(new Error(`userinfo not available, statusCode=${res.statusCode}, data=${data}`)); } resolve(JSON.parse(data)); }); }); req.on('error', err => reject(err)); }); }; exports.default = _default;