in analysis/webservice/algorithms/doms/subsetter.py [0:0]
def parse_arguments(self, request):
# Parse input arguments
self.log.debug('Parsing arguments')
primary_ds_name = request.get_argument('dataset', None)
matchup_ds_names = request.get_argument('insitu', None)
if is_blank(primary_ds_name) and is_blank(matchup_ds_names):
raise NexusProcessingException(reason="Either 'dataset', 'insitu', or both arguments are required",
code=400)
if matchup_ds_names is not None:
try:
matchup_ds_names = matchup_ds_names.split(',')
except:
raise NexusProcessingException(reason="'insitu' argument should be a comma-seperated list", code=400)
else:
matchup_ds_names = []
parameter_s = request.get_argument('parameter', None)
try:
start_time = request.get_start_datetime()
start_time = int((start_time - EPOCH).total_seconds())
except:
raise NexusProcessingException(
reason="'startTime' argument is required. Can be int value seconds from epoch or string format YYYY-MM-DDTHH:mm:ssZ",
code=400)
try:
end_time = request.get_end_datetime()
end_time = int((end_time - EPOCH).total_seconds())
except:
raise NexusProcessingException(
reason="'endTime' argument is required. Can be int value seconds from epoch or string format YYYY-MM-DDTHH:mm:ssZ",
code=400)
if start_time > end_time:
raise NexusProcessingException(
reason='The starting time must be before the ending time. Received startTime: %s, endTime: %s' % (
request.get_start_datetime().strftime(ISO_8601), request.get_end_datetime().strftime(ISO_8601)),
code=400)
try:
bounding_polygon = request.get_bounding_polygon()
except:
raise NexusProcessingException(
reason="'b' argument is required. Must be comma-delimited float formatted as Minimum (Western) Longitude, Minimum (Southern) Latitude, Maximum (Eastern) Longitude, Maximum (Northern) Latitude",
code=400)
depth_min = request.get_decimal_arg('depthMin', default=0)
depth_max = request.get_decimal_arg('depthMax', default=5)
if depth_min is not None and depth_max is not None and depth_min >= depth_max:
raise NexusProcessingException(
reason='Depth Min should be less than Depth Max', code=400)
platforms = request.get_argument('platforms', None)
return primary_ds_name, matchup_ds_names, parameter_s, start_time, end_time, \
bounding_polygon, depth_min, depth_max, platforms