bmkg-wrapper
Version:
Sebuah API wrapper untuk mempermudah akses API data terbuka Badan Meteorologi, Klimatologi, dan Geofisika.
48 lines (47 loc) • 1.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseWeatherData = exports.searchKodeWilayah = exports.parseCsv = void 0;
const axios_1 = __importDefault(require("axios"));
const csv_parser_1 = __importDefault(require("csv-parser"));
const constants_js_1 = require("../config/constants.js");
const parseCsv = async (url) => {
const response = await axios_1.default.get(url, { responseType: 'stream' });
try {
return new Promise((resolve, reject) => {
const results = [];
response.data
.pipe((0, csv_parser_1.default)({ headers: false }))
.on('data', (row) => {
const kode = row[0];
const wilayah = row[1];
if (kode && wilayah)
results.push({ kode, wilayah });
})
.on('end', () => resolve(results))
.on('error', (err) => reject(err));
});
}
catch (err) {
console.error(err);
return [];
}
};
exports.parseCsv = parseCsv;
const searchKodeWilayah = (data, value) => {
const index = data.findIndex((item) => item.wilayah.toLowerCase() === value.toLowerCase());
if (index === -1) {
return null;
}
else {
return data[index].kode;
}
};
exports.searchKodeWilayah = searchKodeWilayah;
const parseWeatherData = async (wilayah) => {
const res = await axios_1.default.get(constants_js_1.ENDPOINTS.CUACA + wilayah);
return res.data.data[0];
};
exports.parseWeatherData = parseWeatherData;