Parsers¶
The regparse package. Contains parsers for ESRI feature services and WMSes.
An ESRI feature “parser” (really the requests library does most of the actual parsing).
Most of the utility functions are exposed but most applications won’t use them :func:make_node is generally the only point of interest here.
- 
regparse.esri_feature.get_base_url(feature_service_url)[source]¶
- Strips trailing / from the feature service URL if present. - Parameters: - feature_service_url (str) – A URL pointing to an ESRI feature service - Returns: - str – A URL pointing to the base URL 
- 
regparse.esri_feature.get_legend_mapping(data, layer_id)[source]¶
- Generates a mapping of layer labels to image data URLs. - Parameters: - data (dict) – The initial payload to RCS (should contain a ‘service_url’ entry)
- layer_id – The id of the layer to create the mapping for.
 - Returns: - dict – a mapping of ‘label’ => ‘data URI encoded image’ 
- 
regparse.esri_feature.get_legend_url(feature_service_url)[source]¶
- Converts a feature service URL into a legend request. Handles the optional ‘/’ at the end of requests. - Parameters: - feature_service_url (str) – A URL pointing to an ESRI feature service - Returns: - str – A URL pointing to a legend request 
- 
regparse.esri_feature.make_alias_mapping(json_data)[source]¶
- Generates a mapping of field names to field aliases. - Parameters: - json_data (list) – An array of field objects, taken from the fields property of an ESRI feature service endpoint - Returns: - dict – a mapping of ‘name’ => ‘alias’ 
- 
regparse.esri_feature.make_data_grid(json_data)[source]¶
- Generate a RAMP datagrid by walking through the attributes. Iterates over all entries in fields that do not have a type of esriFieldTypeGeometry - Parameters: - json_data (dict) – A dictionary containing scraped data from an ESRI feature service endpoint - Returns: - dict – A dictionary with a single entry gridColumns containing an array of datagrid objects 
- 
regparse.esri_feature.make_extent(json_data)[source]¶
- Extracts the extent for the layer from ESRI’s JSON config. - Parameters: - json_data (dict) – A dictionary containing scraped data from an ESRI feature service endpoint - Returns: - dict – A dictionary with the same data as the ESRI layerExtent node 
- 
regparse.esri_feature.make_grid_col(**kw)[source]¶
- Generate a RAMP compliant datagrid column object with the following defaults:
- fieldName ‘’ isSortable False sortType ‘string’ alignment 0
 - Parameters: - kw – Takes keyword arguments and just fills in the defaults - Returns: - dict – a dictionary with the defaults applied 
- 
regparse.esri_feature.make_node(data, id, config)[source]¶
- Generate a RAMP layer entry for an ESRI feature service. - Parameters: - data (dict) – The initial payload to RCS (should contain a ‘service_url’ entry)
- id (str) – An identifier for the layer (as this is unique it is generally supplied from :module:rcs )
 - Returns: - dict – a RAMP configuration fragment representing the ESRI layer 
- 
regparse.esri_feature.make_symbology(json_data, data)[source]¶
- Generates a symbology node for the RAMP configuration. Handles simple, unique value and class break renders; prefetches all symbology images. - Parameters: - json_data (dict) – A dictionary containing scraped data from an ESRI feature service endpoint
- data (dict) – The initial payload to RCS (should contain a ‘service_url’ entry)
 - Returns: - dict – a symbology node 
- 
regparse.esri_feature.test_small_layer(svc_url, svc_data)[source]¶
- Test a service endpoint to see if the layer is small based on some simple rules. - Parameters: - svc_url (str) – The URL pointing to the feature endpoint
- svc_data (dict) – A dictionary containing scraped data from an ESRI feature service endpoint
 - Returns: - bool – True if the layer is considered ‘small’ 
A WMS “parser” (barely does any parsing at the moment).
- 
regparse.wms.make_feature_info(data)[source]¶
- Make a RAMP feature info node, identifying the correct default parser to be used based on the MIME type of the feature info request. - Currently accepted MIME types (in order of preference):
- ‘text/html’ ‘text/plain’ ‘application/json’
 - Parameters: - data (dict) – The initial payload to RCS - Returns: - dict – A feature info configuration fragment; None if no valid mimeType was set 
- 
regparse.wms.make_node(data, id, config=None)[source]¶
- Generate a RAMP layer entry for a WMS. - Parameters: - data (dict) – The initial payload to RCS
- id (str) – An identifier for the layer (as this is unique it is generally supplied from :module:rcs )
 - Returns: - dict – a RAMP configuration fragment representing the WMS layer 
Tests RCS request signatures for validity
- 
regparse.sigcheck.check_time(request)[source]¶
- Ensure the sent time is within 2 minutes of the current time - Parameters: - sent (str) – An ISO8601 encoded date - Raises: - ParseError – if the datetime cannot be parsed - Returns: - bool – sent time is within 2 minutes of the current time 
- 
regparse.sigcheck.sign(key, *parts)[source]¶
- Creates an HMAC_SHA256 signature from a key and a set of message parts - Parameters: - key (str) – The signing key to use - Returns: - str – a URL safe base64 encoded signature 
- 
regparse.sigcheck.test_request(request)[source]¶
- Test the signature of a given request. - Pulls the signature components from the request and generates a reference signature. Tests if the reference signature matches the Authorization header in the request. - Parameters: - request – A flask request object containing the request to validate - Returns: - bool – if the generated signature matches the authorization header