Skip to main content

objectiveai_sdk/functions/profiles/computations/
retry_token.rs

1use base64::Engine;
2use serde::{Deserialize, Serialize};
3use schemars::JsonSchema;
4
5#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
6#[serde(transparent)]
7#[schemars(!transparent)]
8#[schemars(rename = "functions.profiles.computations.RetryToken")]
9pub struct RetryToken(pub Vec<Option<String>>);
10
11impl RetryToken {
12    pub fn push(&mut self, other: RetryToken) {
13        self.0.extend(other.0)
14    }
15
16    pub fn insert(&mut self, index: usize, other: RetryToken) {
17        for (i, token) in other.0.into_iter().enumerate() {
18            self.0[index + i] = token;
19        }
20    }
21
22    pub fn to_string(&self) -> String {
23        let json = serde_json::to_string(self).unwrap();
24        base64::engine::general_purpose::STANDARD.encode(json)
25    }
26
27    pub fn try_from_string(s: &str) -> Option<Self> {
28        let json = base64::engine::general_purpose::STANDARD.decode(s).ok()?;
29        let token = serde_json::from_slice(&json).ok()?;
30        Some(token)
31    }
32}