-
Notifications
You must be signed in to change notification settings - Fork 72
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
Support configuration from Rocket.toml #82
Comments
@hugebubu I like this idea and would definitely be open to accepting a PR that accomplishes this. Happy to mentor/advise/assist in any way desired, as well :) |
Just an FYI for anyone wandering here from Google: This is already possible! (at least with Rocket 0.5.0-rc1) It also works with "Fairing" mode, which was a bit surprising to me, because I thought you can't get the config before attaching the fairing, but you totally can! The idea is to get the config from a partially built rocket instance, instantiate cors, then attach it to finish building. Here's how to do it: let partial_rocket = rocket::build()
.mount(........);
let cors_config: CorsOptions = partial_rocket.figment().focus("cors").extract().expect("missing CORS config");
let cors_fairing = cors_config.to_cors().expect("CORS init failed");
let final_rocket = partial_rocket.attach(cors_fairing);
// do the launch and the rest The TOML deserialization of the CorsOptions struct was a bit tricky, especially because all the externally tagged enums and newtypes, but I've got it working, here's an example: [default.cors]
allowed_methods = ["Get", "Post", "Put", "Patch"]
allow_credentials = true
[default.cors.allowed_origins.Some]
exact = ["http://localhost:4200", "http://localhost:8080"]
[default.cors.allowed_headers]
Some = [
["Authorization"],
["Accept"],
["content-type"]
] I'm not sure this is still relevant to you @hugebubu , but I hope this helps someone. |
Is it a good idea to have the configuration in Rocket.toml instead of a separated file?
I will be happy to make a PR :)
The text was updated successfully, but these errors were encountered: