Source code for sunpy.net.dataretriever.sources.lyra

# Author: Rishabh Sharma <[email protected]>
# This module was developed under funding provided by
# Google Summer of Code 2014

from urllib.parse import urljoin

from ..client import GenericClient

__all__ = ['LYRAClient']


[docs]class LYRAClient(GenericClient): def _get_url_for_timerange(self, timerange, **kwargs): """ Returns list of URLS corresponding to value of input timerange. Parameters ---------- timerange: sunpy.time.TimeRange time range for which data is to be downloaded. Returns ------- urls : list list of URLs corresponding to the requested time range """ days = timerange.get_dates() urls = [] for day in days: urls.append(self._get_url_for_date(day, **kwargs)) return urls def _get_url_for_date(self, date, **kwargs): """ Return URL for corresponding date. Parameters ---------- date : `astropy.time.Time`, `~datetime.datetime`, `~datetime.date` Returns ------- str The URL for the corresponding date. """ filename = "lyra_{0}-000000_lev{1:d}_std.fits".format( date.strftime('%Y%m%d'), kwargs.get('level', 2)) base_url = "http://proba2.oma.be/lyra/data/bsd/" url_path = urljoin(date.strftime('%Y/%m/%d/'), filename) return urljoin(base_url, url_path) def _makeimap(self): """ Helper Function:used to hold information about source. """ self.map_['source'] = 'Proba2' self.map_['instrument'] = 'lyra' self.map_['physobs'] = 'irradiance' self.map_['provider'] = 'esa' @classmethod def _can_handle_query(cls, *query): """ Answers whether client can service the query. Parameters ---------- query : list of query objects Returns ------- boolean answer as to whether client can service the query """ chkattr = ['Time', 'Instrument', 'Level'] chklist = [x.__class__.__name__ in chkattr for x in query] for x in query: if x.__class__.__name__ == 'Instrument' and x.value.lower() == 'lyra': return all(chklist) return False