-
-
Notifications
You must be signed in to change notification settings - Fork 6.6k
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-server] Added API Key auth to rust-server #2459
Conversation
@bjgill Can you check this out ? |
cc Rust Techical committee: @frol (2017/07) @farcaller (2017/08) @bjgill (2017/12) |
if (op.authMethods != null) { | ||
for (CodegenSecurity s : op.authMethods) { | ||
if (s.isApiKey && s.isKeyInHeader) { | ||
s.vendorExtensions.put("x-keyVarName", toModelName(s.keyParamName)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this is really needed, can you use a better name? e.g. apiKeyName
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@richardwhiuk
I'm open to changing the name if you think that fits better.
As for the needing of this variable is so we can prevent problems like this example where the header is X-API-KEY
which is the value of keyParamName
but we wouldn't be available to use it like this:
// compile error
header! { (X-API-KEY, "X-API-KEY") => [String] }
This is the solution I came up with but if you have a better one we can use that one.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@richardwhiuk
Just changed the name from x-kayVarName
to x-apiKeyName
If no further feedback on this PR, I'll merge it over the weekend. |
* master: (133 commits) #2503: fix out-of-memory issue with nested objects with arrays with maxItems set by limiting to max. 5 example items (#2536) remove emitDefaultValue option (#2559) fix EmitDefaultValue default vallue with false (#2558) Added API Key auth to rust-server (#2459) remove initialCaps and replace with camelize (#2546) Add packageName configuration to maven (#2429) [Typescript AngularJS] fix Extra package prefix in api parameters operations (#2522) #1023 - [Scala] Use status family during response processing (#1024) Generate setters for readonly properties in server code (#1582) [JS] fix NPE for null string and improve Travis config file (#2553) [elm] Update ISO 8601 library (fixes missing time zone designator) (#2545) [csharp] update sample after #2528 (#2550) [JavaScript] fix index.js, ApiClient.js and test files generated to incorrect location (#2511) Aspnetcore nullable support (#2529) Csharp nullable support (#2528) [C++] [Qt5] Add enum support for client and server (#2339) Fixed typo in migration-from-swagger-codegen.md (#2548) [TypeScript Client] fix install Aurelia + fix use deprecated function (#2514) [KOTLIN] fix var name not correctly sanitized (#2537) Update swagger-parser to '2.0.11-OpenAPITools.org-1' (#2262) ...
PR checklist
./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
.master
,. Default:3.4.x
,4.0.x
master
.Description of the PR
Added API Key authentication in rust-server for both in header and query. Still missing in cookie.
For query, since we're not available to modify
hyper
request after creating it, I added it to theuri
created. To do this I had to movelet query_string = ...
outside of thequeryParams
block which means it'll be present even if there aren't any queryParams or query API Key. I think we can change this by creating an additional property to check for both conditions.For header it was easier since we can use
header_mut
on request to add any new headers to it. I only added the variablex-keyVarName
to vendor extensions in order to camel case the header.One other downside to this is that we may need to refactor it in case of multiple API Keys in headers.