Source code for aisquared.config.harvesting.QueryParameterHarvester

from typing import Union
from aisquared.base import BaseObject


[docs]class QueryParameterHarvester(BaseObject): """ Harvester for Query Parameters Example usage: >>> import aisquared >>> my_obj = aisquared.config.harvesting.QueryParameterHarvester( 'test_key', 'test_url', 'test_attribute' ) >>> my_obj.to_dict() {'className': 'QueryParameterHarvester', 'params': {'queryKeys': ['test_key'], 'urlLocations': ['test_url'], 'attributes': ['test_attribute']}} """ def __init__( self, query_keys: Union[str, list], url_locations: Union[str, list], attributes: Union[str, list] ): """ Parameters ---------- query_keys : list of str Keys to use in the query url_locations : list of str URL Locations to query from attributes : list of str Attributes for the query """ self.query_keys = query_keys self.url_locations = url_locations self.attributes = attributes @property def query_keys(self): return self._query_keys @query_keys.setter def query_keys(self, value): if isinstance(value, str): value = [value] if not isinstance(value, list) or not all([isinstance(v, str) for v in value]): raise ValueError('query_keys must be list of strings') self._query_keys = value @property def url_locations(self): return self._url_locations @url_locations.setter def url_locations(self, value): if isinstance(value, str): value = [value] if not isinstance(value, list) or not all([isinstance(v, str) for v in value]): raise ValueError('url_locations must be list of strings') self._url_locations = value @property def attributes(self): return self._attributes @attributes.setter def attributes(self, value): if isinstance(value, str): value = [value] if not isinstance(value, list) or not all([isinstance(v, str) for v in value]): raise ValueError('attributes must be list of strings') self._attributes = value
[docs] def to_dict(self) -> dict: """ Get the configuration object as a dictionary """ return { 'className': 'QueryParameterHarvester', 'params': { 'queryKeys': self.query_keys, 'urlLocations': self.url_locations, 'attributes': self.attributes } }