UNPKG

monzolib

Version:

Fully Featured JS/Node Monzo Library

69 lines (68 loc) 2.26 kB
"use strict"; 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;