* Remove redundant Rust use statement
* Return errors only for 4xx and 5xx in Rust reqwest
Since 1xx and 3xx are perfectly valid status codes the client might
need to handle.
see: https://docs.rs/reqwest/0.11.0/reqwest/struct.StatusCode.html#method.is_informational
* Regenerate samples
Co-authored-by: Gabriel Féron <feron.gabriel@gmail.com>
* Stronger typing for http errors with Rust client. (#5609).
* Error structure can be parametrized (but is still hardcoded with `serde_json::Value` in generated code).
* Each API method has is own enum of functionnal errors.
* Fix the missing "Debug" derivation for API error enums.
* Generate models for error deserialization.
* Handle several 2xx success models.
* Expose new API objects, required to use the API (params, success, error structs/enums).
Co-authored-by: William Cheng <wing328hk@gmail.com>
This PR includes theses changes:
- Handling "optional" parameters is not optional anymore. Handling an additional parameter for it makes templates more complicated, and IMO, it is not worth it (as discussed in issue, it is an "acceptable" breaking change).
- Optional parameters are handled everywhere: path params, query params, form params... Generated sample code compiles (both hyper and reqwest libraries).
* Add support for the `discriminator` feature of OpenAPI 3, and implement it with `enum` in Rust
* Add all missing explicit `dyn` to trait types to remove warnings
* Add missing re-export for properties that are enum (was missing from #2244).
As we discovered in #3463, there are various bits of the rust client generator that are currently untested. This PR adds tests for various generator-specific types, and also files.
Follows the example of the rust-server generator for making it easy to add new test specs. This should make it easier for future contributors to make sure that their contributions are tested
* Fixes NPE when no outputDir is set
* Fix behaviors of default values for values not provided by user
* Easier handling of default behavior in settings.
* Fixes for dynamic config deserialization (specifically, ruby client sample fix)
* Tests for WorkflowSettings (defaults, modified defaults, nulls)
* Test modification of WorkflowSettings defaults for both class constructor and builder
It fails if the model contains a float, which don't implement Eq.
Fix for bug introduced in #3309.
We really need to improve the testing of the rust generator to catch this sort of mistake in future. I don't have time to do this now, though.
I already contributed proper enum supports a few weeks ago, but somehow missed actually using them when they're used as a property. This PR fixes that.
I also took the liberty of fixing a bunch of unused warnings.
* Make sure we use the enum types in Rust
* Fix unused warnings in Rust and regenerate samples
* Use crate:: import path that works both with Rust 2015 and 2018
* Derive PartialEq and Eq in generated Rust structs and enums
* Better Rust client imports.
* No more "unused_imports" in models for serde_json::Value.
* No more compilation problem for apis requiring serde_json::Value.
* "crate::" prefix for models and apis imports, for compatibility with Rust 2018 edition.
* Rust samples regeneration using new code.
* Add support for enum schemas and properties to the rust generator
Also:
* Skip serializing a field with serde if it's optional and empty
* Fix borrow checker error when using &std::path::Path (should be std::path::PathBuf)
* Add script to generate sample with rust-reqwest
* Regenerate petstore sample for both rust targets
* Remove go code from README.md
* Fix formatting of serde skip_serializing_if attribute
Rust clients code format cleanup (with some breaking changes for model structures):
* Application of Rust style in client files (4 spaces padding). Remove useless blank lines.
* Replace getters/setters in models by public fields.
* Add a trailing comma in struct fields.
* Sample Rust clients regeneration.