Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Rust] Enhancements to Rust server generator #6756

Open
1 of 6 tasks
wing328 opened this issue Oct 19, 2017 · 15 comments
Open
1 of 6 tasks

[Rust] Enhancements to Rust server generator #6756

wing328 opened this issue Oct 19, 2017 · 15 comments

Comments

@wing328
Copy link
Contributor

wing328 commented Oct 19, 2017

Description
  • rust2 is not a very informative name (renamed to rust-server via [Rust] rename rust2 to rust-server #6747)
  • Currently uses hyper 0.10 - work underway to upgrade to hyper 0.11 (which adds full async support)
  • Documentation on how to use the generated code in a Rust project is lacking
  • Consolidate the client generator with rust generator (rust-server generates both server and client code)
  • Add a means of testing rust-server's XML support back in (in a way that doesn't break everything else!). I believe other generators already do this, so it should not be over-hard.
  • The rust-server sample was generated from the pre-reversion petstore yaml. It should be re-generated from the current petstore yaml.
Swagger-codegen version

Latest master

Related issues/PRs

#6613

Suggest a fix/enhancement

If anyone wants to work on these tasks, please reply to let us know.

@wing328
Copy link
Contributor Author

wing328 commented Oct 19, 2017

@wing328 wing328 added this to the v2.3.0 milestone Oct 19, 2017
@wing328 wing328 changed the title [Rust] Enhancements to Rust-server generator [Rust] Enhancements to Rust server generator Oct 19, 2017
@bjgill
Copy link
Contributor

bjgill commented Oct 20, 2017

Thanks.

Also, #6758 helpfully reverted changes to petstore yaml to add XML testing.

I think this yields two pieces of additional work:

  • Add a means of testing rust-server's XML support back in (in a way that doesn't break everything else!). I believe other generators already do this, so it should not be over-hard.
  • The rust-server sample was generated from the pre-reversion petstore yaml. It should be re-generated from the current petstore yaml.

(BTW: I've now deprecated my secondary GitHub login, @BenjaminGill-Metaswitch, in favour of this, the original)

@mirw
Copy link

mirw commented Oct 23, 2017

I have the hyper 0.11 upgrade/port pretty much working, and hope to get it out in the next week or so.

@bjgill
Copy link
Contributor

bjgill commented Nov 1, 2017

There's another thing we probably want to sort out soon-ish:

Common, non auto-generated code lives in a dedicated crate - https://crates.io/crates/swagger. Currently, this is mastered at https://github.com/Metaswitch/swagger-rs, and @mirw and I are the owners.

I think there are two things we want to do:

  1. Move the repo to https://github.com/swagger-api/swagger-rs. This would then become the master repo for future development. Needs a member of @swagger-api to do
  2. As per http://doc.crates.io/crates-io.html#cargo-owner, I think we probably want to add @swagger-api as an owner (giving all members of the group permission to publish/yank). Additionally, we probably want to add a couple of individuals so that they also have permission to change the ownership list in future. @wing328 - any suggestions? I can sort this out once I know who to add

@fralalonde
Copy link
Contributor

I have just submitted #6985 to better match rust int types to schema constraints on rust-server codegen.

I flagged the commitee members as per PR rules but I thought I should also drop a notification here. Let me know what you think.

@wing328 wing328 modified the milestones: v2.3.0, Future Dec 16, 2017
@aykutakin
Copy link
Contributor

@wing328 @bjgill I am willing to help if you prioritize between this issue and this one. It'd be great if you tell me which task has importance from your point of view.

@bjgill
Copy link
Contributor

bjgill commented Jan 30, 2018

It rather depends on which of the two generators you're interested in. This issue covers enhancements to rust-server, a generator that produces a crate containing both client and server. #6250 covers enhancements to rust, a generator that produces a crate containing only a client.

From this issue, I believe that the status of the desired enhancements are as follows:

  • Move to hyper 0.11: I believe @mirw has got this near-complete.
  • Documentation: is still lacking. If you've started using rust-server, and fancy producing a user guide, that would be very helpful.
  • Consolidate rust and rust-server: not started, but would help significantly with maintainability, covered by [Rust, Rust-server] should we merge the two rust generators into one? #7347
  • Testing XML support: not started. Should largely be a case of seeing how other generators do this and copying them.
  • Regenerating sample: done, I believe.
  • Moving swagger-rs into @swagger-api: needs a member of @swagger-api to import the repo.
  • Sort out swagger-rs crate owners: I need to add additional owners at some point

@aykutakin
Copy link
Contributor

Thank you for opinions. Here are my comments:

  • Move to hyper 0.11: I believe @mirw has got this near-complete.

I've tried to find his remaining work, but unfortunately couldn't see it anywhere. I can start this from scratch or continue from where @mirw left, if he is not willing to go on and share latest status.

  • Documentation: is still lacking. If you've started using rust-server, and fancy producing a user guide, that would be very helpful.

I've started with just generating rust client. Is there an example documentation from other languages as an example for a starting point? Are we talking about this samples page or generated README file or is there any other documentation page exists?

Please have a look my comment on related issue

@mirw
Copy link

mirw commented Jan 31, 2018

I've been testing the hyper 0.11 stuff but not got it pushed publicly yet - hope to do so in the next day or two - sorry for the delay!

@bjgill
Copy link
Contributor

bjgill commented Feb 5, 2018

@aykutakin - on documentation, I'm not sure there is an equivalent in any of the other languages. What I was imagining was a quick-start guide for generating a rust/rust-server. Effectively similar to https://github.com/swagger-api/swagger-codegen#getting-started, but explicitly discussing the options that one might want to use. I'm not sure where such a guide would live, though.

@mirw
Copy link

mirw commented Feb 6, 2018

@aykutakin, sorry for the delay! I've just pushed the async code to https://github.com/Metaswitch/swagger-codegen (rust branch). I'm going to raise an MR shortly, but in case you're keen to see it sooner.

@kaushalyap
Copy link

Any plans to generate server stubs based on rust-web frameworks like actix-web, Rocket?

@mirw
Copy link

mirw commented Nov 13, 2018

No plans myself, although it might be interesting to see it done.

As you probably know, the current implementation is built directly on hyper. Some of it (e.g. model generation) would probably be portable over to other frameworks.

What benefits are you looking for from moving to actix-web or Rocket? Is it using their middlewares, threading models, etc., integrating with other actix-web/Rocket endpoints, or something else?

@kaushalyap
Copy link

kaushalyap commented Nov 13, 2018

@mirw I am hoping use actix-web for an upcoming project, I am interesting in using their middlewares and etc.
Anyway I will first give this generator a try.

@MayeulC
Copy link

MayeulC commented Feb 4, 2020

Looking at #7600, hyper11 support was merged in #7896, so the second item should be checked off.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants