def _generate_url(self, url, layer_name, bbox, service, version): base_url, values = break_url(url) bbox = [ str(bbox.get('esip:westBound')), str(bbox.get('esip:southBound')), str(bbox.get('esip:eastBound')), str(bbox.get('esip:northBound')) ] if service == 'WMS': params = { "service": service, "request": "GetMap", "version": version, "layers": layer_name, "width": 500, "height": 500, "styles": "", "format": "image/png" # totes wrong } if version == '1.3.0': params['crs'] = 'CRS:84' else: params['srs'] = 'EPSG:4326' params['bbox'] = ','.join(bbox) elif service == 'WFS': params = { "service": service, "request": "GetFeature", "version": version, "featureid": layer_name, "typenames": "namespace:featuretype" } elif service == 'WCS': params = { "service": service, "request": "GetCoverage", "version": version, "coverage": layer_name, "width": 500, "height": 500, 'crs': 'CRS:84', 'bbox': ','.join(bbox), "format": "GTiff" # this is so wrong } elif service == 'CSW': return '' elif service == 'SOS': return '' return base_url + '?' + urllib.urlencode(params)
def _extract_url(self, text): # but really first, is it a urn? text = self._verify_url(text) if not text: return '', '', [] url = self._tidy_text(unquote(text)) base_url, values = break_url(url) values = values.split(' ') + [base_url] if base_url else [] # we're just running with a hack if url == 'http://dx.doi.org': return '', '', [] if 'dx.doi.org' in base_url: t = 'doi' elif 'hdl.handle.net' in base_url: t = 'hdl' else: t = 'url' # return the original extracted url, tag, and the values plus # the base_url for more extracting return url, t, filter(None, [self._tidy_text(v) for v in values])