import axios from "axios"; import { URLSearchParams } from "url"; import { setAuthToken } from "../config"; import { MyGlobal as app } from "../globals"; export class DelhiveryAuthentication { constructor() { } async authenticate() { try { const params = this.getFormParamsForAuth(); const authenticationResponse = await axios.post(`${app.auth_url}`, params); const authenticationToken = { bearerToken: `Bearer ${authenticationResponse?.data.access_token}`, tokenExpiry: authenticationResponse?.data.expires_in, idToken: authenticationResponse?.data.id_token } setAuthToken(authenticationToken); return authenticationToken; } catch (e) { throw e; } } // TODO: get this from cloudService. private getFormParamsForAuth() { if (!app.userName || !app.password || !app.clientId || !app.clientSecrect) { throw new Error("Couldn't find the Delhivery Authentication credentials") } const formParams = new URLSearchParams(); formParams.append('grant_type', 'password'); formParams.append('username', app.userName); formParams.append('password', app.password); formParams.append('audience', 'StarFleet'); formParams.append('scope', 'starfleet openid profile email ^/package/batchGeneratePackages:POST$ ^/package/batchGeneratePackages/.+:GET$ ^/package/auth-track/.+:GET$ ^/package/.+/invoice:GET$ ^/package/.+/shipping-label:GET$ ^/package/.+/upload-kyc-doc:POST$'); formParams.append('client_id', app.clientId); formParams.append('client_secret', app.clientSecrect); return formParams; } }