koa-userinfo
Version:
openid style userinfo as middleware, for koa
62 lines (49 loc) • 1.24 kB
JavaScript
;
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;