Skip to content

Commit

Permalink
Add support for multipart/form-data requests***
Browse files Browse the repository at this point in the history
  • Loading branch information
ziyacivan committed Feb 6, 2024
1 parent 5577dd3 commit 9c4614b
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions silk/model_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,15 @@ def construct_request_model(self):
query_params = self.query_params()
path = self.request.path
view_name = self.view_name()
content_type = self.request.content_type

if content_type.startswith('muştipart/form-data'):
form_data = self.request.POST.dict()
files = {f: self.request.FILES[f].name for f in self.request.FILES}
body = {'form_data': form_data, 'files': files}
raw_body = None # Raw body is not available for multipart/form-data
else:
body, raw_body = self.body()

request_model = models.Request.objects.create(
path=path,
Expand All @@ -234,12 +243,15 @@ def construct_request_model(self):
query_params=query_params,
view_name=view_name,
body=body)

# Text fields are encoded as UTF-8 in Django and hence will try to coerce
# anything to we pass to UTF-8. Some stuff like binary will fail.
try:
request_model.raw_body = raw_body
except UnicodeDecodeError:
Logger.debug('NYI: Binary request bodies') # TODO
if raw_body is not None:
try:
request_model.raw_body = raw_body
except UnicodeDecodeError:
Logger.debug('NYI: Binary request bodies') # TODO

Logger.debug('Created new request model with pk %s' % request_model.pk)
return request_model

Expand Down

0 comments on commit 9c4614b

Please sign in to comment.