@@ -257,51 +257,52 @@ def swarm() -> Response:
257257 user_count = None
258258 spawn_rate = None
259259 for key , value in request .form .items ():
260- if key == "user_count" : # if we just renamed this field to "users" we wouldn't need this
261- user_count = int (value )
262- parsed_options_dict ["users" ] = user_count
263- elif key == "spawn_rate" :
264- spawn_rate = float (value )
265- parsed_options_dict [key ] = spawn_rate
266- elif key == "host" :
267- # Replace < > to guard against XSS
268- environment .host = str (request .form ["host" ]).replace ("<" , "" ).replace (">" , "" )
269- parsed_options_dict [key ] = environment .host
270- elif key == "user_classes" :
271- # Set environment.parsed_options.user_classes to the selected user_classes
272- parsed_options_dict [key ] = request .form .getlist ("user_classes" )
273- elif key == "run_time" :
274- if not value :
275- continue
276- try :
277- run_time = parse_timespan (value )
278- parsed_options_dict [key ] = run_time
279- except ValueError :
280- err_msg = "Valid run_time formats are : 20, 20s, 3m, 2h, 1h20m, 3h30m10s, etc."
281- logger .error (err_msg )
282- return jsonify ({"success" : False , "message" : err_msg , "host" : environment .host })
283- elif key == "profile" :
284- environment .profile = str (request .form ["profile" ]) or None
285- parsed_options_dict [key ] = environment .profile
286- elif key in parsed_options_dict :
287- # update the value in environment.parsed_options, but dont change the type.
288- parsed_options_value = parsed_options_dict [key ]
289-
290- if isinstance (parsed_options_value , bool ):
291- parsed_options_dict [key ] = value == "true"
292- elif parsed_options_value is None :
293- parsed_options_dict [key ] = value
294- elif isinstance (parsed_options_value , list ):
295- if "," in value :
296- value_as_list = value .split ("," )
260+ match key :
261+ case "user_count" : # if we just renamed this field to "users" we wouldn't need this
262+ user_count = int (value )
263+ parsed_options_dict ["users" ] = user_count
264+ case "spawn_rate" :
265+ spawn_rate = float (value )
266+ parsed_options_dict [key ] = spawn_rate
267+ case "host" :
268+ # Replace < > to guard against XSS
269+ environment .host = str (request .form ["host" ]).replace ("<" , "" ).replace (">" , "" )
270+ parsed_options_dict [key ] = environment .host
271+ case "user_classes" :
272+ # Set environment.parsed_options.user_classes to the selected user_classes
273+ parsed_options_dict [key ] = request .form .getlist ("user_classes" )
274+ case "run_time" :
275+ if not value :
276+ continue
277+ try :
278+ run_time = parse_timespan (value )
279+ parsed_options_dict [key ] = run_time
280+ except ValueError :
281+ err_msg = "Valid run_time formats are : 20, 20s, 3m, 2h, 1h20m, 3h30m10s, etc."
282+ logger .error (err_msg )
283+ return jsonify ({"success" : False , "message" : err_msg , "host" : environment .host })
284+ case "profile" :
285+ environment .profile = str (request .form ["profile" ]) or None
286+ parsed_options_dict [key ] = environment .profile
287+ case _ if key in parsed_options_dict :
288+ # update the value in environment.parsed_options, but dont change the type.
289+ parsed_options_value = parsed_options_dict [key ]
290+
291+ if isinstance (parsed_options_value , bool ):
292+ parsed_options_dict [key ] = value == "true"
293+ elif parsed_options_value is None :
294+ parsed_options_dict [key ] = value
295+ elif isinstance (parsed_options_value , list ):
296+ if "," in value :
297+ value_as_list = value .split ("," )
298+ else :
299+ value_as_list = request .form .getlist (key )
300+ if all (isinstance (x , int ) for x in parsed_options_value ):
301+ parsed_options_dict [key ] = list (map (int , value_as_list ))
302+ else :
303+ parsed_options_dict [key ] = value_as_list
297304 else :
298- value_as_list = request .form .getlist (key )
299- if all (isinstance (x , int ) for x in parsed_options_value ):
300- parsed_options_dict [key ] = list (map (int , value_as_list ))
301- else :
302- parsed_options_dict [key ] = value_as_list
303- else :
304- parsed_options_dict [key ] = type (parsed_options_value )(value )
305+ parsed_options_dict [key ] = type (parsed_options_value )(value )
305306
306307 if environment .shape_class and environment .runner is not None :
307308 environment .runner .start_shape ()
0 commit comments