Source code for pyowm.uvindexapi30.uv_client
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyowm.uvindexapi30.uris import UV_INDEX_URL, UV_INDEX_FORECAST_URL, \
UV_INDEX_HISTORY_URL
[docs]
class UltraVioletHttpClient:
"""
An HTTP client class for the OWM UV web API, which is a subset of the
overall OWM API.
:param API_key: a Unicode object representing the OWM UV 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 UVIndex search "
"window is invalid")
[docs]
def get_uvi(self, params_dict):
"""
Invokes the UV 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'])
params = dict(lat=lat, lon=lon)
# build request URL
_, json_data = self._client.get_json(UV_INDEX_URL, params=params)
return json_data
[docs]
def get_uvi_forecast(self, params_dict):
"""
Invokes the UV Index Forecast 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'])
params = dict(lat=lat, lon=lon)
# build request URL
_, json_data = self._client.get_json(UV_INDEX_FORECAST_URL, params=params)
return json_data
[docs]
def get_uvi_history(self, params_dict):
"""
Invokes the UV Index History 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 = str(params_dict['start'])
end = str(params_dict['end'])
params = dict(lat=lat, lon=lon, start=start, end=end)
# build request URL
_, json_data = self._client.get_json(UV_INDEX_HISTORY_URL, params=params)
return json_data
def __repr__(self):
return "<%s.%s - httpclient=%s>" % \
(__name__, self.__class__.__name__, str(self._client))