🐛(backend) fix issues with conversion microservice integration
Minor adjustments were needed after working in parallel on two PRs. The microservice now accepts an API key without requiring it as a Bearer token. A mistake in reading the microservice response was corrected after refactoring the serializer to delegate logic to the converter microservice.
This commit is contained in:
committed by
aleb_the_flash
parent
dc9b375ff5
commit
52534db3e1
@@ -275,7 +275,7 @@ class ServerCreateDocumentSerializer(serializers.Serializer):
|
|||||||
language = user.language or language
|
language = user.language or language
|
||||||
|
|
||||||
try:
|
try:
|
||||||
converter_response = YdocConverter().convert_markdown(
|
document_content = YdocConverter().convert_markdown(
|
||||||
validated_data["content"]
|
validated_data["content"]
|
||||||
)
|
)
|
||||||
except ConversionError as err:
|
except ConversionError as err:
|
||||||
@@ -283,7 +283,7 @@ class ServerCreateDocumentSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
document = models.Document.objects.create(
|
document = models.Document.objects.create(
|
||||||
title=validated_data["title"],
|
title=validated_data["title"],
|
||||||
content=converter_response["content"],
|
content=document_content,
|
||||||
creator=user,
|
creator=user,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class YdocConverter:
|
|||||||
@property
|
@property
|
||||||
def auth_header(self):
|
def auth_header(self):
|
||||||
"""Build microservice authentication header."""
|
"""Build microservice authentication header."""
|
||||||
return f"Bearer {settings.CONVERSION_API_KEY}"
|
return settings.CONVERSION_API_KEY
|
||||||
|
|
||||||
def convert_markdown(self, text):
|
def convert_markdown(self, text):
|
||||||
"""Convert a Markdown text into our internal format using an external microservice."""
|
"""Convert a Markdown text into our internal format using an external microservice."""
|
||||||
@@ -50,6 +50,7 @@ class YdocConverter:
|
|||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
timeout=settings.CONVERSION_API_TIMEOUT,
|
timeout=settings.CONVERSION_API_TIMEOUT,
|
||||||
|
verify=settings.CONVERSION_API_SECURE,
|
||||||
)
|
)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
conversion_response = response.json()
|
conversion_response = response.json()
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ def mock_convert_markdown():
|
|||||||
with patch.object(
|
with patch.object(
|
||||||
YdocConverter,
|
YdocConverter,
|
||||||
"convert_markdown",
|
"convert_markdown",
|
||||||
return_value={"content": "Converted document content"},
|
return_value="Converted document content",
|
||||||
) as mock:
|
) as mock:
|
||||||
yield mock
|
yield mock
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ def test_auth_header(settings):
|
|||||||
"""Test authentication header generation."""
|
"""Test authentication header generation."""
|
||||||
settings.CONVERSION_API_KEY = "test-key"
|
settings.CONVERSION_API_KEY = "test-key"
|
||||||
converter = YdocConverter()
|
converter = YdocConverter()
|
||||||
assert converter.auth_header == "Bearer test-key"
|
assert converter.auth_header == "test-key"
|
||||||
|
|
||||||
|
|
||||||
def test_convert_markdown_empty_text():
|
def test_convert_markdown_empty_text():
|
||||||
@@ -116,10 +116,11 @@ def test_convert_markdown_full_integration(mock_post, settings):
|
|||||||
"http://test.com",
|
"http://test.com",
|
||||||
json={"content": "test markdown"},
|
json={"content": "test markdown"},
|
||||||
headers={
|
headers={
|
||||||
"Authorization": "Bearer test-key",
|
"Authorization": "test-key",
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
timeout=5,
|
timeout=5,
|
||||||
|
verify=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -524,6 +524,11 @@ class Base(Configuration):
|
|||||||
environ_name="CONVERSION_API_TIMEOUT",
|
environ_name="CONVERSION_API_TIMEOUT",
|
||||||
environ_prefix=None,
|
environ_prefix=None,
|
||||||
)
|
)
|
||||||
|
CONVERSION_API_SECURE = values.Value(
|
||||||
|
default=False,
|
||||||
|
environ_name="CONVERSION_API_SECURE",
|
||||||
|
environ_prefix=None,
|
||||||
|
)
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
# We want to make it easy to log to console but by default we log production
|
# We want to make it easy to log to console but by default we log production
|
||||||
|
|||||||
Reference in New Issue
Block a user