node-apple-weatherkit
Version:
Apple WeatherKit API node.js implementation
57 lines • 1.92 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const cross_fetch_1 = __importDefault(require("cross-fetch"));
const types_1 = require("../types");
const BASE_URL_V1 = 'https://weatherkit.apple.com/api/v1';
class Api {
constructor(accessToken) {
this.accessToken = accessToken;
this.accessToken = accessToken;
}
async get(path, params) {
const queryParams = params ? new URLSearchParams(this.convertParams(params)).toString() : '';
const url = `${BASE_URL_V1}${path}?${queryParams}`;
const response = await (0, cross_fetch_1.default)(url, {
method: 'GET',
headers: {
Authorization: `Bearer ${this.accessToken}`,
'Content-Type': 'application/json;charset=utf-8',
},
});
if (response.status != 200) {
return (0, types_1.Err)(await response.text(), response.status);
}
return (await response.json());
}
convertParams(params) {
if (!params)
return {};
const records = {};
let val;
for (const k in params) {
switch (k) {
case 'currentAsOf':
case 'dailyEnd':
case 'dailyStart':
case 'hourlyEnd':
case 'hourlyStart':
val = params[k]?.toISOString();
break;
case 'dataSets':
val = params[k]?.join(',');
break;
default:
val = params[k];
}
if (val) {
records[k] = val;
}
}
return records;
}
}
exports.default = Api;
//# sourceMappingURL=Api.js.map