Skip to content

Conversation

@Kraust
Copy link
Contributor

@Kraust Kraust commented Aug 6, 2025

Worked on the implementation of the Oat++ Client generator yesterday, and it's currently in a functional state although there are a couple of corner cases I don't like, specifically around how I handled Multipart form data and how return models have to be parsed by the user (allows for better handling of specs that return different models based on return code). I've done some limited testing with the client and it appears to work well with the server.

I had wanted to dynamically generate an API tester with the main.cpp, however C++ has poor support for argument parsing and I wanted to keep the dependencies as minimal as possible for both the client and the server as I plan to add support for some of the oat++ modules in the future (mbedtls is probably next).

This coupled with the client provide a minimal dependency C++ client and server implementation that are designed to work together. The only other generators we have that work like this are the Qt ones which come with Qt as a dependency (a non-starter as a dependency for me).

Also took the updates from #21601 and include a Oat++ client test spec to match the server one.

Like with the server, I maintain a 7.0.0 branch of this generator locally and that's the version where I do the majority my testing.

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 || exit
    ./bin/generate-samples.sh ./bin/configs/*.yaml || exit
    ./bin/utils/export_docs_generators.sh || exit
    
    (For Windows users, please run the script in WSL)
    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*.
    IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
  • File the PR against the correct branch: master (upcoming 7.x.0 minor release - breaking changes with fallbacks), 8.0.x (breaking changes without fallbacks)
  • If your PR solves a reported issue, reference it using GitHub's linking syntax (e.g., having "fixes #123" present in the PR description)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@ravinikam (2017/07) @stkrwork (2017/07) @etherealjoy (2018/02) @MartinDelille (2018/03) @muttleyxd (2019/08) @aminya (2025/05)

@wing328
Copy link
Member

wing328 commented Aug 7, 2025

Nice! Thanks for contributing the new client generator for C++.

Will try to include it in the release due this weekend

@wing328 wing328 added this to the 7.15.0 milestone Aug 7, 2025
@wing328
Copy link
Member

wing328 commented Aug 7, 2025

ran some tests locally and the result is good

let's give it a try

thanks for your contribution.

@wing328 wing328 merged commit 5b8a115 into OpenAPITools:master Aug 7, 2025
18 checks passed
Goopher pushed a commit to Goopher/openapi-generator that referenced this pull request Sep 9, 2025
* Added cpp-oatpp-client.

* Updated pipelines.

* Should match formatting now.

* Moved includes around.

* Ran doc generator.
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.

2 participants