In the case where we are making empty posts, use -d '' to force curl to
set the Content-Length header to 0. Some backends (among which Microsoft
Kestrel) are sensitive about POST without a Content-Length set.
* Update Dockerfile.mustache
Using alpine instead of ubuntu for leaner Docker images.
Small fix for welcome message.
Changing default shell to `zsh` and fixing entrypoint.
* update samples
* move config, add new files
Co-authored-by: avbenavides <62693723+avbenavides@users.noreply.github.com>
* Bash: Update samples
I'm about to make a fix to the bash generator. I'm regenerating the
samples in this commit so that the change I make isn't lost amongst
the noise.
https://github.com/OpenAPITools/openapi-generator/pull/3290
* Bash client: Fix query params seperation
Fix bug where empty query parameters weren't separated by ampersands.
For example, this
```bash
bash bash_keycloak/client.sh -v --oauth2-bearer "$access_token" --host "$api_host" realmUsersGet realm=demo_realm2 email=foo+bar@baz.com
```
would generate the path
`/auth/admin/realms/demo_realm2/users?briefRepresentation=email=foo+bar@baz.comfirst=firstName=lastName=max=search=username=`.
It now puts ampersands around them to make
`/auth/admin/realms/demo_realm2/users?briefRepresentation=&email=foo+bar@baz.com&first=&firstName=&lastName=&max=&search=&username=`
Instead of predicting if there is going to be a `parameter_value` ahead of
time, we now put in the ampersand if there is a `parameter_value` and existing
`query_request_part`.
https://github.com/OpenAPITools/openapi-generator/pull/3290
* Bash: Skip query parameters with empty value
I have a route with many optional query parameters.
I observed that when they weren't specified, they were still included in
the routes, but without a value.
Running:
```bash
bash bash_keycloak/client.sh -v --header "Authorization: Bearer $access_token" --host "$api_host" --dry-run realmUsersGet realm=demo_realm2 email=foo+bar@baz.com username=foo
```
Would produce the route:
`http://localhost:8080/auth/admin/realms/demo_realm2/users?briefRepresentation=&email=foo+bar@baz.com&first=&firstName=&lastName=&max=search=&username=foo`
After this change it produces the route:
``http://localhost:8080/auth/admin/realms/demo_realm2/users?email=foo+bar@baz.com&username=foo
---
I discussed with @wing328 in the pull request about if empty values (eg
`username=` should produce an empty query parameter, or if the query
parameter should be removed.
We decided it should remove the query parameter.
https://github.com/OpenAPITools/openapi-generator/pull/3290
----
The OpenAPI definition I was using:
Using:
https://github.com/ccouzens/keycloak-openapi/blob/master/keycloak/6.0.json
In particular:
```json
"/{realm}/users": {
"get": {
"summary": "Get users Returns a list of users, filtered according to query parameters",
"parameters": [
{
"in": "query",
"name": "briefRepresentation",
"schema": {
"type": "boolean"
},
"style": "form"
},
{
"in": "query",
"name": "email",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "first",
"schema": {
"type": "integer",
"format": "int32"
},
"style": "form"
},
{
"in": "query",
"name": "firstName",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "lastName",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "max",
"description": "Maximum results size (defaults to 100)",
"schema": {
"type": "integer",
"format": "int32"
},
"style": "form"
},
{
"in": "query",
"name": "search",
"description": "A String contained in username, first or last name, or email",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "username",
"schema": {
"type": "string"
},
"style": "form"
}
],
```
A previous change to make the regex a variable to allow proper linting
resulted in the regexp not having access to the value associated with
the variable and the path variable not being replaced.
Moves the regexp variable inside the for loop to allow the value to be
used and the path variable to be replaced with the provided value.
The only special handling was for security definition type `apiKey`
in `query`. All the other security configurations should result in the
same generated code.
Moves the handling of the special query parameters outside of the
`parameters without specific cardinality` section.
To cover the scenario where `elif` was being used, simply leverage the
builtin `continue` statement to stop processing the specific query
parameter and continue to the next available query parameter, if any.
Manually test with multiple different combinations.
Resolves: #6526