Skip to content

[Python] Add Support for Content-Disposition Header without filename - #11055

Merged
wing328 merged 11 commits into
OpenAPITools:masterfrom
Bandwidth-Sandbox:openapi-ck
Mar 8, 2022
Merged

[Python] Add Support for Content-Disposition Header without filename#11055
wing328 merged 11 commits into
OpenAPITools:masterfrom
Bandwidth-Sandbox:openapi-ck

Conversation

@ckoegel

@ckoegel ckoegel commented Dec 6, 2021

Copy link
Copy Markdown
Contributor

Generated python sdks previously threw an AttributeError when attempting to deserialize a file in an HTTP response body if there was no filename= attribute in the Content-Disposition header. model_utils.mustache has been updated to include support for responses with no filename in this header. The deserialize_file function now validates the type of the regex search before assigning the filename to the regex group. The regex search has been given a flag to allow it to search case-insensitively. If no filename is present, one is generated using the uuid library.

This can be validated by hitting the endpoint in the FastAPI app below. Removing ; filename="test.png" from the Content-Disposition header will cause the temporary file to be named default_<uuid>. With the filename populated, the filename will be test.png.

from fastapi import FastAPI, Response

app = FastAPI()


@app.get("/test-media")
async def media(response: Response):
    response.headers['Content-Disposition'] = 'attachment; filename="test.png"'
    response.headers['Content-Type'] = 'image/png'
    response.status_code = 200
    return response

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package 
    ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    For Windows users, please run the script in Git BASH.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @arun-nalla (2019/11) @spacether (2019/11)

@ckoegel
ckoegel marked this pull request as ready for review December 7, 2021 15:41
@spacether

Copy link
Copy Markdown
Contributor

Thank you for this PR. It looks great but you have not included any tests of it.
Can you add a test in this location:
https://github.com/OpenAPITools/openapi-generator/blob/master/samples/openapi3/client/petstore/python/tests_manual/test_fake_api.py#L493
to prove that the feature works?
This test will also throw an error in the future if anyone breaks this useful feature that you have added.

@ckoegel

ckoegel commented Dec 14, 2021

Copy link
Copy Markdown
Contributor Author

Thank you for this PR. It looks great but you have not included any tests of it. Can you add a test in this location: https://github.com/OpenAPITools/openapi-generator/blob/master/samples/openapi3/client/petstore/python/tests_manual/test_fake_api.py#L493 to prove that the feature works? This test will also throw an error in the future if anyone breaks this useful feature that you have added.

The test should be updated now, thanks for letting me know!

@ckoegel

ckoegel commented Jan 4, 2022

Copy link
Copy Markdown
Contributor Author

@wing328 Is there a chance this can be looked at soon? It's blocking for our development. Please let me know if anything else needs to be added from my end.

@spacether spacether added this to the 5.4.0 milestone Jan 4, 2022
@spacether

Copy link
Copy Markdown
Contributor

Can you please rebase on master and regenerate your samples? Samples are not up to date.
Other than that your PR looks great. Once you do that and tests pass we can merge it.

@ckoegel

ckoegel commented Jan 7, 2022

Copy link
Copy Markdown
Contributor Author

Can you please rebase on master and regenerate your samples?

@spacether did that merge with master accomplish this? Or is a true rebase required?

@ckoegel

ckoegel commented Jan 14, 2022

Copy link
Copy Markdown
Contributor Author

@spacether I'm attempting to keep my branches up to date with the master, but this most recent time, the bitrise test failed due to it not being able to resolve dependencies for org.openapitools:openapi-generator-online:jar:5.4.0-SNAPSHOT. Is this something I need to fix or is there something else going on here?

@wing328 wing328 modified the milestones: 5.4.0, 6.0.0 Jan 31, 2022
@wing328

wing328 commented Mar 8, 2022

Copy link
Copy Markdown
Member

LGTM. Thanks for the PR.

@wing328
wing328 merged commit 94b1440 into OpenAPITools:master Mar 8, 2022
@ckoegel
ckoegel deleted the openapi-ck branch July 11, 2023 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants