From d487edf105d430fd41439bae10af08ff8312b6a3 Mon Sep 17 00:00:00 2001 From: Travis Rivers <travrivers88@gmail.com> Date: Mon, 2 Mar 2020 17:15:06 -0700 Subject: [PATCH] update parse method --- geomagio/TimeseriesUtility.py | 2 +- geomagio/webservice/data.py | 59 ++++++++++++++--------------------- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/geomagio/TimeseriesUtility.py b/geomagio/TimeseriesUtility.py index f9dc3cf3..dab3e801 100644 --- a/geomagio/TimeseriesUtility.py +++ b/geomagio/TimeseriesUtility.py @@ -87,7 +87,7 @@ def get_interval_from_delta(delta): Parameters ---------- - int + delta: str number of seconds for interval, or None if unknown Returns diff --git a/geomagio/webservice/data.py b/geomagio/webservice/data.py index 58be0346..497156ac 100644 --- a/geomagio/webservice/data.py +++ b/geomagio/webservice/data.py @@ -273,23 +273,18 @@ def parse_query(query): """ # Get values observatory_id = query.get("observatory") - start_time = UTCDateTime(query.get("starttime")) - end_time = UTCDateTime(query.get("endtime")) elements = query.get("channels", DEFAULT_ELEMENTS) sampling_period = query.get("sampling_period", DEFAULT_SAMPLING_PERIOD) data_type = query.get("type", DEFAULT_DATA_TYPE) output_format = query.get("format", DEFAULT_OUTPUT_FORMAT) - # Assign values or defaults - if not output_format: - output_format = DEFAULT_OUTPUT_FORMAT - else: - output_format = output_format.lower() + # Format values and get time values + output_format.lower() + observatory_id.upper() - observatory_id = observatory_id.upper() - if observatory_id not in VALID_OBSERVATORIES: - raise WebServiceException( - f"""Bad observatory id "{query.observatory_id}". Valid values are: {', '.join(VALID_OBSERVATORIES)}.""" - ) + try: + start_time = UTCDateTime(query.get('starttime')) + except: + start_time = query.get('starttime') if not start_time: now = datetime.now() today = UTCDateTime( @@ -298,38 +293,24 @@ def parse_query(query): day=now.day, hour=0) start_time = today - else: - try: - start_time = UTCDateTime(start_time) - except Exception: - raise WebServiceException( - 'Bad start_time value "%s".' - ' Valid values are ISO-8601 timestamps.' % start_time) + + try: + end_time = UTCDateTime(query.get("endtime")) + except: + end_time = query.get("endtime") if not end_time: - end_time = start_time + (24 * 60 * 60 - 1) - else: try: + end_time = start_time + (24 * 60 * 60 - 1) end_time = UTCDateTime(end_time) - except Exception: - raise WebServiceException( - 'Bad end_time value "%s".' - ' Valid values are ISO-8601 timestamps.' % end_time) - - if not sampling_period: - sampling_period = DEFAULT_SAMPLING_PERIOD - else: - sampling_period = sampling_period - if not data_type: - data_type = DEFAULT_DATA_TYPE - else: - data_type = data_type.lower() + except: + end_time = None # Create WebServiceQuery object and set properties params = WebServiceQuery() params.observatory_id = observatory_id params.starttime = start_time params.endtime = end_time params.elements = elements - params.sampling_period = str(get_interval_from_delta(sampling_period)) + params.sampling_period = get_interval_from_delta(sampling_period) params.data_type = data_type params.output_format = output_format return params @@ -348,6 +329,14 @@ def validate_query(query): WebServiceException if any parameters are not supported. """ + if not query.endtime: + raise WebServiceException( + 'Bad end_time value "%s".' + ' Valid values are ISO-8601 timestamps.' % query.endtime) + if type(query.starttime) == str: + raise WebServiceException( + 'Bad end_time value "%s".' + ' Valid values are ISO-8601 timestamps.' % query.starttime) if len(query.elements) > 4 and query.output_format == "iaga2002": raise WebServiceException( "No more than four elements allowed for iaga2002 format." -- GitLab