monzolib
Version:
Fully Featured JS/Node Monzo Library
69 lines (68 loc) • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const debug_1 = tslib_1.__importDefault(require("debug"));
const api_1 = require("./api");
const debug = debug_1.default('monzolib:auth');
function getAuthRequestUrl(appInfo) {
debug('getAuthRequestUrl');
const url = new URL(api_1.monzoAuthRoot);
url.searchParams.set('client_id', appInfo.client_id);
url.searchParams.set('redirect_uri', appInfo.redirect_uri);
url.searchParams.set('response_type', appInfo.response_type);
url.searchParams.set('state', appInfo.state);
return url.toString();
}
exports.getAuthRequestUrl = getAuthRequestUrl;
function parseAuthUrl(authUrl, state) {
debug('parseAuthUrl');
const url = new URL(authUrl);
const urlState = url.searchParams.get('state');
if (urlState && state !== urlState)
throw new Error('auth state mismatch');
const urlCode = url.searchParams.get('code');
if (urlCode)
return urlCode;
else
throw new Error('no auth code found');
}
exports.parseAuthUrl = parseAuthUrl;
function accessTokenRequest(appInfo, authCode) {
debug('accessTokenRequest');
return {
path: '/oauth2/token',
method: 'POST',
body: {
client_id: appInfo.client_id,
client_secret: appInfo.client_secret,
code: authCode,
grant_type: 'authorization_code',
redirect_uri: appInfo.redirect_uri,
},
};
}
exports.accessTokenRequest = accessTokenRequest;
function refreshAccessRequest(appInfo, refreshToken) {
debug('refreshAccessRequest');
return {
path: '/oauth2/token',
method: 'POST',
body: {
client_id: appInfo.client_id,
client_secret: appInfo.client_secret,
grant_type: 'refresh_token',
refresh_token: refreshToken,
},
};
}
exports.refreshAccessRequest = refreshAccessRequest;
function verifyAccessRequest(accessToken) {
debug('verifyAccessRequest with =>', accessToken);
return {
path: '/ping/whoami',
headers: {
Authorization: `Bearer ${accessToken}`,
},
};
}
exports.verifyAccessRequest = verifyAccessRequest;