@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
63 lines (62 loc) • 3.66 kB
JavaScript
// SPDX-License-Identifier: Apache-2.0
//@SONAR_STOP@
const OgcApiConformanceClasses = {
'features-p1-core': 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core',
'features-p1-geojson': 'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/geojson',
'features-p2-crs': 'http://www.opengis.net/spec/ogcapi-features-2/1.0/conf/crs',
'features-p3-queryables': 'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables',
'features-p3-queryables-query-parameters': 'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables-query-parameters',
'features-p3-filter': 'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter',
'features-p3-features-filter': 'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter',
'features-p4-create-replace-delete': 'http://www.opengis.net/spec/ogcapi-features-4/1.0/conf/create-replace-delete',
'features-p4-update': 'http://www.opengis.net/spec/ogcapi-features-4/1.0/conf/update',
'features-p4-optimistic-locking-timestamps': 'http://www.opengis.net/spec/ogcapi-features-4/1.0/req/optimistic-locking-timestamps',
'features-p4-optimistic-locking-etags': 'http://www.opengis.net/spec/ogcapi-features-4/1.0/req/optimistic-locking-etags',
'features-p4-features': 'http://www.opengis.net/spec/ogcapi-features-4/1.0/conf/features',
'features-p5-schemas': 'http://www.opengis.net/spec/ogcapi-features-5/1.0/conf/schemas',
'features-p5-core-roles-features': 'http://www.opengis.net/spec/ogcapi-features-5/1.0/conf/core-roles-features',
'features-p5-feature-references': 'http://www.opengis.net/spec/ogcapi-features-5/1.0/conf/feature-references',
'features-p5-returnables-and-receivables': 'http://www.opengis.net/spec/ogcapi-features-5/1.0/conf/returnables-and-receivables',
'features-p5-queryables': 'http://www.opengis.net/spec/ogcapi-features-5/1.0/conf/queryables',
'features-p5-sortables': 'http://www.opengis.net/spec/ogcapi-features-5/1.0/conf/sortables'
};
const ogcapi_features_read = ['features-p1-core', 'features-p1-geojson'];
const ogcapi_features_crs = ['features-p2-crs'];
const ogcapi_features_query = [
...ogcapi_features_read,
'features-p3-queryables',
'features-p3-queryables-query-parameters'
];
const ogcapi_features_simple_write = [
...ogcapi_features_read,
...ogcapi_features_crs,
'features-p4-create-replace-delete',
'features-p5-schemas'
];
const ogcapi_features_advanced_write = [
...ogcapi_features_simple_write,
'features-p5-core-roles-features',
'features-p5-feature-references'
];
const conformanceLevels = {
ogcapi_features_read,
ogcapi_features_crs,
ogcapi_features_query,
ogcapi_features_simple_write,
ogcapi_features_advanced_write
};
const satisfiesConformanceLevel = (conformanceList, level) => {
return conformanceLevels[level].map(getConformanceClass).every((item) => conformanceList.includes(item));
};
export const getConformanceClass = (className) => {
return OgcApiConformanceClasses[className];
};
export const serverConformsTo = (conformanceList) => {
return {
ogcapi_features_read: satisfiesConformanceLevel(conformanceList, 'ogcapi_features_read'),
ogcapi_features_crs: satisfiesConformanceLevel(conformanceList, 'ogcapi_features_crs'),
ogcapi_features_query: satisfiesConformanceLevel(conformanceList, 'ogcapi_features_query'),
ogcapi_features_simple_write: satisfiesConformanceLevel(conformanceList, 'ogcapi_features_simple_write'),
ogcapi_features_advanced_write: satisfiesConformanceLevel(conformanceList, 'ogcapi_features_advanced_write')
};
};