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