Skip to content

Commit db3acff

Browse files
Update backend/adapter_processor_v2/views.py
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Gayathri <[email protected]>
1 parent 08c5044 commit db3acff

File tree

1 file changed

+25
-21
lines changed

1 file changed

+25
-21
lines changed

backend/adapter_processor_v2/views.py

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ def update(
411411
serializer = self.get_serializer(adapter, data=request.data, partial=True)
412412
serializer.is_valid(raise_exception=True)
413413

414+
# Validate URLs for security if metadata is being updated
414415
# Validate URLs for security if metadata is being updated
415416
if AdapterKeys.ADAPTER_METADATA_B in serializer.validated_data:
416417
adapter_id = (
@@ -420,27 +421,30 @@ def update(
420421
adapter_metadata_b = serializer.validated_data.get(
421422
AdapterKeys.ADAPTER_METADATA_B
422423
)
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
444448
if use_platform_unstract_key:
445449
logger.error("Processing adapter with platform key")
446450
serializer = self.get_serializer(adapter, data=request.data, partial=True)

0 commit comments

Comments
 (0)