MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / chat

Method chat

crates/opencode-provider/src/vertex.rs:220–252  ·  view source on GitHub ↗
(&self, request: ChatRequest)

Source from the content-addressed store, hash-verified

218 }
219
220 async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ProviderError> {
221 let url = self.build_url(&request.model, "generateContent");
222 let vertex_request = self.convert_request(request);
223
224 let response = self
225 .client
226 .post(&url)
227 .header("Content-Type", "application/json")
228 .header(
229 "Authorization",
230 format!("Bearer {}", self.config.access_token),
231 )
232 .json(&vertex_request)
233 .send()
234 .await
235 .map_err(|e| ProviderError::NetworkError(e.to_string()))?;
236
237 if !response.status().is_success() {
238 let status = response.status();
239 let body = response.text().await.unwrap_or_default();
240 return Err(ProviderError::api_error_with_status(
241 format!("{}: {}", status, body),
242 status.as_u16(),
243 ));
244 }
245
246 let vertex_response: VertexResponse = response
247 .json()
248 .await
249 .map_err(|e| ProviderError::ApiError(e.to_string()))?;
250
251 Ok(convert_vertex_response(vertex_response))
252 }
253
254 async fn chat_stream(&self, request: ChatRequest) -> Result<StreamResult, ProviderError> {
255 let url = self.build_url(&request.model, "streamGenerateContent");

Callers

nothing calls this directly

Calls 7

convert_vertex_responseFunction · 0.85
ApiErrorEnum · 0.50
build_urlMethod · 0.45
convert_requestMethod · 0.45
sendMethod · 0.45
statusMethod · 0.45
textMethod · 0.45

Tested by

no test coverage detected