Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Merge requests
  • !4519

[Rust Server] Hyper 0.12 Support

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Administrator requested to merge github/fork/Metaswitch/rust-hyper-0-12 into 5.0.x Nov 17, 2019
  • Overview 0
  • Commits 2
  • Pipelines 0
  • Changes 64

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 on MakeContext is not parameterised - instead, ReqBody, and ResBody are parameterized, and must implement hyper::body::Payload.

      This means that our existing tuples (i.e. (Body, Context)) don't work - instead we have a type ContextualPayload, 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, and hyper instead depends on tokio.

    • 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 to Send as a result, and all forces Clients to be Send + 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 the lib.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.
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: github/fork/Metaswitch/rust-hyper-0-12