limithub_code_block_sdk/
value.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4#[serde(rename_all = "camelCase")]
5pub enum PortValueType {
6 Bool,
7 Int,
8 Float,
9 String,
10 Image,
11 History,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15#[serde(tag = "imageType", rename_all = "camelCase")]
16pub enum Image {
17 Url {
18 #[serde(rename = "imageURL")]
19 image_url: ImageUrl,
20 },
21 Base64 {
22 image_base64: ImageBase64,
23 },
24}
25
26impl Image {
27 pub fn new_url(url: impl AsRef<str>, expired: u32) -> Self {
28 Image::Url {
29 image_url: ImageUrl {
30 url: url.as_ref().to_owned(),
31 expired,
32 },
33 }
34 }
35
36 pub fn new_base64(base64: impl AsRef<str>) -> Self {
37 Image::Base64 {
38 image_base64: ImageBase64 {
39 base64: base64.as_ref().to_owned(),
40 },
41 }
42 }
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub struct ImageUrl {
48 pub url: String,
49 pub expired: u32,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct ImageBase64 {
55 pub base64: String,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(rename_all = "camelCase")]
60pub struct PromptEntry {
61 pub role: String,
62 pub body: String,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66#[serde(rename_all = "camelCase")]
67pub struct History {
68 pub histories: Vec<PromptEntry>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(tag = "portValueType", rename_all = "camelCase")]
73pub enum PortValue {
74 Bool {
75 #[serde(rename = "booleanValue")]
76 boolean_value: bool,
77 },
78 Int {
79 #[serde(rename = "integerValue")]
80 integer_value: i64,
81 },
82 Float {
83 #[serde(rename = "floatValue")]
84 float_value: f32,
85 },
86 String {
87 #[serde(rename = "stringValue")]
88 string_value: String,
89 },
90 Image {
91 #[serde(rename = "imageValue")]
92 image_value: Image,
93 },
94 History {
95 #[serde(rename = "historyValue")]
96 history_value: History,
97 },
98}
99
100impl PortValue {
101 pub fn new_bool(boolean_value: bool) -> Self {
102 PortValue::Bool { boolean_value }
103 }
104
105 pub fn new_integer(integer_value: i64) -> Self {
106 PortValue::Int { integer_value }
107 }
108
109 pub fn new_float(float_value: f32) -> Self {
110 PortValue::Float { float_value }
111 }
112
113 pub fn new_string(string_value: impl AsRef<str>) -> Self {
114 PortValue::String {
115 string_value: string_value.as_ref().to_owned(),
116 }
117 }
118
119 pub fn new_image(image_value: Image) -> Self {
120 PortValue::Image { image_value }
121 }
122
123 pub fn port_value_type(&self) -> PortValueType {
124 match self {
125 PortValue::Bool { .. } => PortValueType::Bool,
126 PortValue::Int { .. } => PortValueType::Int,
127 PortValue::Float { .. } => PortValueType::Float,
128 PortValue::String { .. } => PortValueType::String,
129 PortValue::Image { .. } => PortValueType::Image,
130 PortValue::History { .. } => PortValueType::History,
131 }
132 }
133}