MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / send_request

Method send_request

src/cloud-api/src/client.rs:130–167  ·  view source on GitHub ↗
(&self, req: RequestBuilder)

Source from the content-addressed store, hash-verified

128 }
129
130 async fn send_request<T>(&self, req: RequestBuilder) -> Result<T, Error>
131 where
132 T: DeserializeOwned,
133 {
134 #[derive(Deserialize)]
135 #[serde(rename_all = "camelCase")]
136 struct ErrorResponse {
137 #[serde(default)]
138 message: Option<String>,
139 #[serde(default)]
140 errors: Vec<String>,
141 }
142
143 let res = req.send().await?;
144 let status_code = res.status();
145 if status_code.is_success() {
146 if status_code == StatusCode::NO_CONTENT {
147 Err(Error::SuccesfullButNoContent)
148 } else {
149 Ok(res.json().await?)
150 }
151 } else {
152 match res.json::<ErrorResponse>().await {
153 Ok(e) => {
154 let mut messages = e.errors;
155 messages.extend(e.message);
156 Err(Error::Api(ApiError {
157 status_code,
158 messages,
159 }))
160 }
161 Err(_) => Err(Error::Api(ApiError {
162 status_code,
163 messages: vec!["unable to decode error details".into()],
164 })),
165 }
166 }
167 }
168}

Callers 2

list_cloud_regionsMethod · 0.45
create_regionMethod · 0.45

Calls 4

sendMethod · 0.45
statusMethod · 0.45
jsonMethod · 0.45
extendMethod · 0.45

Tested by

no test coverage detected