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