hkopendata
Version:
Access different Opendata API and data in Hong Kong
58 lines (54 loc) • 1.66 kB
JavaScript
const Bank = require("../_class/Bank");
const CONFIG = require("./config.json")
function init(org, params) {
let bank;
if (/BOCHK/.test(org)) {
let m = org.match(/BOCHK-(.+)/);
org = "BOCHK";
bank = m[1].toUpperCase();
}
if (!org || !(org in CONFIG)) return false;
params = params || {};
let production = params.production || false,
domain,
instance = {
baseURL: "",
headers: {
...params.headers
}
};
if (CONFIG[org] && CONFIG[org].domain) {
domain = CONFIG[org].domain;
}
if (!domain && bank && CONFIG[bank] && CONFIG[bank].domain) {
domain = CONFIG[bank].domain;
}
if (typeof domain === "object") {
instance.baseURL = domain[production ? "production" : "development"] ||
domain.production ||
domain.development;
} else if (typeof domain === "string") {
instance.baseURL = domain;
}
if (params.transformRequest) {
instance.transformRequest = params.transformRequest;
}
let endpoints;
if (org == "JETCO") {
endpoints = {};
for (let key in CONFIG[org].endpoints) {
endpoints[key] = CONFIG[org].endpoints[key].replace("{path}", `${production ? "{bank}/api" : "jetco/sb"}/{bank}`);
}
} else {
endpoints = CONFIG[org].endpoints;
}
return new Bank({
id: org,
instance: instance,
endpoints: endpoints,
uuid: params.uuid || false,
timestamp: params.timestamp || false,
debug: Boolean(params.debug),
})
}
module.exports = init