[Maps] Use v7.6 Elastic Maps Service API (#54399)

* Use v7.6 Elastic Maps Service API
This commit is contained in:
Nick Peihl 2020-01-14 15:10:26 -08:00 committed by GitHub
parent be71ec4029
commit 6c9e4ec762
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 155 additions and 112 deletions

View file

@ -117,7 +117,7 @@
"@elastic/apm-rum": "^4.6.0",
"@elastic/charts": "^16.1.0",
"@elastic/datemath": "5.0.2",
"@elastic/ems-client": "1.0.5",
"@elastic/ems-client": "7.6.0",
"@elastic/eui": "18.0.0",
"@elastic/filesaver": "1.1.2",
"@elastic/good": "8.1.1-kibana2",

View file

@ -91,12 +91,25 @@ const cspRulesDeprecation: ConfigDeprecation = (settings, fromPath, log) => {
return settings;
};
const mapManifestServiceUrlDeprecation: ConfigDeprecation = (settings, fromPath, log) => {
if (has(settings, 'map.manifestServiceUrl')) {
log(
'You should no longer use the map.manifestServiceUrl setting in kibana.yml to configure the location ' +
'of the Elastic Maps Service settings. These settings have moved to the "map.emsTileApiUrl" and ' +
'"map.emsFileApiUrl" settings instead. These settings are for development use only and should not be ' +
'modified for use in production environments.'
);
}
return settings;
};
export const coreDeprecationProvider: ConfigDeprecationProvider = ({
unusedFromRoot,
renameFromRoot,
}) => [
unusedFromRoot('savedObjects.indexCheckTimeout'),
unusedFromRoot('server.xsrf.token'),
unusedFromRoot('maps.manifestServiceUrl'),
renameFromRoot('optimize.lazy', 'optimize.watch'),
renameFromRoot('optimize.lazyPort', 'optimize.watchPort'),
renameFromRoot('optimize.lazyHost', 'optimize.watchHost'),
@ -110,4 +123,5 @@ export const coreDeprecationProvider: ConfigDeprecationProvider = ({
dataPathDeprecation,
rewriteBasePathDeprecation,
cspRulesDeprecation,
mapManifestServiceUrlDeprecation,
];

View file

@ -114,7 +114,8 @@ const coreSystem = new CoreSystem({
},
mapConfig: {
includeElasticMapsService: true,
manifestServiceUrl: 'https://catalogue-staging.maps.elastic.co/v2/manifest'
emsFileApiUrl: 'https://vector-staging.maps.elastic.co',
emsTileApiUrl: 'https://tiles.maps.elastic.co',
},
vegaConfig: {
enabled: true,

View file

@ -254,7 +254,11 @@ export default () =>
)
.default([]),
}).default(),
manifestServiceUrl: Joi.string().default('https://catalogue.maps.elastic.co/v7.2/manifest'),
manifestServiceUrl: Joi.string()
.default('')
.allow(''),
emsFileApiUrl: Joi.string().default('https://vector-staging.maps.elastic.co'),
emsTileApiUrl: Joi.string().default('https://tiles.maps.elastic.co'),
emsLandingPageUrl: Joi.string().default('https://maps.elastic.co/v7.4'),
emsFontLibraryUrl: Joi.string().default(
'https://tiles.maps.elastic.co/fonts/{fontstack}/{range}.pbf'

View file

@ -24,7 +24,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/world_countries_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/world_countries_v1.geo.json",
"legacy_default": true
}
],
@ -430,7 +430,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/australia_states_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/australia_states_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -629,7 +629,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/canada_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/canada_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -908,7 +908,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/china_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/china_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -1266,7 +1266,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/finland_regions_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/finland_regions_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -1634,7 +1634,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/france_departments_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/france_departments_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -1984,7 +1984,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/germany_states_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/germany_states_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -2328,7 +2328,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/ireland_counties_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/ireland_counties_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -2637,7 +2637,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/japan_prefectures_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/japan_prefectures_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -3003,7 +3003,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/netherlands_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/netherlands_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -3309,7 +3309,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/norway_counties_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/norway_counties_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -3671,7 +3671,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/spain_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/spain_provinces_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -4002,7 +4002,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/sweden_counties_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/sweden_counties_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -4311,7 +4311,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/switzerland_cantons_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/switzerland_cantons_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -4827,7 +4827,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/uk_subdivisions_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/uk_subdivisions_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -5074,7 +5074,7 @@
"formats": [
{
"type": "topojson",
"url": "https://vector-staging.maps.elastic.co/files/usa_counties_v2.topo.json?elastic_tile_service_tos=agree",
"url": "/files/usa_counties_v2.topo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -5441,7 +5441,7 @@
"formats": [
{
"type": "geojson",
"url": "https://vector-staging.maps.elastic.co/files/usa_states_v1.geo.json?elastic_tile_service_tos=agree",
"url": "/files/usa_states_v1.geo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],
@ -5731,7 +5731,7 @@
"formats": [
{
"type": "topojson",
"url": "https://vector-staging.maps.elastic.co/files/usa_zip_codes_v2.topo.json?elastic_tile_service_tos=agree",
"url": "/files/usa_zip_codes_v2.topo.json?elastic_tile_service_tos=agree",
"legacy_default": true
}
],

View file

@ -3,13 +3,13 @@
{
"id": "tiles_v2",
"name": "Elastic Maps Tile Service",
"manifest": "https://tiles.foobar/manifest",
"manifest": "https://tiles.foobar/v7.6/manifest",
"type": "tms"
},
{
"id": "geo_layers",
"name": "Elastic Maps Vector Service",
"manifest": "https://files.foobar/manifest",
"manifest": "https://files.foobar/v7.6/manifest",
"type": "file"
}
]

View file

@ -7,6 +7,6 @@
"bounds": [-180, -85.0511, 180, 85.0511],
"format": "png",
"type": "baselayer",
"tiles": ["https://raster-style.foobar/styles/osm-bright/{z}/{x}/{y}.png"],
"tiles": ["/raster/styles/osm-bright/{z}/{x}/{y}.png"],
"center": [0, 0, 2]
}

View file

@ -41,11 +41,11 @@
"sources": {
"openmaptiles": {
"type": "vector",
"url": "https://tiles.maps.elastic.co/data/v3.json"
"url": "/data/v3.json"
}
},
"sprite": "https://tiles.maps.elastic.co/styles/osm-bright/sprite",
"glyphs": "https://tiles.maps.elastic.co/fonts/{fontstack}/{range}.pbf",
"sprite": "/styles/osm-bright/sprite",
"glyphs": "/fonts/{fontstack}/{range}.pbf",
"layers": [
{
"id": "background",

View file

@ -1,6 +1,6 @@
{
"tiles": [
"https://tiles.maps.elastic.co/data/v3/{z}/{x}/{y}.pbf"
"/data/v3/{z}/{x}/{y}.pbf"
],
"name": "OpenMapTiles",
"format": "pbf",

View file

@ -7,6 +7,6 @@
"bounds": [-180, -85.0511, 180, 85.0511],
"format": "png",
"type": "baselayer",
"tiles": ["https://raster-style.foobar/styles/dark-matter/{z}/{x}/{y}.png"],
"tiles": ["/raster/styles/dark-matter/{z}/{x}/{y}.png"],
"center": [0, 0, 2]
}

View file

@ -7,6 +7,6 @@
"bounds": [-180, -85.0511, 180, 85.0511],
"format": "png",
"type": "baselayer",
"tiles": ["https://raster-style.foobar/styles/osm-bright-desaturated/{z}/{x}/{y}.png"],
"tiles": ["/raster/styles/osm-bright-desaturated/{z}/{x}/{y}.png"],
"center": [0, 0, 2]
}

View file

@ -19,12 +19,12 @@
{
"locale": "en",
"format": "vector",
"url": "https://vector-style.foobar/styles/osm-bright/style.json"
"url": "/v7.6/styles/osm-bright/style.json"
},
{
"locale": "en",
"format": "raster",
"url": "https://raster-style.foobar/styles/osm-bright.json"
"url": "/v7.6/styles/osm-bright.json"
}
]
},
@ -47,12 +47,12 @@
{
"locale": "en",
"format": "vector",
"url": "https://vector-style.foobar/styles/osm-bright-desaturated/style.json"
"url": "/v7.6/styles/osm-bright-desaturated/style.json"
},
{
"locale": "en",
"format": "raster",
"url": "https://raster-style.foobar/styles/osm-bright-desaturated.json"
"url": "/v7.6/styles/osm-bright-desaturated.json"
}
]
},
@ -75,12 +75,12 @@
{
"locale": "en",
"format": "vector",
"url": "https://vector-style.foobar/styles/dark-matter/style.json"
"url": "/v7.6/styles/dark-matter/style.json"
},
{
"locale": "en",
"format": "raster",
"url": "https://raster-style.foobar/styles/dark-matter.json"
"url": "/v7.6/styles/dark-matter.json"
}
]
}

