Skip to content

Fix TUS complete: wrap parts in {"parts": [...]} - #3

Open
ghultink wants to merge 1 commit into
mainfrom
fix/tus-complete-parts-wrapper
Open

Fix TUS complete: wrap parts in {"parts": [...]}#3
ghultink wants to merge 1 commit into
mainfrom
fix/tus-complete-parts-wrapper

Conversation

@ghultink

Copy link
Copy Markdown
Contributor

Problem

TusUploader._tus_complete posts the parts list as a bare JSON array:

resp = self._client._session.post(url, json=parts, ...)

The SAPI POST /sapi/tus/{id}/complete endpoint expects a {"parts": [...]} object. Given a bare array it builds an empty CompleteMultipartUpload body, which S3 rejects:

500 — Error executing "CompleteMultipartUpload": MalformedXML —
The XML you provided was not well-formed or did not validate against our published schema

This makes every TUS upload fail at the final step — both upload_file() and create_mediaclip().

Fix

Wrap the payload in {"parts": parts}, matching the Blue Billywig Node CLI (bb-sapi.mjs, which sends JSON.stringify({ parts })). Test updated accordingly.

Verification

Verified live against a publication: the part PUTs to S3 already returned 200; with the wrapper the complete call now returns 200 {"success": true, ...} and the mediaclip transcodes normally. Confirmed by importing real clips end-to-end.

_tus_complete posted the parts list as a bare JSON array. The SAPI
/sapi/tus/{id}/complete endpoint expects a {"parts": [...]} object; given a
bare array it builds an empty CompleteMultipartUpload body, which S3 rejects
with MalformedXML (surfaced as HTTP 500). Every TUS upload (upload_file and
create_mediaclip) therefore failed at the complete step.

Wrap the payload in {"parts": parts}, matching the Blue Billywig Node CLI.
Verified live against a publication: uploads now complete with 200/success.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant