Skip to content

Commit 56bda8e

Browse files
committed
Hyper1 fixup compilation errors in all examples
* Add tests to all examples, clippy, tests, cli-bin, run examples * Use headers Auth structs * Fixup various clippy lints * Move more Service impl to use BoxBody * Reduce generic restriction on some Service impl where possible
1 parent 0b11548 commit 56bda8e

File tree

450 files changed

+68066
-3475
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

450 files changed

+68066
-3475
lines changed

.github/workflows/samples-rust.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,54 @@ jobs:
2626
- samples/client/others/rust/
2727
- samples/client/petstore/rust/
2828
- samples/server/petstore/rust-server/
29+
- samples/server/petstore/rust-server-deprecated/
2930
- samples/server/petstore/rust-axum/
3031
steps:
3132
- uses: actions/checkout@v4
3233
- uses: actions-rs/toolchain@v1
3334
with:
3435
toolchain: stable
36+
37+
- name: Rust cache
38+
uses: Swatinem/rust-cache@v2
39+
with:
40+
cache-targets: false # Don't cache workspace target directories as they don't exist
41+
cache-directories:
42+
${{ matrix.sample }}/target
43+
workspaces: |
44+
${{ matrix.sample }}/output/*
45+
3546
- name: Build
3647
working-directory: ${{ matrix.sample }}
3748
run: cargo build --all-targets --all-features
49+
- name: Tests
50+
working-directory: ${{ matrix.sample }}
51+
run: |
52+
set -e
53+
# Skip samples/client/petstore/rust/ as it's tests are failing.
54+
if [[ "${{ matrix.sample }}" == "samples/client/petstore/rust/" ]]; then
55+
echo "Skipping tests for samples/client/petstore/rust/"
56+
exit 0
57+
fi
58+
59+
# Iterate through each example and test various features
60+
for package in $(find . -maxdepth 1 -mindepth 1 -type d)
61+
do
62+
# Not all versions have a client example
63+
if test -f examples/client/main.rs; then
64+
cargo build --example client --features="client"
65+
fi
66+
# Not all versions have a server example
67+
if test -f examples/server/main.rs; then
68+
cargo build --example server --features="server"
69+
fi
70+
# Test the CLI works if present
71+
if test -f bin/cli.rs; then
72+
cargo build --bin ${package##*/} --features cli
73+
target/debug/${package##*/} --help
74+
fi
75+
cargo fmt
76+
cargo test
77+
cargo clippy
78+
cargo doc
79+
done

bin/configs/rust-server-deprecated-multipart-v3.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: rust-server-deprecated
2-
outputDir: samples/server/petstore/rust-server/output/multipart-v3
2+
outputDir: samples/server/petstore/rust-server-deprecated/output/multipart-v3
33
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/multipart-v3.yaml
4-
templateDir: modules/openapi-generator/src/main/resources/rust-server
4+
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
55
generateAliasAsModel: true
66
additionalProperties:
77
hideGenerationTimestamp: "true"

bin/configs/rust-server-deprecated-no-example-v3.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: rust-server-deprecated
2-
outputDir: samples/server/petstore/rust-server/output/no-example-v3
2+
outputDir: samples/server/petstore/rust-server-deprecated/output/no-example-v3
33
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/no-example-v3.yaml
4-
templateDir: modules/openapi-generator/src/main/resources/rust-server
4+
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
55
generateAliasAsModel: true
66
additionalProperties:
77
hideGenerationTimestamp: "true"

bin/configs/rust-server-deprecated-openapi-v3.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: rust-server-deprecated
2-
outputDir: samples/server/petstore/rust-server/output/openapi-v3
2+
outputDir: samples/server/petstore/rust-server-deprecated/output/openapi-v3
33
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/openapi-v3.yaml
4-
templateDir: modules/openapi-generator/src/main/resources/rust-server
4+
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
55
generateAliasAsModel: true
66
additionalProperties:
77
hideGenerationTimestamp: "true"

bin/configs/rust-server-deprecated-ops-v3.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: rust-server-deprecated
2-
outputDir: samples/server/petstore/rust-server/output/ops-v3
2+
outputDir: samples/server/petstore/rust-server-deprecated/output/ops-v3
33
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/ops-v3.yaml
4-
templateDir: modules/openapi-generator/src/main/resources/rust-server
4+
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
55
generateAliasAsModel: true
66
additionalProperties:
77
hideGenerationTimestamp: "true"

bin/configs/rust-server-deprecated-petstore-with-fake-endpoints-models-for-testing.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: rust-server-deprecated
2-
outputDir: samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing
2+
outputDir: samples/server/petstore/rust-server-deprecated/output/petstore-with-fake-endpoints-models-for-testing
33
inputSpec: modules/openapi-generator/src/test/resources/2_0/rust-server/petstore-with-fake-endpoints-models-for-testing.yaml
4-
templateDir: modules/openapi-generator/src/main/resources/rust-server
4+
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
55
generateAliasAsModel: true
66
additionalProperties:
77
hideGenerationTimestamp: "true"

bin/configs/rust-server-deprecated-ping-bearer-auth-v3.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: rust-server-deprecated
2-
outputDir: samples/server/petstore/rust-server/output/ping-bearer-auth
2+
outputDir: samples/server/petstore/rust-server-deprecated/output/ping-bearer-auth
33
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust-server/ping-bearer-auth.yaml
4-
templateDir: modules/openapi-generator/src/main/resources/rust-server
4+
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
55
generateAliasAsModel: true
66
additionalProperties:
77
hideGenerationTimestamp: "true"

bin/configs/rust-server-deprecated-test.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
generatorName: rust-server-deprecated
2-
outputDir: samples/server/petstore/rust-server/output/rust-server-test
2+
outputDir: samples/server/petstore/rust-server-deprecated/output/rust-server-test
33
inputSpec: modules/openapi-generator/src/test/resources/2_0/rust-server/rust-server-test.yaml
4-
templateDir: modules/openapi-generator/src/main/resources/rust-server
4+
templateDir: modules/openapi-generator/src/main/resources/rust-server-deprecated
55
generateAliasAsModel: true
66
additionalProperties:
77
hideGenerationTimestamp: "true"

docs/generators.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ The following generators are available:
142142
* [ruby-sinatra](generators/ruby-sinatra.md)
143143
* [rust-axum (beta)](generators/rust-axum.md)
144144
* [rust-server](generators/rust-server.md)
145+
* [rust-server-deprecated](generators/rust-server-deprecated.md)
145146
* [scala-akka-http-server (beta)](generators/scala-akka-http-server.md)
146147
* [scala-cask](generators/scala-cask.md)
147148
* [scala-finch](generators/scala-finch.md)

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import java.util.*;
4747
import java.util.regex.Matcher;
4848
import java.util.regex.Pattern;
49+
import java.util.stream.Collectors;
4950

5051
import static org.openapitools.codegen.utils.StringUtils.camelize;
5152
import static org.openapitools.codegen.utils.StringUtils.underscore;
@@ -222,7 +223,7 @@ public RustServerCodegen() {
222223
*/
223224
supportingFiles.add(new SupportingFile("openapi.mustache", "api", "openapi.yaml"));
224225
supportingFiles.add(new SupportingFile("Cargo.mustache", "", "Cargo.toml"));
225-
supportingFiles.add(new SupportingFile("cargo-config", ".cargo", "config"));
226+
supportingFiles.add(new SupportingFile("cargo-config", ".cargo", "config.toml"));
226227
supportingFiles.add(new SupportingFile("gitignore", "", ".gitignore"));
227228
supportingFiles.add(new SupportingFile("lib.mustache", "src", "lib.rs"));
228229
supportingFiles.add(new SupportingFile("context.mustache", "src", "context.rs"));
@@ -233,7 +234,6 @@ public RustServerCodegen() {
233234
supportingFiles.add(new SupportingFile("server-server_auth.mustache", "src/server", "server_auth.rs"));
234235
supportingFiles.add(new SupportingFile("client-mod.mustache", "src/client", "mod.rs"));
235236
supportingFiles.add(new SupportingFile("example-server-main.mustache", "examples/server", "main.rs"));
236-
supportingFiles.add(new SupportingFile("example-server-tokio-io.rs", "examples/server", "tokio_io.rs"));
237237
supportingFiles.add(new SupportingFile("example-server-server.mustache", "examples/server", "server.rs"));
238238
supportingFiles.add(new SupportingFile("example-server-auth.mustache", "examples/server", "server_auth.rs"));
239239
supportingFiles.add(new SupportingFile("example-client-main.mustache", "examples/client", "main.rs"));
@@ -1532,7 +1532,16 @@ private void processParam(CodegenParameter param, CodegenOperation op) {
15321532
}
15331533
} else if (param.isArray) {
15341534
param.vendorExtensions.put("x-format-string", "{:?}");
1535-
example = (param.example != null) ? param.example : "&Vec::new()";
1535+
if (param.items.isString) {
1536+
// We iterate through the list of string and ensure they end up in the format vec!["example".to_string()]
1537+
example = (param.example != null)
1538+
? "&vec![" + Arrays.stream(param.example.replace("[", "").replace("]", "").split(","))
1539+
.map(item -> item + ".to_string()")
1540+
.collect(Collectors.joining(", ")) + "]"
1541+
: "&Vec::new()";
1542+
} else {
1543+
example = (param.example != null) ? param.example : "&Vec::new()";
1544+
}
15361545
} else {
15371546
param.vendorExtensions.put("x-format-string", "{:?}");
15381547
if (param.example != null) {

0 commit comments

Comments
 (0)