forked from loafle/openapi-generator-original
[Rust] Handle error response statuses (#6865)
* [Rust] Consider error statuscodes to be errors * [Rust] Introduce 'ApiError' type for 4xx/5xx resp This updates the previous commit which added an 'ErrorStatus' variant to an 'ApiError' variant. It does not specialize the error to the specific possible error responses yet, rather returning a 'serde_json::Value' for any case. This will lose any error messages which cannot be parsed as json and instead return a json-parse error. A future change should update the generated signatures such that the returned future's error type is specialized to the specific errors that may be returned by that api (and possibly a catchall json::Value still). * [Rust] Regenerate petstore samples * [Rust] Add error example to petstore sample
This commit is contained in:
parent
06d0078366
commit
027df610b1
@ -27,7 +27,7 @@ impl<C: hyper::client::Connect> {{{classname}}}Client<C> {
|
|||||||
pub trait {{classname}} {
|
pub trait {{classname}} {
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#operation}}
|
{{#operation}}
|
||||||
fn {{{operationId}}}(&self, {{#allParams}}{{paramName}}: {{#isString}}&str{{/isString}}{{^isString}}{{^isPrimitiveType}}{{^isContainer}}::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{returnType}}}{{/returnType}}, Error = Error>>;
|
fn {{{operationId}}}(&self, {{#allParams}}{{paramName}}: {{#isString}}&str{{/isString}}{{^isString}}{{^isPrimitiveType}}{{^isContainer}}::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{returnType}}}{{/returnType}}, Error = Error<serde_json::Value>>>;
|
||||||
{{/operation}}
|
{{/operation}}
|
||||||
{{/operations}}
|
{{/operations}}
|
||||||
}
|
}
|
||||||
@ -36,7 +36,7 @@ pub trait {{classname}} {
|
|||||||
impl<C: hyper::client::Connect>{{classname}} for {{classname}}Client<C> {
|
impl<C: hyper::client::Connect>{{classname}} for {{classname}}Client<C> {
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#operation}}
|
{{#operation}}
|
||||||
fn {{{operationId}}}(&self, {{#allParams}}{{paramName}}: {{#isString}}&str{{/isString}}{{^isString}}{{^isPrimitiveType}}{{^isContainer}}::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{.}}}{{/returnType}}, Error = Error>> {
|
fn {{{operationId}}}(&self, {{#allParams}}{{paramName}}: {{#isString}}&str{{/isString}}{{^isString}}{{^isPrimitiveType}}{{^isContainer}}::models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isString}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) -> Box<Future<Item = {{^returnType}}(){{/returnType}}{{#returnType}}{{{.}}}{{/returnType}}, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::{{httpMethod}};
|
let method = hyper::Method::{{httpMethod}};
|
||||||
@ -84,8 +84,21 @@ impl<C: hyper::client::Connect>{{classname}} for {{classname}}Client<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
{{^returnType}}
|
{{^returnType}}
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
{{/returnType}}
|
{{/returnType}}
|
||||||
@ -93,7 +106,7 @@ impl<C: hyper::client::Connect>{{classname}} for {{classname}}Client<C> {
|
|||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<{{{returnType}}}, _> = serde_json::from_slice(&body);
|
let parsed: Result<{{{returnType}}}, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
{{/returnType}}
|
{{/returnType}}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,48 @@
|
|||||||
use hyper;
|
use hyper;
|
||||||
|
use serde;
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error<T> {
|
||||||
Hyper(hyper::Error),
|
Hyper(hyper::Error),
|
||||||
Serde(serde_json::Error),
|
Serde(serde_json::Error),
|
||||||
|
ApiError(ApiError<T>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<hyper::Error> for Error {
|
#[derive(Debug)]
|
||||||
|
pub struct ApiError<T> {
|
||||||
|
pub code: hyper::StatusCode,
|
||||||
|
pub content: Option<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'de, T> From<(hyper::StatusCode, &'de [u8])> for Error<T>
|
||||||
|
where T: serde::Deserialize<'de> {
|
||||||
|
fn from(e: (hyper::StatusCode, &'de [u8])) -> Self {
|
||||||
|
if e.1.len() == 0 {
|
||||||
|
return Error::ApiError(ApiError{
|
||||||
|
code: e.0,
|
||||||
|
content: None,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
match serde_json::from_slice::<T>(e.1) {
|
||||||
|
Ok(t) => Error::ApiError(ApiError{
|
||||||
|
code: e.0,
|
||||||
|
content: Some(t),
|
||||||
|
}),
|
||||||
|
Err(e) => {
|
||||||
|
Error::from(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> From<hyper::Error> for Error<T> {
|
||||||
fn from(e: hyper::Error) -> Self {
|
fn from(e: hyper::Error) -> Self {
|
||||||
return Error::Hyper(e)
|
return Error::Hyper(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<serde_json::Error> for Error {
|
impl<T> From<serde_json::Error> for Error<T> {
|
||||||
fn from(e: serde_json::Error) -> Self {
|
fn from(e: serde_json::Error) -> Self {
|
||||||
return Error::Serde(e)
|
return Error::Serde(e)
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
extern crate serde_derive;
|
extern crate serde_derive;
|
||||||
|
|
||||||
extern crate hyper;
|
extern crate hyper;
|
||||||
|
extern crate serde;
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
extern crate futures;
|
extern crate futures;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
|
49
samples/client/petstore/rust/examples/error_handling.rs
Normal file
49
samples/client/petstore/rust/examples/error_handling.rs
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
extern crate futures;
|
||||||
|
extern crate hyper;
|
||||||
|
extern crate petstore_client;
|
||||||
|
extern crate tokio_core;
|
||||||
|
|
||||||
|
use hyper::Client;
|
||||||
|
use hyper::client::HttpConnector;
|
||||||
|
use tokio_core::reactor::Core;
|
||||||
|
use futures::Future;
|
||||||
|
use petstore_client::apis::client::APIClient;
|
||||||
|
use petstore_client::apis::Error;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut core = Core::new().expect("failed to init core");
|
||||||
|
let handle = core.handle();
|
||||||
|
|
||||||
|
let mut configuration = petstore_client::apis::configuration::Configuration::new(
|
||||||
|
Client::configure()
|
||||||
|
.connector(HttpConnector::new(4, &handle))
|
||||||
|
.build(&handle),
|
||||||
|
);
|
||||||
|
if let Ok(env_override) = std::env::var("PETSTORE_BASEPATH") {
|
||||||
|
configuration.base_path = env_override;
|
||||||
|
}
|
||||||
|
|
||||||
|
let apicli = APIClient::new(configuration);
|
||||||
|
let work = apicli
|
||||||
|
.user_api()
|
||||||
|
.delete_user("404")
|
||||||
|
.then(|resp| match resp {
|
||||||
|
Ok(resp) => {
|
||||||
|
panic!(format!(
|
||||||
|
"update for nonexistent pet should fail, but got: {:?}",
|
||||||
|
resp
|
||||||
|
));
|
||||||
|
}
|
||||||
|
Err(Error::ApiError(s)) => {
|
||||||
|
println!("got expected error: {:?}", s);
|
||||||
|
futures::future::ok::<(), ()>(())
|
||||||
|
}
|
||||||
|
Err(Error::Hyper(e)) => {
|
||||||
|
println!("network error: {}", e);
|
||||||
|
futures::future::ok::<(), ()>(())
|
||||||
|
}
|
||||||
|
Err(e) => panic!("unexpected error: {:?}", e),
|
||||||
|
});
|
||||||
|
|
||||||
|
core.run(work).expect("failed to run core");
|
||||||
|
}
|
@ -1,19 +1,48 @@
|
|||||||
use hyper;
|
use hyper;
|
||||||
|
use serde;
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error<T> {
|
||||||
Hyper(hyper::Error),
|
Hyper(hyper::Error),
|
||||||
Serde(serde_json::Error),
|
Serde(serde_json::Error),
|
||||||
|
ApiError(ApiError<T>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<hyper::Error> for Error {
|
#[derive(Debug)]
|
||||||
|
pub struct ApiError<T> {
|
||||||
|
pub code: hyper::StatusCode,
|
||||||
|
pub content: Option<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'de, T> From<(hyper::StatusCode, &'de [u8])> for Error<T>
|
||||||
|
where T: serde::Deserialize<'de> {
|
||||||
|
fn from(e: (hyper::StatusCode, &'de [u8])) -> Self {
|
||||||
|
if e.1.len() == 0 {
|
||||||
|
return Error::ApiError(ApiError{
|
||||||
|
code: e.0,
|
||||||
|
content: None,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
match serde_json::from_slice::<T>(e.1) {
|
||||||
|
Ok(t) => Error::ApiError(ApiError{
|
||||||
|
code: e.0,
|
||||||
|
content: Some(t),
|
||||||
|
}),
|
||||||
|
Err(e) => {
|
||||||
|
Error::from(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> From<hyper::Error> for Error<T> {
|
||||||
fn from(e: hyper::Error) -> Self {
|
fn from(e: hyper::Error) -> Self {
|
||||||
return Error::Hyper(e)
|
return Error::Hyper(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<serde_json::Error> for Error {
|
impl<T> From<serde_json::Error> for Error<T> {
|
||||||
fn from(e: serde_json::Error) -> Self {
|
fn from(e: serde_json::Error) -> Self {
|
||||||
return Error::Serde(e)
|
return Error::Serde(e)
|
||||||
}
|
}
|
||||||
|
@ -34,19 +34,19 @@ impl<C: hyper::client::Connect> PetApiClient<C> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub trait PetApi {
|
pub trait PetApi {
|
||||||
fn add_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error>>;
|
fn add_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<Future<Item = (), Error = Error>>;
|
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn find_pets_by_status(&self, status: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error>>;
|
fn find_pets_by_status(&self, status: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error<serde_json::Value>>>;
|
||||||
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error>>;
|
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error<serde_json::Value>>>;
|
||||||
fn get_pet_by_id(&self, pet_id: i64) -> Box<Future<Item = ::models::Pet, Error = Error>>;
|
fn get_pet_by_id(&self, pet_id: i64) -> Box<Future<Item = ::models::Pet, Error = Error<serde_json::Value>>>;
|
||||||
fn update_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error>>;
|
fn update_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<Future<Item = (), Error = Error>>;
|
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: ::models::File) -> Box<Future<Item = ::models::ApiResponse, Error = Error>>;
|
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: ::models::File) -> Box<Future<Item = ::models::ApiResponse, Error = Error<serde_json::Value>>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
||||||
fn add_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error>> {
|
fn add_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Post;
|
let method = hyper::Method::Post;
|
||||||
@ -72,13 +72,26 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<Future<Item = (), Error = Error>> {
|
fn delete_pet(&self, pet_id: i64, api_key: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Delete;
|
let method = hyper::Method::Delete;
|
||||||
@ -104,13 +117,26 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_pets_by_status(&self, status: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error>> {
|
fn find_pets_by_status(&self, status: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -135,16 +161,29 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<Vec<::models::Pet>, _> = serde_json::from_slice(&body);
|
let parsed: Result<Vec<::models::Pet>, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error>> {
|
fn find_pets_by_tags(&self, tags: Vec<String>) -> Box<Future<Item = Vec<::models::Pet>, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -169,16 +208,29 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<Vec<::models::Pet>, _> = serde_json::from_slice(&body);
|
let parsed: Result<Vec<::models::Pet>, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_pet_by_id(&self, pet_id: i64) -> Box<Future<Item = ::models::Pet, Error = Error>> {
|
fn get_pet_by_id(&self, pet_id: i64) -> Box<Future<Item = ::models::Pet, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -200,16 +252,29 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<::models::Pet, _> = serde_json::from_slice(&body);
|
let parsed: Result<::models::Pet, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error>> {
|
fn update_pet(&self, body: ::models::Pet) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Put;
|
let method = hyper::Method::Put;
|
||||||
@ -235,13 +300,26 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<Future<Item = (), Error = Error>> {
|
fn update_pet_with_form(&self, pet_id: i64, name: &str, status: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Post;
|
let method = hyper::Method::Post;
|
||||||
@ -263,13 +341,26 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: ::models::File) -> Box<Future<Item = ::models::ApiResponse, Error = Error>> {
|
fn upload_file(&self, pet_id: i64, additional_metadata: &str, file: ::models::File) -> Box<Future<Item = ::models::ApiResponse, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Post;
|
let method = hyper::Method::Post;
|
||||||
@ -291,12 +382,25 @@ impl<C: hyper::client::Connect>PetApi for PetApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<::models::ApiResponse, _> = serde_json::from_slice(&body);
|
let parsed: Result<::models::ApiResponse, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,15 +34,15 @@ impl<C: hyper::client::Connect> StoreApiClient<C> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub trait StoreApi {
|
pub trait StoreApi {
|
||||||
fn delete_order(&self, order_id: &str) -> Box<Future<Item = (), Error = Error>>;
|
fn delete_order(&self, order_id: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn get_inventory(&self, ) -> Box<Future<Item = ::std::collections::HashMap<String, i32>, Error = Error>>;
|
fn get_inventory(&self, ) -> Box<Future<Item = ::std::collections::HashMap<String, i32>, Error = Error<serde_json::Value>>>;
|
||||||
fn get_order_by_id(&self, order_id: i64) -> Box<Future<Item = ::models::Order, Error = Error>>;
|
fn get_order_by_id(&self, order_id: i64) -> Box<Future<Item = ::models::Order, Error = Error<serde_json::Value>>>;
|
||||||
fn place_order(&self, body: ::models::Order) -> Box<Future<Item = ::models::Order, Error = Error>>;
|
fn place_order(&self, body: ::models::Order) -> Box<Future<Item = ::models::Order, Error = Error<serde_json::Value>>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
|
impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
|
||||||
fn delete_order(&self, order_id: &str) -> Box<Future<Item = (), Error = Error>> {
|
fn delete_order(&self, order_id: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Delete;
|
let method = hyper::Method::Delete;
|
||||||
@ -64,13 +64,26 @@ impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_inventory(&self, ) -> Box<Future<Item = ::std::collections::HashMap<String, i32>, Error = Error>> {
|
fn get_inventory(&self, ) -> Box<Future<Item = ::std::collections::HashMap<String, i32>, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -92,16 +105,29 @@ impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<::std::collections::HashMap<String, i32>, _> = serde_json::from_slice(&body);
|
let parsed: Result<::std::collections::HashMap<String, i32>, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_order_by_id(&self, order_id: i64) -> Box<Future<Item = ::models::Order, Error = Error>> {
|
fn get_order_by_id(&self, order_id: i64) -> Box<Future<Item = ::models::Order, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -123,16 +149,29 @@ impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<::models::Order, _> = serde_json::from_slice(&body);
|
let parsed: Result<::models::Order, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn place_order(&self, body: ::models::Order) -> Box<Future<Item = ::models::Order, Error = Error>> {
|
fn place_order(&self, body: ::models::Order) -> Box<Future<Item = ::models::Order, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Post;
|
let method = hyper::Method::Post;
|
||||||
@ -158,12 +197,25 @@ impl<C: hyper::client::Connect>StoreApi for StoreApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<::models::Order, _> = serde_json::from_slice(&body);
|
let parsed: Result<::models::Order, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,19 +34,19 @@ impl<C: hyper::client::Connect> UserApiClient<C> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub trait UserApi {
|
pub trait UserApi {
|
||||||
fn create_user(&self, body: ::models::User) -> Box<Future<Item = (), Error = Error>>;
|
fn create_user(&self, body: ::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn create_users_with_array_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error>>;
|
fn create_users_with_array_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn create_users_with_list_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error>>;
|
fn create_users_with_list_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn delete_user(&self, username: &str) -> Box<Future<Item = (), Error = Error>>;
|
fn delete_user(&self, username: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn get_user_by_name(&self, username: &str) -> Box<Future<Item = ::models::User, Error = Error>>;
|
fn get_user_by_name(&self, username: &str) -> Box<Future<Item = ::models::User, Error = Error<serde_json::Value>>>;
|
||||||
fn login_user(&self, username: &str, password: &str) -> Box<Future<Item = String, Error = Error>>;
|
fn login_user(&self, username: &str, password: &str) -> Box<Future<Item = String, Error = Error<serde_json::Value>>>;
|
||||||
fn logout_user(&self, ) -> Box<Future<Item = (), Error = Error>>;
|
fn logout_user(&self, ) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
fn update_user(&self, username: &str, body: ::models::User) -> Box<Future<Item = (), Error = Error>>;
|
fn update_user(&self, username: &str, body: ::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
||||||
fn create_user(&self, body: ::models::User) -> Box<Future<Item = (), Error = Error>> {
|
fn create_user(&self, body: ::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Post;
|
let method = hyper::Method::Post;
|
||||||
@ -72,13 +72,26 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_users_with_array_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error>> {
|
fn create_users_with_array_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Post;
|
let method = hyper::Method::Post;
|
||||||
@ -104,13 +117,26 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_users_with_list_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error>> {
|
fn create_users_with_list_input(&self, body: Vec<::models::User>) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Post;
|
let method = hyper::Method::Post;
|
||||||
@ -136,13 +162,26 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delete_user(&self, username: &str) -> Box<Future<Item = (), Error = Error>> {
|
fn delete_user(&self, username: &str) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Delete;
|
let method = hyper::Method::Delete;
|
||||||
@ -164,13 +203,26 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_user_by_name(&self, username: &str) -> Box<Future<Item = ::models::User, Error = Error>> {
|
fn get_user_by_name(&self, username: &str) -> Box<Future<Item = ::models::User, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -192,16 +244,29 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<::models::User, _> = serde_json::from_slice(&body);
|
let parsed: Result<::models::User, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn login_user(&self, username: &str, password: &str) -> Box<Future<Item = String, Error = Error>> {
|
fn login_user(&self, username: &str, password: &str) -> Box<Future<Item = String, Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -227,16 +292,29 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|body| {
|
.and_then(|body| {
|
||||||
let parsed: Result<String, _> = serde_json::from_slice(&body);
|
let parsed: Result<String, _> = serde_json::from_slice(&body);
|
||||||
parsed.map_err(|e| Error::from(e))
|
parsed.map_err(|e| Error::from(e))
|
||||||
}).map_err(|e| Error::from(e))
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn logout_user(&self, ) -> Box<Future<Item = (), Error = Error>> {
|
fn logout_user(&self, ) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Get;
|
let method = hyper::Method::Get;
|
||||||
@ -258,13 +336,26 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_user(&self, username: &str, body: ::models::User) -> Box<Future<Item = (), Error = Error>> {
|
fn update_user(&self, username: &str, body: ::models::User) -> Box<Future<Item = (), Error = Error<serde_json::Value>>> {
|
||||||
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
let configuration: &configuration::Configuration<C> = self.configuration.borrow();
|
||||||
|
|
||||||
let method = hyper::Method::Put;
|
let method = hyper::Method::Put;
|
||||||
@ -290,8 +381,21 @@ impl<C: hyper::client::Connect>UserApi for UserApiClient<C> {
|
|||||||
|
|
||||||
// send request
|
// send request
|
||||||
Box::new(
|
Box::new(
|
||||||
configuration.client.request(req).and_then(|res| { res.body().concat2() })
|
configuration.client.request(req)
|
||||||
.map_err(|e| Error::from(e))
|
.map_err(|e| Error::from(e))
|
||||||
|
.and_then(|resp| {
|
||||||
|
let status = resp.status();
|
||||||
|
resp.body().concat2()
|
||||||
|
.and_then(move |body| Ok((status, body)))
|
||||||
|
.map_err(|e| Error::from(e))
|
||||||
|
})
|
||||||
|
.and_then(|(status, body)| {
|
||||||
|
if status.is_success() {
|
||||||
|
Ok(body)
|
||||||
|
} else {
|
||||||
|
Err(Error::from((status, &*body)))
|
||||||
|
}
|
||||||
|
})
|
||||||
.and_then(|_| futures::future::ok(()))
|
.and_then(|_| futures::future::ok(()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
extern crate serde_derive;
|
extern crate serde_derive;
|
||||||
|
|
||||||
extern crate hyper;
|
extern crate hyper;
|
||||||
|
extern crate serde;
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
extern crate futures;
|
extern crate futures;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
|
@ -1 +1 @@
|
|||||||
2.3.0-SNAPSHOT
|
2.3.0
|
@ -13,7 +13,7 @@ To see how to make this your own, look here:
|
|||||||
[README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md)
|
[README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md)
|
||||||
|
|
||||||
- API version: 1.0.0
|
- API version: 1.0.0
|
||||||
- Build date: 2017-12-20T15:51:59.221+09:00
|
- Build date: 2018-01-07T09:31:52.377-08:00
|
||||||
|
|
||||||
This autogenerated project defines an API crate `petstore_api` which contains:
|
This autogenerated project defines an API crate `petstore_api` which contains:
|
||||||
* An `Api` trait defining the API in Rust.
|
* An `Api` trait defining the API in Rust.
|
||||||
|
@ -143,11 +143,11 @@ paths:
|
|||||||
type: "array"
|
type: "array"
|
||||||
items:
|
items:
|
||||||
type: "string"
|
type: "string"
|
||||||
|
default: "available"
|
||||||
enum:
|
enum:
|
||||||
- "available"
|
- "available"
|
||||||
- "pending"
|
- "pending"
|
||||||
- "sold"
|
- "sold"
|
||||||
default: "available"
|
|
||||||
collectionFormat: "csv"
|
collectionFormat: "csv"
|
||||||
formatString: "{:?}"
|
formatString: "{:?}"
|
||||||
example: "&Vec::new()"
|
example: "&Vec::new()"
|
||||||
@ -938,10 +938,10 @@ paths:
|
|||||||
type: "array"
|
type: "array"
|
||||||
items:
|
items:
|
||||||
type: "string"
|
type: "string"
|
||||||
|
default: "$"
|
||||||
enum:
|
enum:
|
||||||
- ">"
|
- ">"
|
||||||
- "$"
|
- "$"
|
||||||
default: "$"
|
|
||||||
formatString: "{:?}"
|
formatString: "{:?}"
|
||||||
example: "Some(&Vec::new())"
|
example: "Some(&Vec::new())"
|
||||||
- name: "enum_form_string"
|
- name: "enum_form_string"
|
||||||
@ -963,10 +963,10 @@ paths:
|
|||||||
type: "array"
|
type: "array"
|
||||||
items:
|
items:
|
||||||
type: "string"
|
type: "string"
|
||||||
|
default: "$"
|
||||||
enum:
|
enum:
|
||||||
- ">"
|
- ">"
|
||||||
- "$"
|
- "$"
|
||||||
default: "$"
|
|
||||||
formatString: "{:?}"
|
formatString: "{:?}"
|
||||||
example: "Some(&Vec::new())"
|
example: "Some(&Vec::new())"
|
||||||
- name: "enum_header_string"
|
- name: "enum_header_string"
|
||||||
@ -988,10 +988,10 @@ paths:
|
|||||||
type: "array"
|
type: "array"
|
||||||
items:
|
items:
|
||||||
type: "string"
|
type: "string"
|
||||||
|
default: "$"
|
||||||
enum:
|
enum:
|
||||||
- ">"
|
- ">"
|
||||||
- "$"
|
- "$"
|
||||||
default: "$"
|
|
||||||
formatString: "{:?}"
|
formatString: "{:?}"
|
||||||
example: "Some(&Vec::new())"
|
example: "Some(&Vec::new())"
|
||||||
- name: "enum_query_string"
|
- name: "enum_query_string"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user