another failure condition

This commit is contained in:
Brandon Thomas committed 2025-04-21 23:50:37 -04:00
1 parent d11c30c914
commit 9e54e9b864
3 files changed
+15 -3

No files matched your search

@@ -1,5 +1,5 @@
use std::ops::Deref;
use std::sync::{Arc, RwLock, RwLockReadGuard};
use std::sync::{Arc, RwLock};
use anyhow::anyhow;
use errors::AnyhowResult;
use openai_sora_client::credentials::SoraCredentials;
@@ -2,11 +2,12 @@ use crate::state::app_dir::AppDataRoot;
use crate::state::sora::read_sora_credentials_from_disk::read_sora_credentials_from_disk;
use crate::state::sora::sora_credential_holder::SoraCredentialHolder;
use errors::AnyhowResult;
use log::{error, warn};
use log::{error, info, warn};
use openai_sora_client::credentials::SoraCredentials;
use openai_sora_client::sentinel_refresh::refresh_sentinel;
use std::fs::OpenOptions;
use std::io::Write;
use openai_sora_client::sentinel_refresh::generate::token::generate_token;
#[derive(Clone)]
pub struct SoraCredentialManager {
@@ -58,13 +59,17 @@ impl SoraCredentialManager {
// NB(bt,2025-04-21): Technically we don't need credentials to get a sentinel.
let mut creds = self.holder.get_credentials_required()?;
let sentinel = refresh_sentinel()
info!("Generating token...");
let sentinel = generate_token()
.await
.map_err(|err| {
error!("Failed to refresh: {:?}", err);
err
})?;
info!("Token obtained.");
creds.sentinel = Some(sentinel.clone());
self.holder.set_credentials(&creds)?;
@@ -18,6 +18,9 @@ pub enum SoraError {
#[error("Sora too many concurrent tasks: {0}")]
TooManyConcurrentTasks(String),
#[error("Sora invalid JWT: {0}")]
InvalidJwt(String),
#[error("Sora API error: {0}")]
GenericError(String),
@@ -120,6 +123,7 @@ pub enum RawSoraError {
#[serde(rename_all = "snake_case")]
pub enum SoraErrorCode {
SentinelBlock,
InvalidJwt,
TokenExpired,
TooManyConcurrentTasks,
Unknown(String),
@@ -188,6 +192,9 @@ pub (crate) async fn image_gen_http_request(sora_request: RawSoraImageGenRequest
SoraErrorCode::Unknown(_) => {
return Err(SoraError::GenericError(error_response.error.message));
}
SoraErrorCode::InvalidJwt => {
return Err(SoraError::InvalidJwt(error_response.error.message));
}
}
}