Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GO][Client] Use a *os.File for the API Client when uploading and downloading #14340

Merged
merged 4 commits into from
Jan 16, 2023

Conversation

icubbon
Copy link
Contributor

@icubbon icubbon commented Dec 29, 2022

Downloading and uploading files for the Go Client were broken recently but then fixed with #14046. However this fix breaks the pattern of the API returning pointers to things.

This change makes the API return *os.File and accept *os.File for uploading and downloading.

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 (6.3.0) (minor release - breaking changes with fallbacks), 7.0.x (breaking changes without fallbacks)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@wing328

@icubbon icubbon mentioned this pull request Dec 29, 2022
5 tasks
@wing328
Copy link
Member

wing328 commented Jan 11, 2023

cc @antihax (2017/11) @grokify (2018/07) @kemokemo (2018/09) @jirikuncar (2021/01) @ph4r5h4d (2021/04)

@darkrift
Copy link
Contributor

darkrift commented Jan 11, 2023

Can we not use an io.ReadCloser instead for the upload part (at least for binary format) ?

This would abstract from being a real physical file (with a filedescriptor) while still allow to read the bytes and close the stream at the end of the process.

I'm currently facing a problem where the generated API mandates the usage of a physical file but my source stream might be coming from a different location than a physical file (fetched from s3 for instance or any other remote service).

@icubbon
Copy link
Contributor Author

icubbon commented Jan 11, 2023

Can we not use an io.ReadCloser instead for the upload part (at least for binary format) ?

This would abstract from being a real physical file (with a filedescriptor) while still allow to read the bytes and close the stream at the end of the process.

I'm currently facing a problem where the generated API mandates the usage of a physical file but my source stream might be coming from a different location than a physical file (fetched from s3 for instance or any other remote service).

Potentially, but that would be a breaking change to the API. This is meant to fix an existing bug without breaking any current APIs.

@wing328
Copy link
Member

wing328 commented Jan 12, 2023

Right. Let's avoid breaking changes for now before the upcoming v6.3.0 release.

One way is to add an option useAbstractionForFiles to meet requirement similar to what we've done in some of the Java generators, e.g. #14316

@wing328
Copy link
Member

wing328 commented Jan 16, 2023

let's go with this change. i'll try to add a test later

thanks again for the PR.

@wing328 wing328 merged commit 74073df into OpenAPITools:master Jan 16, 2023
@wing328 wing328 added this to the 6.3.0 milestone Jan 16, 2023
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