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