ai_providers/openai/request/
include.rs

1use std::str::FromStr;
2
3use serde::{Deserialize, Serialize};
4
5use crate::openai::errors::ConversionError;
6
7#[derive(Debug, PartialEq, Serialize, Deserialize)]
8pub enum Include {
9    #[serde(rename = "file_search_call.results")]
10    FileSearchCallResults,
11    #[serde(rename = "message.input_image.image_url")]
12    MessageInputImageUrl,
13    #[serde(rename = "computer_call_output.output.image_url")]
14    ComputerCallOutputImageUrl,
15}
16
17impl FromStr for Include {
18    type Err = ConversionError;
19
20    fn from_str(s: &str) -> Result<Self, Self::Err> {
21        match s {
22            "file_search_call.results" => Ok(Include::FileSearchCallResults),
23            "message.input_image.image_url" => Ok(Include::MessageInputImageUrl),
24            "computer_call_output.output.image_url" => Ok(Include::ComputerCallOutputImageUrl),
25            _ => Err(ConversionError::FromStr(s.to_string())),
26        }
27    }
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33
34    #[test]
35    fn it_converts_str_to_include_value() {
36        let values = [
37            "file_search_call.results",
38            "message.input_image.image_url",
39            "computer_call_output.output.image_url",
40        ];
41
42        let expected = [
43            Include::FileSearchCallResults,
44            Include::MessageInputImageUrl,
45            Include::ComputerCallOutputImageUrl,
46        ];
47
48        for (index, value) in values.iter().enumerate() {
49            assert_eq!(Include::from_str(value).unwrap(), expected[index]);
50        }
51    }
52
53    #[test]
54    fn it_converts_include_into_json() {
55        for value in [
56            "file_search_call.results",
57            "message.input_image.image_url",
58            "computer_call_output.output.image_url",
59        ]
60        .iter()
61        {
62            let result = serde_json::to_value(Include::from_str(value).unwrap()).unwrap();
63
64            let expected = value.to_string();
65
66            assert_eq!(result, expected);
67        }
68    }
69}