madisonmlin opened a new pull request, #3707: URL: https://github.com/apache/texera/pull/3707
### Purpose ### This pull request partially addresses issue #3404 by changing the download method of workflow result downloads to use browser native downloads. Using the browser to handle downloads enables the browser's file download UI, which includes a progress bar when downloading larger files. ### Changes ### Previously, we would use HttpClient to request the result file from the backend as a Blob and download the Blob to the local filesystem. Now, we make a form submission to request the result file from the backend, causing the browser to handle the download. The backend logic for creating the file stream remains the same. Headers like Bearer authentication headers cannot be attached to form requests. As such, we have the frontend separately request a JWT token string, which is then passed into the form request. The request is considered authenticated when the backend is able to successfully decode the JWT (which contains the download parameters) and verify that the user is of a valid role type. #### Summary of Changes #### - Added endpoint to generate temporary JWT token, including download parameters (e.g. `workflowId`, `filename`) as claims in the token - Changed frontend logic for local workflow result downloads to send a form request instead of an HttpClient request to trigger download, allowing the browser to handle the download - Added endpoint to receive form request and authenticate the request via the JWT token before triggering download ### Demonstration ### -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
