autoipo-cli
Version:
This is a cli script to apply for ipo automatically on few clicks
115 lines (104 loc) • 2.85 kB
JavaScript
import axios from 'axios';
import BASEURL from '../utils/constants.js';
const getBankDetails = async (authToken, code) => {
return new Promise(async (resolve, reject) => {
try {
const res = await axios.get(`${BASEURL}/api/meroShare/bank/${code}`, {
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
Authorization: authToken,
},
});
resolve(res);
} catch (error) {
reject(error.response.data);
}
});
};
const ownDetailForBoidAndDemat = async (authToken) => {
return new Promise(async (resolve, reject) => {
try {
const data = await axios.get(`${BASEURL}/api/meroShare/ownDetail/`, {
headers: {
Authorization: authToken,
},
});
resolve(data);
} catch (error) {
reject(error);
}
});
};
const auth = async (clientId, username, password) => {
return new Promise(async (resolve, reject) => {
try {
const res = await axios.post(`${BASEURL}/api/meroShare/auth/`, {
clientId,
username,
password,
});
resolve(res);
} catch (error) {
reject(error);
}
});
};
const getBankCode = async (authToken) => {
return new Promise(async (resolve, reject) => {
try {
const data = await axios.get(`${BASEURL}/api/meroShare/bank/`, {
headers: {
Authorization: authToken,
},
});
resolve(data);
} catch (error) {
reject(error);
}
});
};
const authWithResponse = async (clientId, username, password, pincode, crn) => {
try {
let finalData = {};
const data = await auth(clientId, username, password);
const authToken = data.headers.authorization;
const ownDetail = await ownDetailForBoidAndDemat(authToken);
const bankCodeResponse = await getBankCode(authToken);
const bankDetails = await getBankDetails(
authToken,
bankCodeResponse.data[0].id
);
finalData = {
authToken,
authData: {
clientId,
username,
password,
},
partialApplyObject: {
customerId: bankDetails.data.id,
accountNumber: bankDetails.data.accountNumber,
accountBranchId: bankDetails.data.branchID,
demat: ownDetail.data.demat,
boid: ownDetail.data.boid,
bankId: bankDetails.data.bankId,
transactionPIN: pincode,
crnNumber: crn,
},
};
return finalData;
} catch (error) {
throw new Error(error.response.data);
}
};
const loginForAuthOnly = async (clientId, username, password) => {
try {
const data = await auth(clientId, username, password);
return data.headers.authorization;
} catch (error) {
console.log(error.response.data);
return null;
}
};
export { authWithResponse, loginForAuthOnly };