[Rust Server] Hyper 0.12 Support #4519
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is built on top of #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 insteadBreaking, so going into 5.0.xChanges:
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 Hyper 0.12 support Metaswitch/swagger-rs#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 MRWe 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
./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).master
,4.3.x
,5.0.x
. Default:master
.