Source code for pyowm.stationsapi30.parsers.aggregated_measurement_parser
"""
Module containing a concrete implementation for JSONParser abstract class,
returning an AggregatedMeasurement instance
"""
import json
from pyowm.abstractions import jsonparser
from pyowm.exceptions import parse_response_error
from pyowm.stationsapi30.measurement import AggregatedMeasurement
[docs]class AggregatedMeasurementParser(jsonparser.JSONParser):
"""
Concrete *JSONParser* implementation building a
*pyowm.stationsapi30.measurement.AggregatedMeasurement* instance out of
raw JSON data
"""
def __init__(self):
pass
[docs] def parse_dict(self, data_dict):
"""
Parses a dictionary representing the attributes of a
*pyowm.stationsapi30.smeasurement.AggregatedMeasurement* entity
:param data_dict: dict
:return: *pyowm.stationsapi30.measurement.AggregatedMeasurement*
"""
assert isinstance(data_dict, dict)
string_repr = json.dumps(data_dict)
return self.parse_JSON(string_repr)
[docs] def parse_JSON(self, JSON_string):
"""
Parses a *pyowm.stationsapi30.measurement.AggregatedMeasurement*
instance out of raw JSON data.
:param JSON_string: a raw JSON string
:type JSON_string: str
:return: a *pyowm.stationsapi30.measurement.AggregatedMeasurement*
instance or ``None`` if no data is available
:raises: *ParseResponseError* if it is impossible to find or parse the
data needed to build the result
"""
if JSON_string is None:
raise parse_response_error.ParseResponseError('JSON data is None')
d = json.loads(JSON_string)
station_id = d.get('station_id', None)
ts = d.get('date', None)
if ts is not None:
ts = int(ts)
aggregated_on = d.get('type', None)
temp = d.get('temp', dict())
humidity = d.get('humidity', dict())
wind = d.get('wind', dict())
pressure = d.get('pressure', dict())
precipitation = d.get('precipitation', dict())
return AggregatedMeasurement(station_id, ts, aggregated_on, temp=temp,
humidity=humidity, wind=wind,
pressure=pressure, precipitation=precipitation)