Make rust-sdk findable trait using Result
In order to stop using `unwrap` and `expect` we need to change `Findable` trait and make `get_ep` and `list_ep` return Result instead. This change is expected to fail initially, but the content would be taken directly to the `openstack_sdk` where it will be applied together with the corresponding interface change. Change-Id: Idc2452d0b481f0fd55f9573bcc8b50102c278c99 Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
This commit is contained in:
@@ -20,8 +20,8 @@ use http::{HeaderMap, HeaderName, HeaderValue};
|
||||
|
||||
use crate::api::find::Findable;
|
||||
use crate::api::rest_endpoint_prelude::*;
|
||||
{%- if not name_filter_supported %}
|
||||
use crate::api::{ApiError, RestClient};
|
||||
{%- if not name_filter_supported %}
|
||||
use tracing::trace;
|
||||
{%- endif %}
|
||||
|
||||
@@ -84,7 +84,7 @@ where
|
||||
impl<'a> Findable for Request<'a> {
|
||||
type G = Get::Request<'a>;
|
||||
type L = List::Request{{ list_lifetime }};
|
||||
fn get_ep(&self) -> Get::Request<'a> {
|
||||
fn get_ep<C: RestClient>(&self) -> Result<Get::Request<'a>, ApiError<C::Error>> {
|
||||
let mut ep = Get::Request::builder();
|
||||
ep.id(self.id.clone());
|
||||
{%- for k, param in type_manager.parameters.items() %}
|
||||
@@ -93,11 +93,11 @@ impl<'a> Findable for Request<'a> {
|
||||
if let Some(headers) = &self._headers {
|
||||
ep.headers(headers.iter().map(|(k, v)| (Some(k.clone()), v.clone())));
|
||||
}
|
||||
ep.build().unwrap()
|
||||
ep.build().map_err(|err| ApiError::endpoint_builder(err))
|
||||
}
|
||||
|
||||
{%- if name_filter_supported %}
|
||||
fn list_ep(&self) -> List::Request{{ list_lifetime }} {
|
||||
{% if name_filter_supported -%}
|
||||
fn list_ep<C: RestClient>(&self) -> Result<List::Request{{ list_lifetime }}, ApiError<C::Error>> {
|
||||
let mut ep = List::Request::builder();
|
||||
{%- for k, param in type_manager.parameters.items() %}
|
||||
ep.{{ param.remote_name }}(self.{{ param.local_name}}.clone());
|
||||
@@ -106,10 +106,10 @@ impl<'a> Findable for Request<'a> {
|
||||
ep.headers(headers.iter().map(|(k, v)| (Some(k.clone()), v.clone())));
|
||||
}
|
||||
ep.{{ name_field }}(self.id.clone());
|
||||
ep.build().unwrap()
|
||||
ep.build().map_err(|err| ApiError::endpoint_builder(err))
|
||||
}
|
||||
{%- else %}
|
||||
fn list_ep(&self) -> List::Request{{ list_lifetime }} {
|
||||
{% else %}
|
||||
fn list_ep<C: RestClient>(&self) -> Result<List::Request{{ list_lifetime }}, ApiError<C::Error>> {
|
||||
let mut ep = List::Request::builder();
|
||||
{%- for k, param in type_manager.parameters.items() %}
|
||||
ep.{{ param.remote_name }}(self.{{ param.local_name}}.clone());
|
||||
@@ -117,7 +117,7 @@ impl<'a> Findable for Request<'a> {
|
||||
if let Some(headers) = &self._headers {
|
||||
ep.headers(headers.iter().map(|(k, v)| (Some(k.clone()), v.clone())));
|
||||
}
|
||||
ep.build().unwrap()
|
||||
ep.build().map_err(|err| ApiError::endpoint_builder(err))
|
||||
}
|
||||
{%- endif %}
|
||||
{%- if not name_filter_supported %}
|
||||
|
||||
Reference in New Issue
Block a user