Skip to content

Commit 1b61eef

Browse files
committed
Add post_file_with_request APIs
1 parent 3b4c5b1 commit 1b61eef

File tree

2 files changed

+37
-23
lines changed

2 files changed

+37
-23
lines changed

servicestack/clients.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,28 @@ def send(self, request, method: Any = None, body: Any = None, args: Dict[str, An
366366
args=args,
367367
response_as=response_as))
368368

369-
def post_files_with_request(self, request: IReturn[T],
370-
files: Union[UploadFile, List[UploadFile]]) -> T:
369+
def post_file_with_request(self, request: IReturn[T], file: UploadFile) -> T:
370+
"""
371+
Post file with a request DTO using multipart/form-data
372+
373+
:param request: The request DTO
374+
:param files: Single UploadFile or List of UploadFile objects
375+
:return: Response DTO
376+
"""
377+
return self.post_files_with_request_url(combine_with(self.reply_base_url, nameof(request)), request, [files])
378+
379+
def post_file_with_request_url(self, request_uri: str, request: IReturn[T], file: UploadFile) -> T:
380+
"""
381+
Post file with a request DTO using multipart/form-data
382+
383+
:param request_uri: The request URI
384+
:param request: The request DTO
385+
:param files: Single UploadFile or List of UploadFile objects
386+
:return: Response DTO
387+
"""
388+
return self.post_files_with_request_url(combine_with(self.reply_base_url, nameof(request)), request, [files])
389+
390+
def post_files_with_request(self, request: IReturn[T], files: List[UploadFile]) -> T:
371391
"""
372392
Post files with a request DTO using multipart/form-data
373393
@@ -377,8 +397,7 @@ def post_files_with_request(self, request: IReturn[T],
377397
"""
378398
return self.post_files_with_request_url(combine_with(self.reply_base_url, nameof(request)), request, files)
379399

380-
def post_files_with_request_url(self, request_uri: str, request: Any,
381-
files: Union[UploadFile, List[UploadFile]]) -> T:
400+
def post_files_with_request_url(self, request_uri: str, request: Any, files: List[UploadFile]) -> T:
382401
"""
383402
Post files with a request DTO using multipart/form-data
384403

tests/test_aiserver.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,16 @@ def test_can_speech_to_text(self):
4343

4444
# Open the test audio file in binary read mode
4545
with open("tests/files/test_audio.wav", "rb") as audio_file:
46-
upload = UploadFile(
47-
field_name="audio",
48-
file_name="test_audio.wav",
49-
content_type="audio/wav",
50-
stream=audio_file
51-
)
5246

5347
# Send request with file
54-
response: GenerationResponse = self.client.post_files_with_request(
48+
response: GenerationResponse = self.client.post_file_with_request(
5549
request=SpeechToText(),
56-
files=upload
57-
)
50+
file=UploadFile(
51+
field_name="audio",
52+
file_name="test_audio.wav",
53+
content_type="audio/wav",
54+
stream=audio_file
55+
))
5856

5957
# Verify response structure
6058
self.assertIsNotNone(response)
@@ -85,19 +83,16 @@ def test_image_to_image(self):
8583

8684
# Open the test image file in binary read mode
8785
with open("tests/files/test_image.png", "rb") as image_file:
88-
upload = UploadFile(
89-
field_name="image",
90-
file_name="test_image.png",
91-
content_type="image/png",
92-
stream=image_file
93-
)
9486

9587
# Send request with file
96-
response: GenerationResponse = self.client.post_files_with_request_url(
97-
request_uri="/api/ImageToImage",
88+
response: GenerationResponse = self.client.post_file_with_request(
9889
request=request,
99-
files=upload
100-
)
90+
file=UploadFile(
91+
field_name="image",
92+
file_name="test_image.png",
93+
content_type="image/png",
94+
stream=image_file
95+
))
10196

10297
# Verify response structure
10398
self.assertIsNotNone(response)

0 commit comments

Comments
 (0)