1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const tools_1 = require("@toba/tools");
|
7 | const node_fetch_1 = __importDefault(require("node-fetch"));
|
8 | const _1 = require(".");
|
9 | function relabel(from, out, labels) {
|
10 | Object.keys(labels).forEach(key => {
|
11 | if (tools_1.is.defined(from, key)) {
|
12 | out[labels[key]] = from[key];
|
13 | }
|
14 | });
|
15 | }
|
16 | exports.relabel = relabel;
|
17 | async function load(url) {
|
18 | const reply = await node_fetch_1.default(url, {
|
19 | headers: { [tools_1.Header.UserAgent]: 'node.js' }
|
20 | });
|
21 | return reply.status !== tools_1.HttpStatus.OK
|
22 | ? console.error(`Attempt to GET ${url} returned ${reply.status}`)
|
23 | : reply.buffer();
|
24 | }
|
25 | exports.load = load;
|
26 | async function loadSource(key) {
|
27 | const s = _1.config.source[key];
|
28 | const data = await load(s.url);
|
29 | if (tools_1.is.value(data)) {
|
30 | switch (s.type) {
|
31 | case 2:
|
32 | case 1:
|
33 | console.error(`Unsupported map source ${s.type} at ${s.url}`);
|
34 | return null;
|
35 | case 0:
|
36 | default: {
|
37 | const doc = await _1.kml.fromKMZ(data);
|
38 | return _1.geoJSON.featuresFromKML(doc, s.transform);
|
39 | }
|
40 | }
|
41 | }
|
42 | return null;
|
43 | }
|
44 | exports.loadSource = loadSource;
|