View file

@ -21,7 +21,6 @@ import expect from '@kbn/expect';
import ngMock from 'ng_mock';
import url from 'url';
import EMS_CATALOGUE from './ems_mocks/sample_manifest.json';
import EMS_FILES from './ems_mocks/sample_files.json';
import EMS_TILES from './ems_mocks/sample_tiles.json';
import EMS_STYLE_ROAD_MAP_BRIGHT from './ems_mocks/sample_style_bright';
@ -34,14 +33,18 @@ describe('service_settings (FKA tilemaptest)', function() {
let mapConfig;
let tilemapsConfig;
const manifestUrl = 'https://foobar/manifest';
const manifestUrl2 = 'https://foobar_override/v1/manifest';
const emsFileApiUrl = 'https://files.foobar';
const emsTileApiUrl = 'https://tiles.foobar';
const emsTileApiUrl2 = 'https://tiles_override.foobar';
const emsFileApiUrl2 = 'https://files_override.foobar';
beforeEach(
ngMock.module('kibana', $provide => {
$provide.decorator('mapConfig', () => {
return {
manifestServiceUrl: manifestUrl,
emsFileApiUrl,
emsTileApiUrl,
includeElasticMapsService: true,
emsTileLayerId: {
bright: 'road_map',
@ -53,7 +56,8 @@ describe('service_settings (FKA tilemaptest)', function() {
})
);
let manifestServiceUrlOriginal;
let emsTileApiUrlOriginal;
let emsFileApiUrlOriginal;
let tilemapsConfigDeprecatedOriginal;
let getManifestStub;
beforeEach(
@ -61,26 +65,26 @@ describe('service_settings (FKA tilemaptest)', function() {
serviceSettings = $injector.get('serviceSettings');
getManifestStub = serviceSettings.__debugStubManifestCalls(async url => {
//simulate network calls
if (url.startsWith('https://foobar')) {
return EMS_CATALOGUE;
} else if (url.startsWith('https://tiles.foobar')) {
return EMS_TILES;
} else if (url.startsWith('https://files.foobar')) {
return EMS_FILES;
} else if (url.startsWith('https://raster-style.foobar')) {
if (url.includes('osm-bright-desaturated')) {
if (url.startsWith('https://tiles.foobar')) {
if (url.includes('/manifest')) {
return EMS_TILES;
} else if (url.includes('osm-bright-desaturated.json')) {
return EMS_STYLE_ROAD_MAP_DESATURATED;
} else if (url.includes('osm-bright')) {
} else if (url.includes('osm-bright.json')) {
return EMS_STYLE_ROAD_MAP_BRIGHT;
} else if (url.includes('dark-matter')) {
} else if (url.includes('dark-matter.json')) {
return EMS_STYLE_DARK_MAP;
}
} else if (url.startsWith('https://files.foobar')) {
return EMS_FILES;
}
});
mapConfig = $injector.get('mapConfig');
tilemapsConfig = $injector.get('tilemapsConfig');
manifestServiceUrlOriginal = mapConfig.manifestServiceUrl;
emsTileApiUrlOriginal = mapConfig.emsTileApiUrl;
emsFileApiUrlOriginal = mapConfig.emsFileApiUrl;
tilemapsConfigDeprecatedOriginal = tilemapsConfig.deprecated;
$rootScope.$digest();
})
@ -88,7 +92,8 @@ describe('service_settings (FKA tilemaptest)', function() {
afterEach(function() {
getManifestStub.removeStub();
mapConfig.manifestServiceUrl = manifestServiceUrlOriginal;
mapConfig.emsTileApiUrl = emsTileApiUrlOriginal;
mapConfig.emsFileApiUrl = emsFileApiUrlOriginal;
tilemapsConfig.deprecated = tilemapsConfigDeprecatedOriginal;
});
@ -110,7 +115,7 @@ describe('service_settings (FKA tilemaptest)', function() {
expect(attrs.url).to.contain('{z}');
const urlObject = url.parse(attrs.url, true);
expect(urlObject.hostname).to.be('raster-style.foobar');
expect(urlObject.hostname).to.be('tiles.foobar');
expect(urlObject.query).to.have.property('my_app_name', 'kibana');
expect(urlObject.query).to.have.property('elastic_tile_service_tos', 'agree');
expect(urlObject.query).to.have.property('my_app_version');
@ -161,7 +166,8 @@ describe('service_settings (FKA tilemaptest)', function() {
});
it('when overridden, should continue to work', async () => {
mapConfig.manifestServiceUrl = manifestUrl2;
mapConfig.emsFileApiUrl = emsFileApiUrl2;
mapConfig.emsTileApiUrl = emsTileApiUrl2;
serviceSettings.addQueryParams({ foo: 'bar' });
tilemapServices = await serviceSettings.getTMSServices();
await assertQuery({ foo: 'bar' });
@ -187,11 +193,11 @@ describe('service_settings (FKA tilemaptest)', function() {
id: 'road_map',
name: 'Road Map - Bright',
url:
'https://raster-style.foobar/styles/osm-bright/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3',
'https://tiles.foobar/raster/styles/osm-bright/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3',
minZoom: 0,
maxZoom: 10,
attribution:
'<p><a rel="noreferrer noopener" href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a> | <a rel="noreferrer noopener" href="https://openmaptiles.org">OpenMapTiles</a> | <a rel="noreferrer noopener" href="https://www.maptiler.com">MapTiler</a> | <a rel="noreferrer noopener" href="https://www.elastic.co/elastic-maps-service">Elastic Maps Service</a></p>',
'<a rel="noreferrer noopener" href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a> | <a rel="noreferrer noopener" href="https://openmaptiles.org">OpenMapTiles</a> | <a rel="noreferrer noopener" href="https://www.maptiler.com">MapTiler</a> | <a rel="noreferrer noopener" href="https://www.elastic.co/elastic-maps-service">Elastic Maps Service</a>',
subdomains: [],
},
];
@ -233,19 +239,19 @@ describe('service_settings (FKA tilemaptest)', function() {
);
expect(desaturationFalse.url).to.equal(
'https://raster-style.foobar/styles/osm-bright/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
'https://tiles.foobar/raster/styles/osm-bright/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
expect(desaturationFalse.maxZoom).to.equal(10);
expect(desaturationTrue.url).to.equal(
'https://raster-style.foobar/styles/osm-bright-desaturated/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
'https://tiles.foobar/raster/styles/osm-bright-desaturated/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
expect(desaturationTrue.maxZoom).to.equal(18);
expect(darkThemeDesaturationFalse.url).to.equal(
'https://raster-style.foobar/styles/dark-matter/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
'https://tiles.foobar/raster/styles/dark-matter/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
expect(darkThemeDesaturationFalse.maxZoom).to.equal(22);
expect(darkThemeDesaturationTrue.url).to.equal(
'https://raster-style.foobar/styles/dark-matter/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
'https://tiles.foobar/raster/styles/dark-matter/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
expect(darkThemeDesaturationTrue.maxZoom).to.equal(22);
});

View file

@ -48,7 +48,8 @@ uiModules
this._emsClient = new EMSClient({
language: i18n.getLocale(),
kbnVersion: kbnVersion,
manifestServiceUrl: mapConfig.manifestServiceUrl,
fileApiUrl: mapConfig.emsFileApiUrl,
tileApiUrl: mapConfig.emsTileApiUrl,
htmlSanitizer: $sanitize,
landingPageUrl: mapConfig.emsLandingPageUrl,
});

View file

@ -8,17 +8,19 @@ import { i18n } from '@kbn/i18n';
export const EMS_CATALOGUE_PATH = 'ems/catalogue';
export const EMS_FILES_CATALOGUE_PATH = 'ems/files';
export const EMS_FILES_DEFAULT_JSON_PATH = 'ems/files/file';
export const EMS_GLYPHS_PATH = 'ems/fonts';
export const EMS_SPRITES_PATH = 'ems/sprites';
export const EMS_FILES_API_PATH = 'ems/files';
export const EMS_FILES_DEFAULT_JSON_PATH = 'file';
export const EMS_GLYPHS_PATH = 'fonts';
export const EMS_SPRITES_PATH = 'sprites';
export const EMS_TILES_CATALOGUE_PATH = 'ems/tiles';
export const EMS_TILES_RASTER_STYLE_PATH = 'ems/tiles/raster/style';
export const EMS_TILES_RASTER_TILE_PATH = 'ems/tiles/raster/tile';
export const EMS_TILES_API_PATH = 'ems/tiles';
export const EMS_TILES_RASTER_STYLE_PATH = 'raster/style';
export const EMS_TILES_RASTER_TILE_PATH = 'raster/tile';
export const EMS_TILES_VECTOR_STYLE_PATH = 'ems/tiles/vector/style';
export const EMS_TILES_VECTOR_SOURCE_PATH = 'ems/tiles/vector/source';
export const EMS_TILES_VECTOR_TILE_PATH = 'ems/tiles/vector/tile';
export const EMS_TILES_VECTOR_STYLE_PATH = 'vector/style';
export const EMS_TILES_VECTOR_SOURCE_PATH = 'vector/source';
export const EMS_TILES_VECTOR_TILE_PATH = 'vector/tile';
export const MAP_SAVED_OBJECT_TYPE = 'map';
export const APP_ID = 'maps';

View file

@ -43,7 +43,8 @@ export function maps(kibana) {
emsFontLibraryUrl: mapConfig.emsFontLibraryUrl,
emsTileLayerId: mapConfig.emsTileLayerId,
proxyElasticMapsServiceInMaps: mapConfig.proxyElasticMapsServiceInMaps,
emsManifestServiceUrl: mapConfig.manifestServiceUrl,
emsFileApiUrl: mapConfig.emsFileApiUrl,
emsTileApiUrl: mapConfig.emsTileApiUrl,
emsLandingPageUrl: mapConfig.emsLandingPageUrl,
kbnPkgVersion: serverConfig.get('pkg.version'),
regionmapLayers: _.get(mapConfig, 'regionmap.layers', []),

View file

@ -4,7 +4,12 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { GIS_API_PATH, EMS_CATALOGUE_PATH, EMS_GLYPHS_PATH } from '../common/constants';
import {
GIS_API_PATH,
EMS_FILES_CATALOGUE_PATH,
EMS_TILES_CATALOGUE_PATH,
EMS_GLYPHS_PATH,
} from '../common/constants';
import chrome from 'ui/chrome';
import { i18n } from '@kbn/i18n';
import { EMSClient } from '@elastic/ems-client';
@ -41,18 +46,22 @@ export function getEMSClient() {
'proxyElasticMapsServiceInMaps',
false
);
const proxyPath = proxyElasticMapsServiceInMaps ? relativeToAbsolute('..') : '';
const manifestServiceUrl = proxyElasticMapsServiceInMaps
? relativeToAbsolute(`${GIS_API_RELATIVE}/${EMS_CATALOGUE_PATH}`)
: chrome.getInjected('emsManifestServiceUrl');
const proxyPath = '';
const tileApiUrl = proxyElasticMapsServiceInMaps
? relativeToAbsolute(`${GIS_API_RELATIVE}/${EMS_TILES_CATALOGUE_PATH}`)
: chrome.getInjected('emsTileApiUrl');
const fileApiUrl = proxyElasticMapsServiceInMaps
? relativeToAbsolute(`${GIS_API_RELATIVE}/${EMS_FILES_CATALOGUE_PATH}`)
: chrome.getInjected('emsFileApiUrl');
emsClient = new EMSClient({
language: i18n.getLocale(),
kbnVersion: chrome.getInjected('kbnPkgVersion'),
manifestServiceUrl: manifestServiceUrl,
tileApiUrl,
fileApiUrl,
landingPageUrl: chrome.getInjected('emsLandingPageUrl'),
fetchFunction: fetchFunction, //import this from client-side, so the right instance is returned (bootstrapped from common/* would not work
proxyPath: proxyPath,
proxyPath,
});
} else {
//EMS is turned off. Mock API.
@ -80,7 +89,8 @@ export function getGlyphUrl() {
return '';
}
return chrome.getInjected('proxyElasticMapsServiceInMaps', false)
? relativeToAbsolute(`${GIS_API_RELATIVE}/${EMS_GLYPHS_PATH}`) + `/{fontstack}/{range}`
? relativeToAbsolute(`../${GIS_API_PATH}/${EMS_TILES_CATALOGUE_PATH}/${EMS_GLYPHS_PATH}`) +
`/{fontstack}/{range}`
: chrome.getInjected('emsFontLibraryUrl', true);
}

View file

@ -18,8 +18,10 @@ jest.mock('ui/chrome', () => ({
return false;
} else if (key === 'isEmsEnabled') {
return true;
} else if (key === 'emsManifestServiceUrl') {
return 'https://ems-manifest';
} else if (key === 'emsFileApiUrl') {
return 'https://file-api';
} else if (key === 'emsTileApiUrl') {
return 'https://tile-api';
}
},
getUiSettingsClient: () => {
@ -40,9 +42,10 @@ jest.mock('./kibana_services', () => {
});
describe('default use without proxy', () => {
it('should construct EMSClient with absolute manifest url', async () => {
it('should construct EMSClient with absolute file and tile API urls', async () => {
getEMSClient();
const mockEmsClientCall = EMSClient.mock.calls[0];
expect(mockEmsClientCall[0].manifestServiceUrl.startsWith('https://ems-manifest')).toBe(true);
expect(mockEmsClientCall[0].fileApiUrl.startsWith('https://file-api')).toBe(true);
expect(mockEmsClientCall[0].tileApiUrl.startsWith('https://tile-api')).toBe(true);
});
});

View file

@ -6,8 +6,10 @@
import {
EMS_CATALOGUE_PATH,
EMS_FILES_API_PATH,
EMS_FILES_CATALOGUE_PATH,
EMS_FILES_DEFAULT_JSON_PATH,
EMS_TILES_API_PATH,
EMS_TILES_CATALOGUE_PATH,
EMS_GLYPHS_PATH,
EMS_TILES_RASTER_STYLE_PATH,
@ -37,9 +39,9 @@ export function initRoutes(server, licenseUid) {
emsClient = new EMSClient({
language: i18n.getLocale(),
kbnVersion: serverConfig.get('pkg.version'),
manifestServiceUrl: mapConfig.manifestServiceUrl,
fileApiUrl: mapConfig.emsFileApiUrl,
tileApiUrl: mapConfig.emsTileApiUrl,
landingPageUrl: mapConfig.emsLandingPageUrl,
proxyElasticMapsServiceInMaps: false,
});
emsClient.addQueryParams({ license: licenseUid });
} else {
@ -65,7 +67,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_FILES_DEFAULT_JSON_PATH}`,
path: `${ROOT}/${EMS_FILES_API_PATH}/${EMS_FILES_DEFAULT_JSON_PATH}`,
handler: async request => {
checkEMSProxyConfig();
@ -92,7 +94,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_TILES_RASTER_TILE_PATH}`,
path: `${ROOT}/${EMS_TILES_API_PATH}/${EMS_TILES_RASTER_TILE_PATH}`,
handler: async (request, h) => {
checkEMSProxyConfig();
@ -134,8 +136,8 @@ export function initRoutes(server, licenseUid) {
};
//rewrite the urls to the submanifest
const tileService = main.services.find(service => service.id === 'tiles');
const fileService = main.services.find(service => service.id === 'geo_layers');
const tileService = main.services.find(service => service.type === 'tms');
const fileService = main.services.find(service => service.type === 'file');
if (tileService) {
proxiedManifest.services.push({
...tileService,
@ -154,7 +156,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_FILES_CATALOGUE_PATH}`,
path: `${ROOT}/${EMS_FILES_CATALOGUE_PATH}/{emsVersion}/manifest`,
handler: async () => {
checkEMSProxyConfig();
@ -162,7 +164,7 @@ export function initRoutes(server, licenseUid) {
const layers = file.layers.map(layer => {
const newLayer = { ...layer };
const id = encodeURIComponent(layer.layer_id);
const newUrl = `${GIS_API_PATH}/${EMS_FILES_DEFAULT_JSON_PATH}?id=${id}`;
const newUrl = `${EMS_FILES_DEFAULT_JSON_PATH}?id=${id}`;
newLayer.formats = [
{
...layer.formats[0],
@ -178,7 +180,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_TILES_CATALOGUE_PATH}`,
path: `${ROOT}/${EMS_TILES_CATALOGUE_PATH}/{emsVersion}/manifest`,
handler: async () => {
checkEMSProxyConfig();
@ -191,16 +193,15 @@ export function initRoutes(server, licenseUid) {
newService.formats = [];
const rasterFormats = service.formats.filter(format => format.format === 'raster');
if (rasterFormats.length) {
const newUrl = `${GIS_API_PATH}/${EMS_TILES_RASTER_STYLE_PATH}?id=${service.id}`;
const newUrl = `${EMS_TILES_RASTER_STYLE_PATH}?id=${service.id}`;
newService.formats.push({
...rasterFormats[0],
url: newUrl,
});
}
const vectorFormats = service.formats.filter(format => format.format === 'vector');
if (vectorFormats.length) {
const newUrl = `${GIS_API_PATH}/${EMS_TILES_VECTOR_STYLE_PATH}?id=${service.id}`;
const newUrl = `${EMS_TILES_VECTOR_STYLE_PATH}?id=${service.id}`;
newService.formats.push({
...vectorFormats[0],
url: newUrl,
@ -217,7 +218,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_TILES_RASTER_STYLE_PATH}`,
path: `${ROOT}/${EMS_TILES_API_PATH}/${EMS_TILES_RASTER_STYLE_PATH}`,
handler: async request => {
checkEMSProxyConfig();
@ -233,7 +234,7 @@ export function initRoutes(server, licenseUid) {
}
const style = await tmsService.getDefaultRasterStyle();
const newUrl = `${GIS_API_PATH}/${EMS_TILES_RASTER_TILE_PATH}?id=${request.query.id}&x={x}&y={y}&z={z}`;
const newUrl = `${EMS_TILES_RASTER_TILE_PATH}?id=${request.query.id}&x={x}&y={y}&z={z}`;
return {
...style,
tiles: [newUrl],
@ -243,7 +244,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_TILES_VECTOR_STYLE_PATH}`,
path: `${ROOT}/${EMS_TILES_API_PATH}/${EMS_TILES_VECTOR_STYLE_PATH}`,
handler: async request => {
checkEMSProxyConfig();
@ -264,16 +265,16 @@ export function initRoutes(server, licenseUid) {
if (vectorStyle.sources.hasOwnProperty(sourceId)) {
newSources[sourceId] = {
type: 'vector',
url: `${GIS_API_PATH}/${EMS_TILES_VECTOR_SOURCE_PATH}?id=${request.query.id}&sourceId=${sourceId}`,
url: `${EMS_TILES_VECTOR_SOURCE_PATH}?id=${request.query.id}&sourceId=${sourceId}`,
};
}
}
const spritePath = `${GIS_API_PATH}/${EMS_SPRITES_PATH}/${request.query.id}/sprite`;
const spritePath = `${EMS_SPRITES_PATH}/${request.query.id}/sprite`;
return {
...vectorStyle,
glyphs: `${GIS_API_PATH}/${EMS_GLYPHS_PATH}/{fontstack}/{range}`,
glyphs: `${EMS_GLYPHS_PATH}/{fontstack}/{range}`,
sprite: spritePath,
sources: newSources,
};
@ -282,7 +283,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_TILES_VECTOR_SOURCE_PATH}`,
path: `${ROOT}/${EMS_TILES_API_PATH}/${EMS_TILES_VECTOR_SOURCE_PATH}`,
handler: async request => {
checkEMSProxyConfig();
@ -303,7 +304,7 @@ export function initRoutes(server, licenseUid) {
const vectorStyle = await tmsService.getVectorStyleSheet();
const sourceManifest = vectorStyle.sources[request.query.sourceId];
const newUrl = `${GIS_API_PATH}/${EMS_TILES_VECTOR_TILE_PATH}?id=${request.query.id}&sourceId=${request.query.sourceId}&x={x}&y={y}&z={z}`;
const newUrl = `${EMS_TILES_VECTOR_TILE_PATH}?id=${request.query.id}&sourceId=${request.query.sourceId}&x={x}&y={y}&z={z}`;
return {
...sourceManifest,
tiles: [newUrl],
@ -313,7 +314,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_TILES_VECTOR_TILE_PATH}`,
path: `${ROOT}/${EMS_TILES_API_PATH}/${EMS_TILES_VECTOR_TILE_PATH}`,
handler: async (request, h) => {
checkEMSProxyConfig();
@ -349,10 +350,9 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_GLYPHS_PATH}/{fontstack}/{range}`,
path: `${ROOT}/${EMS_TILES_API_PATH}/${EMS_GLYPHS_PATH}/{fontstack}/{range}`,
handler: async (request, h) => {
checkEMSProxyConfig();
const url = mapConfig.emsFontLibraryUrl
.replace('{fontstack}', request.params.fontstack)
.replace('{range}', request.params.range);
@ -363,7 +363,7 @@ export function initRoutes(server, licenseUid) {
server.route({
method: 'GET',
path: `${ROOT}/${EMS_SPRITES_PATH}/{id}/sprite{scaling}.{extension}`,
path: `${ROOT}/${EMS_TILES_API_PATH}/${EMS_SPRITES_PATH}/{id}/sprite{scaling?}.{extension}`,
handler: async (request, h) => {
checkEMSProxyConfig();

View file

@ -178,7 +178,7 @@
"@babel/runtime": "^7.5.5",
"@elastic/apm-rum-react": "^0.3.2",
"@elastic/datemath": "5.0.2",
"@elastic/ems-client": "1.0.5",
"@elastic/ems-client": "7.6.0",
"@elastic/eui": "18.0.0",
"@elastic/filesaver": "1.1.2",
"@elastic/maki": "6.1.0",

View file

@ -1398,13 +1398,14 @@
once "^1.4.0"
pump "^3.0.0"
"@elastic/ems-client@1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@elastic/ems-client/-/ems-client-1.0.5.tgz#e2c10816c5eebdf128590170d8f09fcc693db50b"
integrity sha512-J+jDjtpHfGnbsgdhuA1zp/JoZftCpx6/h/4bP5ik+2Ysa30sAHIpHs0D3921R75O9WDNs6SHVnV/oqdJKL/HCg==
"@elastic/ems-client@7.6.0":
version "7.6.0"
resolved "https://registry.yarnpkg.com/@elastic/ems-client/-/ems-client-7.6.0.tgz#ca548aba1a1f5170a1892de129b537b5248c74be"
integrity sha512-oBtLH24qIgTaMhlSske49FTd35Y0nv+PlZCZaHkBhOH+ScsTDL3LO2lbIcSmcYQod43Ly34v/xwJvFCTxojVEQ==
dependencies:
lodash "^4.17.15"
node-fetch "^1.7.3"
semver "^6.3.0"
"@elastic/eslint-plugin-eui@0.0.2":
version "0.0.2"