diff --git a/services/regparse/universal.py b/services/regparse/universal.py index 803bde0..a3d7bb6 100644 --- a/services/regparse/universal.py +++ b/services/regparse/universal.py @@ -115,11 +115,19 @@ def make_node(key, json_request, config): n['id'] = make_id(key, lang) ltype = svc_types[lang] n['layerType'] = remapped_types.get(ltype, ltype) - if 'service_type' in json_request[lang] and json_request[lang]['service_type'] != svc_types[lang]: + if 'service_type' in json_request[lang] and json_request[lang]['service_type'] != svc_types[lang] \ + and json_request[lang]['service_type'] != "esriMapServer": msg = 'Mismatched service type in {0} object, endpoint identified as {1} but provided as {2}' \ .format(lang, svc_types[lang], json_request[lang]['service_type']) raise ServiceEndpointException(msg) - n['url'] = json_request[lang]['service_url'] + if json_request[lang]['service_type'] == 'esriMapServer' and \ + re.match('.*?(\/[0-9]*)$', json_request[lang]['service_url']): + n['layerType'] = 'esriDynamic' + layerid = re.sub('.*?(\/[0-9]*)$', r'\1', json_request[lang]['service_url']).replace('/', '') + n['url'] = json_request[lang]['service_url'] + n['layerEntries'] = [{'index': int(layerid)}] + else: + n['url'] = json_request[lang]['service_url'] m_url, c_url = metadata.get_url(json_request[lang], config) if n['url'].endswith("FeatureServer"): msg = 'FeatureServer registration must specify a feature layer' @@ -137,4 +145,6 @@ def make_node(key, json_request, config): v1[lang] = ogc.make_v1_wms_node(json_request[lang], n) elif ltype == ServiceTypes.FEATURE: v1[lang] = esri.make_v1_feature_node(json_request[lang], n) + if n['layerType'] == 'esriDynamic': + n['url'] = n['url'].rstrip('/0123456789') return node, v1 diff --git a/static/test.html b/static/test.html index ce5f3bf..120a578 100644 --- a/static/test.html +++ b/static/test.html @@ -96,10 +96,11 @@ - +

+ @@ -356,6 +357,19 @@ "service_name": "Railways" }, "version": "2.0" + }, + sampleDynamic = { + "fr": { + "service_url": "http://section917.cloudapp.net/arcgis/rest/services/JOSM/Oilsands_fr/MapServer/20", + "service_type": "esriMapServer", + "service_name": "Surveillance de la situation et des tendances d'oiseaux terrestres inscrits rares et difficiles à surveiller" + }, + "en": { + "service_url": "http://section917.cloudapp.net/arcgis/rest/services/JOSM/Oilsands_en/MapServer/20", + "service_type": "esriMapServer", + "service_name": "Status and Trend Monitoring of Listed, Rare, and Difficult-to-Monitor Landbirds" + }, + "version": "2.0" }; function get_versioned_url() { @@ -558,7 +572,7 @@ $('#upgradetest').click( function() { var s = get_sig_params("upgrade"), - sig = sign( s.key, s.path, s.id, s.isodate ), + sig = sign( s.key, s.path, s.id, s.isodate, '' ), h = make_headers(s,sig); console.log(h); $.ajax({