Source code for pyowm.airpollutionapi30.airpollution_client

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pyowm.airpollutionapi30.uris import CO_INDEX_URL, OZONE_URL, NO2_INDEX_URL, SO2_INDEX_URL, AIR_POLLUTION_URL, \
    AIR_POLLUTION_FORECAST_URL, AIR_POLLUTION_HISTORY_URL
from pyowm.utils import formatting


[docs] class AirPollutionHttpClient: """ A class representing the OWM Air Pollution web API, which is a subset of the overall OWM API. :param API_key: a Unicode object representing the OWM Air Pollution web API key :type API_key: Unicode :param httpclient: an *httpclient.HttpClient* instance that will be used to \ send requests to the OWM Air Pollution web API. :type httpclient: an *httpclient.HttpClient* instance """ def __init__(self, API_key, httpclient): self._API_key = API_key self._client = httpclient def _trim_to(self, date_object, interval): if interval == 'minute': return date_object.strftime('%Y-%m-%dT%H:%MZ') elif interval == 'hour': return date_object.strftime('%Y-%m-%dT%HZ') elif interval == 'day': return date_object.strftime('%Y-%m-%dZ') elif interval == 'month': return date_object.strftime('%Y-%mZ') elif interval == 'year': return date_object.strftime('%YZ') else: raise ValueError("The interval provided for the search " "window is invalid")
[docs] def get_coi(self, params_dict): """ Invokes the CO Index endpoint :param params_dict: dict of parameters :returns: a string containing raw JSON data :raises: *ValueError*, *APIRequestError* """ lat = str(params_dict['lat']) lon = str(params_dict['lon']) start = params_dict['start'] interval = params_dict['interval'] # build request URL if start is None: timeref = 'current' else: if interval is None: timeref = self._trim_to(formatting.to_date(start), 'year') else: timeref = self._trim_to(formatting.to_date(start), interval) uri = '%s/%s,%s/%s.json' % (CO_INDEX_URL, lat, lon, timeref) _, json_data = self._client.get_json(uri) return json_data
[docs] def get_o3(self, params_dict): """ Invokes the O3 Index endpoint :param params_dict: dict of parameters :returns: a string containing raw JSON data :raises: *ValueError*, *APIRequestError* """ lat = str(params_dict['lat']) lon = str(params_dict['lon']) start = params_dict['start'] interval = params_dict['interval'] # build request URL if start is None: timeref = 'current' else: if interval is None: timeref = self._trim_to( formatting.to_date(start), 'year') else: timeref = self._trim_to( formatting.to_date(start), interval) uri = '%s/%s,%s/%s.json' % (OZONE_URL, lat, lon, timeref) _, json_data = self._client.get_json(uri) return json_data
[docs] def get_no2(self, params_dict): """ Invokes the NO2 Index endpoint :param params_dict: dict of parameters :returns: a string containing raw JSON data :raises: *ValueError*, *APIRequestError* """ lat = str(params_dict['lat']) lon = str(params_dict['lon']) start = params_dict['start'] interval = params_dict['interval'] # build request URL if start is None: timeref = 'current' else: if interval is None: timeref = self._trim_to( formatting.to_date(start), 'year') else: timeref = self._trim_to( formatting.to_date(start), interval) uri = '%s/%s,%s/%s.json' % (NO2_INDEX_URL, lat, lon, timeref) _, json_data = self._client.get_json(uri) return json_data
[docs] def get_so2(self, params_dict): """ Invokes the SO2 Index endpoint :param params_dict: dict of parameters :returns: a string containing raw JSON data :raises: *ValueError*, *APIRequestError* """ lat = str(params_dict['lat']) lon = str(params_dict['lon']) start = params_dict['start'] interval = params_dict['interval'] # build request URL if start is None: timeref = 'current' else: if interval is None: timeref = self._trim_to( formatting.to_date(start), 'year') else: timeref = self._trim_to( formatting.to_date(start), interval) uri = '%s/%s,%s/%s.json' % (SO2_INDEX_URL, lat, lon, timeref) _, json_data = self._client.get_json(uri) return json_data
[docs] def get_air_pollution(self, params_dict): """ Invokes the new AirPollution API endpoint :param params_dict: dict of parameters :returns: a string containing raw JSON data :raises: *ValueError*, *APIRequestError* """ _, json_data = self._client.get_json(AIR_POLLUTION_URL, params=params_dict) return json_data
[docs] def get_forecast_air_pollution(self, params_dict): """ Invokes the new AirPollution API forecast endpoint :param params_dict: dict of parameters :returns: a string containing raw JSON data :raises: *ValueError*, *APIRequestError* """ _, json_data = self._client.get_json(AIR_POLLUTION_FORECAST_URL, params=params_dict) return json_data
[docs] def get_historical_air_pollution(self, params_dict): """ Invokes the new AirPollution API history endpoint :param params_dict: dict of parameters :returns: a string containing raw JSON data :raises: *ValueError*, *APIRequestError* """ _, json_data = self._client.get_json(AIR_POLLUTION_HISTORY_URL, params=params_dict) return json_data
def __repr__(self): return "<%s.%s - httpclient=%s>" % \ (__name__, self.__class__.__name__, str(self._client))