glide-nodejs-sdk
Version:
Glide NodeJS SDK
82 lines (66 loc) • 1.92 kB
JavaScript
const validateSchema = require("../utils/validator.schema");
const handleApiErrors = require("../errors/handleApiErrors");
const {
fundCardSchema,
createCardSchema,
cardBalanceSchema,
activateCardSchema,
} = require("../validators/card.schema");
class Card {
constructor(request) {
this.request = request;
}
create = async (payload) => {
try {
const cardPayload = await validateSchema({ schema: createCardSchema, payload });
const { data } = await this.request.post("/card", cardPayload);
if (data && data.status) {
return data;
} else {
throw new Error("There is a problem creating your card");
}
} catch (error) {
handleApiErrors(error);
}
};
activate = async (payload) => {
try {
const activatePayload = await validateSchema({ schema: activateCardSchema, payload });
const { data } = await this.request.post("/card/activate", activatePayload);
if (data && data.status) {
return data;
} else {
throw new Error("There is a problem activating your card");
}
} catch (error) {
handleApiErrors(error);
}
};
getBalance = async (customerId) => {
try {
const balancePayload = await validateSchema({ schema: cardBalanceSchema, payload: { customerId } });
const { data } = await this.request.get("/card/balance", { params: balancePayload });
if (data && data.status) {
return data.data;
} else {
throw new Error("There is a problem getting card balance");
}
} catch (error) {
handleApiErrors(error);
}
};
fund = async (payload) => {
try {
const fundPayload = await validateSchema({ schema: fundCardSchema, payload });
const { data } = await this.request.post("/card/fund", fundPayload);
if (data && data.status) {
return data;
} else {
throw new Error("There is a problem funding your card");
}
} catch (error) {
handleApiErrors(error);
}
};
}
module.exports = Card;