Created by: richardwhiuk
This is built on top of https://github.com/OpenAPITools/openapi-generator/pull/4441
Currently targeting merge to master. I'm not sure what the breaking position is here - this may well need to go into 5.0.x instead Breaking, so going into 5.0.x
Changes:
-
Hyper upgraded to Hyper 0.12.
-
NewService becomes MakeService
-
Request
onMakeContext
is not parameterised - instead, ReqBody, and ResBody are parameterized, and must implementhyper::body::Payload
.This means that our existing tuples (i.e.
(Body, Context)
) don't work - instead we have a typeContextualPayload
, which implements Payload, and derefs to an inner payload (the body), and contains a context.This is handled by the work done in https://github.com/Metaswitch/swagger-rs/pull/63 but has some fall out here as well.
-
tokio-proto
/tokio-core
is no longer supported, andhyper
instead depends ontokio
. -
Hyper depends on mime 0.3, but multipart depends on mime 0.2, so we now import both
-
-
Hyper TLS 0.2 and native-tls 0.1
We don't upgrade to Hyper TLS 0.3 in this MR, that'll happen in a future one.
-
Use Swagger Support library 3.x
-
Futures are now Send. This forces
ApiImpl
to be need toSend
as a result, and all forces Clients to beSend
+Sync
. -
We move to modern(ish) conventions, and get rid of all bunch of extern crate shenanigans, and move it into
src/lib.rs
. We try and sanitize thelib.rs
/Cargo.toml
while here. Note, this doesn't move the crate to 2018, that'll happen in a future MR -
We move a multipart helper function to swagger-rs, which is the home for all large blocks of code, as it's easier to maintain.
Rust Technical Committee
@frol, @farcaller, @bjgill
@dbcfd You may find it useful to build on top of this.
PR checklist
-
Read the contribution guidelines. -
If contributing template-only or documentation-only changes which will change sample output, build the project before. -
Run the shell script(s) under ./bin/
(or Windows batch scripts under.\bin\windows
) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the code or mustache templates for a language ({LANG}
) (e.g. php, ruby, python, etc). -
File the PR against the correct branch: master
,4.3.x
,5.0.x
. Default:master
. -
Copy the technical committee to review the pull request if your PR is targeting a particular programming language.