gproxy_protocol/transform/claude/count_tokens/gemini/
response.rs1use crate::claude::count_tokens::response::ClaudeCountTokensResponse;
2use crate::claude::count_tokens::types::BetaMessageTokensCount;
3use crate::claude::types::ClaudeResponseHeaders;
4use crate::gemini::count_tokens::response::GeminiCountTokensResponse;
5use crate::transform::claude::utils::beta_error_response_from_status_message;
6use crate::transform::utils::TransformError;
7
8impl TryFrom<GeminiCountTokensResponse> for ClaudeCountTokensResponse {
9 type Error = TransformError;
10
11 fn try_from(value: GeminiCountTokensResponse) -> Result<Self, TransformError> {
12 Ok(match value {
13 GeminiCountTokensResponse::Success {
14 stats_code,
15 headers,
16 body,
17 } => {
18 let input_tokens = body.total_tokens;
19
20 ClaudeCountTokensResponse::Success {
21 stats_code,
22 headers: ClaudeResponseHeaders {
23 extra: headers.extra,
24 },
25 body: BetaMessageTokensCount {
26 context_management: None,
27 input_tokens,
28 },
29 }
30 }
31 GeminiCountTokensResponse::Error {
32 stats_code,
33 headers,
34 body,
35 } => ClaudeCountTokensResponse::Error {
36 stats_code,
37 headers: ClaudeResponseHeaders {
38 extra: headers.extra,
39 },
40 body: beta_error_response_from_status_message(stats_code, body.error.message),
41 },
42 })
43 }
44}