def run_test_resource(resource_type, url): """tests a CSW service and provides run metrics""" if resource_type not in RESOURCE_TYPES.keys(): msg = gettext('Invalid resource type') msg2 = '%s: %s' % (msg, resource_type) LOGGER.error(msg2) raise RuntimeError(msg2) title = None start_time = datetime.datetime.utcnow() message = None try: if resource_type == 'OGC:WMS': ows = WebMapService(url) elif resource_type == 'OGC:WFS': ows = WebFeatureService(url) elif resource_type == 'OGC:WCS': ows = WebCoverageService(url) elif resource_type == 'OGC:WPS': ows = WebProcessingService(url) elif resource_type == 'OGC:CSW': ows = CatalogueServiceWeb(url) elif resource_type == 'OGC:SOS': ows = SensorObservationService(url) elif resource_type in ['WWW:LINK', 'urn:geoss:waf']: ows = urlopen(url) if resource_type == 'WWW:LINK': import re try: title_re = re.compile("<title>(.+?)</title>") title = title_re.search(ows.read()).group(1) except: title = url elif resource_type == 'urn:geoss:waf': title = 'WAF %s %s' % (gettext('for'), urlparse(url).hostname) elif resource_type == 'FTP': ows = urlopen(url) title = urlparse(url).hostname success = True if resource_type.startswith('OGC:'): title = ows.identification.title if title is None: title = '%s %s %s' % (resource_type, gettext('for'), url) except Exception as err: msg = str(err) LOGGER.exception(msg) message = msg success = False end_time = datetime.datetime.utcnow() delta = end_time - start_time response_time = '%s.%s' % (delta.seconds, delta.microseconds) return [title, success, response_time, message, start_time]
def run_test_resource(resource_type, url): """tests a CSW service and provides run metrics""" if resource_type not in RESOURCE_TYPES.keys(): msg = 'Invalid resource type: %s' % resource_type LOGGER.error(msg) raise RuntimeError(msg) title = None start_time = datetime.datetime.utcnow() message = None try: if resource_type == 'OGC:WMS': ows = WebMapService(url) elif resource_type == 'OGC:WFS': ows = WebFeatureService(url) elif resource_type == 'OGC:WCS': ows = WebCoverageService(url) elif resource_type == 'OGC:WPS': ows = WebProcessingService(url) elif resource_type == 'OGC:CSW': ows = CatalogueServiceWeb(url) elif resource_type == 'OGC:SOS': ows = SensorObservationService(url) elif resource_type in ['WWW:LINK', 'urn:geoss:waf']: ows = urlopen(url) if resource_type == 'WWW:LINK': import re try: title_re = re.compile("<title>(.+?)</title>") title = title_re.search(ows.read()).group(1) except: title = url elif resource_type == 'urn:geoss:waf': title = 'WAF for %s' % urlparse(url).hostname elif resource_type == 'FTP': ows = urlopen(url) title = urlparse(url).hostname success = True if resource_type.startswith('OGC:'): title = ows.identification.title if title is None: title = '%s for %s' % (resource_type, url) except Exception, err: msg = str(err) LOGGER.exception(msg) message = msg success = False
def sniff_test_resource(config, resource_type, url): """tests a service and provides run metrics""" if resource_type not in RESOURCE_TYPES.keys(): msg = gettext('Invalid resource type') msg2 = '%s: %s' % (msg, resource_type) LOGGER.error(msg2) raise RuntimeError(msg2) title = None start_time = datetime.datetime.utcnow() message = None try: if resource_type == 'OGC:WMS': ows = WebMapService(url) elif resource_type == 'OGC:WMTS': ows = WebMapTileService(url) elif resource_type == 'OSGeo:TMS': ows = TileMapService(url) elif resource_type == 'OGC:WFS': ows = WebFeatureService(url) elif resource_type == 'OGC:WCS': ows = WebCoverageService(url, version='1.0.0') elif resource_type == 'OGC:WPS': ows = WebProcessingService(url) elif resource_type == 'OGC:CSW': ows = CatalogueServiceWeb(url) elif resource_type == 'OGC:SOS': ows = SensorObservationService(url) elif resource_type == 'OGC:STA': ows = urlopen(url) elif resource_type in ['WWW:LINK', 'urn:geoss:waf']: ows = urlopen(url) if resource_type == 'WWW:LINK': content_type = ows.info().getheader('Content-Type') # Check content if the response is not an image if 'image/' not in content_type: content = ows.read() import re try: title_re = re.compile("<title>(.+?)</title>") title = title_re.search(content).group(1) except: title = url # Optional check for any OGC-Exceptions in Response if config and config['GHC_WWW_LINK_EXCEPTION_CHECK']: exception_text = None try: except_re = re.compile( "ServiceException>|ExceptionReport>") exception_text = except_re.search(content).group(0) except: # No Exception in Response text pass if exception_text: # Found OGC-Exception in Response text raise Exception("Exception in response: %s" % exception_text) del content elif resource_type == 'urn:geoss:waf': title = 'WAF %s %s' % (gettext('for'), urlparse(url).hostname) elif resource_type == 'FTP': ows = urlopen(url) title = urlparse(url).hostname success = True if resource_type.startswith(('OGC:', 'OSGeo')): if resource_type == 'OGC:STA': title = 'OGC STA' else: title = ows.identification.title if title is None: title = '%s %s %s' % (resource_type, gettext('for'), url) except Exception as err: msg = str(err) LOGGER.exception(msg) message = msg success = False end_time = datetime.datetime.utcnow() delta = end_time - start_time response_time = '%s.%s' % (delta.seconds, delta.microseconds) return [title, success, response_time, message, start_time]
def run_test_resource(config, resource_type, url): """tests a CSW service and provides run metrics""" if resource_type not in RESOURCE_TYPES.keys(): msg = gettext('Invalid resource type') msg2 = '%s: %s' % (msg, resource_type) LOGGER.error(msg2) raise RuntimeError(msg2) title = None start_time = datetime.datetime.utcnow() message = None try: if resource_type == 'OGC:WMS': ows = WebMapService(url) elif resource_type == 'OGC:WMTS': ows = WebMapTileService(url) elif resource_type == 'OSGeo:TMS': ows = TileMapService(url) elif resource_type == 'OGC:WFS': ows = WebFeatureService(url) elif resource_type == 'OGC:WCS': ows = WebCoverageService(url, version='1.0.0') elif resource_type == 'OGC:WPS': ows = WebProcessingService(url) elif resource_type == 'OGC:CSW': ows = CatalogueServiceWeb(url) elif resource_type == 'OGC:SOS': ows = SensorObservationService(url) elif resource_type in ['WWW:LINK', 'urn:geoss:waf']: ows = urlopen(url) if resource_type == 'WWW:LINK': content_type = ows.info().getheader('Content-Type') # Check content if the response is not an image if 'image/' not in content_type: content = ows.read() import re try: title_re = re.compile("<title>(.+?)</title>") title = title_re.search(content).group(1) except: title = url # Optional check for any OGC-Exceptions in Response if config and config['GHC_WWW_LINK_EXCEPTION_CHECK']: exception_text = None try: except_re = re.compile( "ServiceException>|ExceptionReport>") exception_text = except_re.search(content).group(0) except: # No Exception in Response text pass if exception_text: # Found OGC-Exception in Response text raise Exception( "Exception in response: %s" % exception_text) del content elif resource_type == 'urn:geoss:waf': title = 'WAF %s %s' % (gettext('for'), urlparse(url).hostname) elif resource_type == 'FTP': ows = urlopen(url) title = urlparse(url).hostname success = True if resource_type.startswith(('OGC:', 'OSGeo')): title = ows.identification.title if title is None: title = '%s %s %s' % (resource_type, gettext('for'), url) except Exception as err: msg = str(err) LOGGER.exception(msg) message = msg success = False end_time = datetime.datetime.utcnow() delta = end_time - start_time response_time = '%s.%s' % (delta.seconds, delta.microseconds) return [title, success, response_time, message, start_time]