@@ -411,6 +411,7 @@ def update(
411
411
serializer = self .get_serializer (adapter , data = request .data , partial = True )
412
412
serializer .is_valid (raise_exception = True )
413
413
414
+ # Validate URLs for security if metadata is being updated
414
415
# Validate URLs for security if metadata is being updated
415
416
if AdapterKeys .ADAPTER_METADATA_B in serializer .validated_data :
416
417
adapter_id = (
@@ -420,27 +421,30 @@ def update(
420
421
adapter_metadata_b = serializer .validated_data .get (
421
422
AdapterKeys .ADAPTER_METADATA_B
422
423
)
423
-
424
- if not adapter_id or not adapter_metadata_b :
425
- raise ValidationError ("Missing adapter metadata for validation." )
426
-
427
- # Decrypt metadata to get configuration
428
- try :
429
- fernet = Fernet (settings .ENCRYPTION_KEY .encode ("utf-8" ))
430
- decrypted_json = fernet .decrypt (adapter_metadata_b )
431
- decrypted_metadata = json .loads (decrypted_json .decode ("utf-8" ))
432
- except Exception as e : # InvalidToken/JSONDecodeError/TypeError/etc.
433
- raise ValidationError ("Invalid adapter metadata." ) from e
434
-
435
- # Validate URLs for this adapter configuration
436
- try :
437
- _ = AdapterProcessor .validate_adapter_urls (adapter_id , decrypted_metadata )
438
- except Exception as e :
439
- # Format error message similar to test adapter API
440
- adapter_name = decrypted_metadata .get (AdapterKeys .ADAPTER_NAME , "adapter" )
441
- error_detail = f"Error testing '{ adapter_name } '. { e !s} "
442
- raise ValidationError (error_detail ) from e
443
-
424
+ if not adapter_id or not adapter_metadata_b :
425
+ raise ValidationError ("Missing adapter metadata for validation." )
426
+ # Decrypt metadata to get configuration
427
+ try :
428
+ fernet = Fernet (settings .ENCRYPTION_KEY .encode ("utf-8" ))
429
+ decrypted_json = fernet .decrypt (adapter_metadata_b )
430
+ decrypted_metadata = json .loads (decrypted_json .decode ("utf-8" ))
431
+ if not isinstance (decrypted_metadata , dict ):
432
+ raise ValidationError (
433
+ "Invalid adapter metadata format: expected JSON object."
434
+ )
435
+ except Exception as e : # InvalidToken/JSONDecodeError/TypeError/etc.
436
+ raise ValidationError ("Invalid adapter metadata." ) from e
437
+ # Validate URLs for this adapter configuration
438
+ try :
439
+ AdapterProcessor .validate_adapter_urls (adapter_id , decrypted_metadata )
440
+ except Exception as e :
441
+ adapter_name = (
442
+ decrypted_metadata .get (AdapterKeys .ADAPTER_NAME , "adapter" )
443
+ if isinstance (decrypted_metadata , dict )
444
+ else "adapter"
445
+ )
446
+ error_detail = f"Error testing '{ adapter_name } '. { e !s} "
447
+ raise ValidationError (error_detail ) from e
444
448
if use_platform_unstract_key :
445
449
logger .error ("Processing adapter with platform key" )
446
450
serializer = self .get_serializer (adapter , data = request .data , partial = True )
0 commit comments