MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / chat

Method chat

crates/opencode-provider/src/bedrock.rs:309–349  ·  view source on GitHub ↗
(&self, request: ChatRequest)

Source from the content-addressed store, hash-verified

307 }
308
309 async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ProviderError> {
310 let endpoint = self.get_endpoint();
311 let model_id = request.model.clone();
312 let model_id_encoded = urlencoding::encode(&model_id);
313
314 let bedrock_request = self.convert_request(request);
315 let body = serde_json::to_vec(&bedrock_request)
316 .map_err(|e| ProviderError::ApiError(e.to_string()))?;
317
318 let headers = self
319 .sign_request(
320 "POST",
321 &format!("/model/{}/converse", model_id_encoded),
322 &body,
323 )
324 .await?;
325
326 let url = format!("{}/model/{}/converse", endpoint, model_id_encoded);
327
328 let response = self
329 .client
330 .post(&url)
331 .headers(headers)
332 .body(body)
333 .send()
334 .await
335 .map_err(|e| ProviderError::NetworkError(e.to_string()))?;
336
337 if !response.status().is_success() {
338 let status = response.status();
339 let body = response.text().await.unwrap_or_default();
340 return Err(ProviderError::ApiError(format!("{}: {}", status, body)));
341 }
342
343 let bedrock_response: BedrockConverseResponse = response
344 .json()
345 .await
346 .map_err(|e| ProviderError::ApiError(e.to_string()))?;
347
348 Ok(convert_bedrock_response(bedrock_response))
349 }
350
351 async fn chat_stream(&self, request: ChatRequest) -> Result<StreamResult, ProviderError> {
352 let endpoint = self.get_endpoint();

Callers

nothing calls this directly

Calls 9

convert_bedrock_responseFunction · 0.85
get_endpointMethod · 0.80
sign_requestMethod · 0.80
ApiErrorEnum · 0.50
cloneMethod · 0.45
convert_requestMethod · 0.45
sendMethod · 0.45
statusMethod · 0.45
textMethod · 0.45

Tested by

no test coverage detected