[Rust Server] Fix panic handling headers
If we have an API which has multiple auth types, we may panic. This is because
in Hyper 0.11, the following code will panic:
```
use hyper::header::{Authorization, Basic, Bearer, Headers};
fn main() {
let mut headers = Headers::default();
let basic = Basic { username: "richard".to_string(), password: None };
headers.set::<Authorization<Basic>>(Authorization(basic));
println!("Auth: {:?}", headers.get::<Authorization<Bearer>>());
}
```
as it mixes up an `Authorization<Basic>` and `Authorization<Bearer>` as both
have `Authorization:` as the header name.
This is fixed by using `swagger::SafeHeaders` added in
https://github.com/Metaswitch/swagger-rs/pull/90
- Ensure response IDs are unique, even if the first sentence is identical
- Handle responses where different responses produce a different type of data
- Use the correct mime type for plain text and byte streams
- Tidy up whitespace in client-mod.mustache
- Specify locale for String.format
- Add test for multiple response types
- Update samples
[Rust Server] Support multipart/form_data
- Support multipart/form_data in the Rust Server
- Add a new test API to test the change.
- Update the examples to match
- Restore XML namespace support
- Remove non snake case rust warning for xml wrap_in methods
- Add XML rust-server tests
- Fix wrapping XML arrays when a property of another object
- Run all tests, not just those for OpenAPI 2.0
- Force wrapping for rust-server
Based on this [issue](https://github.com/servo/rust-url/issues/416) the `utf8_percent_encode` doesn't percent encode `+` instead treats it as a space which is may cause a problem if the query parameters contain one. For example if we wanted to use a DateTime range in query parameters:
`{base_path}{path}?start=2019-02-12T00:00:00+00:00&end=2019-02-13T15:00:00+00:00`
These parameters may be decoded as:
```
start = 2019-02-12T00:00:00 00:00
end = 2019-02-13T15:00:00 00:00
```
To solve this I changed query parameters to be form-urlencoded using `url::form_urlencoded` based on what's done in [`rust` client generator](ea08106c80/modules/openapi-generator/src/main/resources/rust/request.rs (L106)).
* Add test case that reproduce the issue #1782
* Fix missing RequestBody.required
* Update samples
./bin/utils/ensure-up-to-date
* Run ensure-up-to-date script
./bin/utils/ensure-up-to-date
* Ensure that generic JSON bodies are correctly autogenerated
Generates valid Rust for an arbitrary JSON response body of type `object` with no other schema.
* update samples
* remove string boolean map spec
* add logic to skip array alias being generated as model
* fix alias to array
* remove unused ruby files
* remove unused ruby (oas3) files
* unalias response schema
* fix NPE when no model defined
* fix ruby openapi3 script
* update samples
* add global openapi, schemas for unaliasing
* minor code cleanup/refactoring using globalSchemas
* Revert "minor code cleanup/refactoring using globalSchemas"
This reverts commit 20a2bbc6fc4267a0e0768dcf5f15d4194ce9647b.