|
| 1 | +use serde::de::Error as SerdeError; |
1 | 2 | use serde::{de::DeserializeOwned, Deserialize, Serialize}; |
2 | 3 | use serde_json::{json, Value}; |
3 | 4 | use std::{collections::HashMap, time::Duration}; |
@@ -81,32 +82,36 @@ impl<Http: HttpClient> Client<Http> { |
81 | 82 | ) -> Result<IndexesResults<Http>, Error> { |
82 | 83 | let raw_indexes = value["results"] |
83 | 84 | .as_array() |
84 | | - .ok_or_else(|| Error::ParseStringError("Missing or invalid 'results' field".to_string()))?; |
85 | | - |
| 85 | + .ok_or_else(|| serde_json::Error::custom("Missing or invalid 'results' field")) |
| 86 | + .map_err(Error::SerdeParseError)?; |
| 87 | + |
86 | 88 | let limit = value["limit"] |
87 | 89 | .as_u64() |
88 | | - .ok_or_else(|| Error::ParseStringError("Missing or invalid 'limit' field".to_string()))? as u32; |
89 | | - |
| 90 | + .ok_or_else(|| serde_json::Error::custom("Missing or invalid 'limit' field")) |
| 91 | + .map_err(Error::SerdeParseError)? as u32; |
| 92 | + |
90 | 93 | let offset = value["offset"] |
91 | 94 | .as_u64() |
92 | | - .ok_or_else(|| Error::ParseStringError("Missing or invalid 'offset' field".to_string()))? as u32; |
93 | | - |
| 95 | + .ok_or_else(|| serde_json::Error::custom("Missing or invalid 'offset' field")) |
| 96 | + .map_err(Error::SerdeParseError)? as u32; |
| 97 | + |
94 | 98 | let total = value["total"] |
95 | 99 | .as_u64() |
96 | | - .ok_or_else(|| Error::ParseStringError("Missing or invalid 'total' field".to_string()))? as u32; |
97 | | - |
| 100 | + .ok_or_else(|| serde_json::Error::custom("Missing or invalid 'total' field")) |
| 101 | + .map_err(Error::SerdeParseError)? as u32; |
| 102 | + |
98 | 103 | let results = raw_indexes |
99 | 104 | .iter() |
100 | 105 | .map(|raw_index| Index::from_value(raw_index.clone(), self.clone())) |
101 | 106 | .collect::<Result<_, _>>()?; |
102 | | - |
| 107 | + |
103 | 108 | let indexes_results = IndexesResults { |
104 | 109 | limit, |
105 | 110 | offset, |
106 | 111 | total, |
107 | 112 | results, |
108 | 113 | }; |
109 | | - |
| 114 | + |
110 | 115 | Ok(indexes_results) |
111 | 116 | } |
112 | 117 |
|
|
0 commit comments