read tokens from headers, cleanup

This commit is contained in:
Brandon Thomas committed 2025-04-03 17:06:00 -04:00
1 parent 5dc61b7ec6
commit e956c32652
4 files changed
+34 -21

No files matched your search

@@ -1,7 +1,7 @@
use reqwest::RequestBuilder;
use errors::AnyhowResult;
// NB: It appears that the sentinel may require a matching user agent.
const USER_AGENT : &str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36";
pub (crate) const USER_AGENT : &str = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36";
#[derive(Clone)]
pub struct SoraCredentials {
@@ -29,10 +29,6 @@ impl SoraCredentials {
pub fn add_credential_headers_to_request(&self, request: RequestBuilder) -> RequestBuilder {
let bearer_header = self.authorization_header_value();
println!(">>> BEARER HEADER = {}", bearer_header);
//println!(">>> COOKIE HEADER = {}", self.cookie);
println!(">>> SENTINEL HEADER = {}", self.sentinel.clone().unwrap_or("None".to_string()));
let mut request = request
.header("User-Agent", USER_AGENT)
.header("Cookie", &self.cookie)
@@ -42,12 +38,6 @@ impl SoraCredentials {
request = request.header("OpenAI-Sentinel-Token", sentinel);
}
/*
Without sentinel token:
status: "{\n \"error\": {\n \"message\": \"Hmmm something didn't look right with your request. Please try again later or visit https://help.openai.com if this issue persists.\",\n \"type\": \"invalid_request_error\",\n \"param\": null,\n \"code\": \"sentinel_block\"\n }\n}"
Error: missing field `id` at line 8 column 1
*/
request
}
}
@@ -56,7 +56,7 @@ mod tests {
let bearer = read_to_string(test_file_path("test_data/temp/bearer.txt")?)?;
let bearer = bearer.trim().to_string();
let image_path = test_file_path("test_data/image/mochi.jpg")?;
let image_path = test_file_path("test_data/image/juno.jpg")?; // media_01jqyqgqpwf40tkcapq5bmaz5d
let creds = SoraCredentials {
bearer_token: bearer,
@@ -1,8 +1,8 @@
use crate::credentials::{SoraCredentials, USER_AGENT};
use errors::AnyhowResult;
use reqwest::multipart::{Form, Part};
use reqwest::Client;
use serde::Deserialize;
use crate::credentials::SoraCredentials;
const SORA_UPLOAD_MEDIA_URL: &str = "https://sora.com/backend/uploads";
@@ -60,8 +60,12 @@ pub (crate) async fn upload_media_http_request(file_bytes: Vec<u8>, filename: St
// Make API request
let client = Client::new();
let request_builder = client.post(SORA_UPLOAD_MEDIA_URL).multipart(form);
let request_builder = credentials.add_credential_headers_to_request(request_builder);
let request_builder = client.post(SORA_UPLOAD_MEDIA_URL)
.multipart(form)
.header("User-Agent", USER_AGENT)
.header("Cookie", &credentials.cookie)
.header("Authorization", credentials.authorization_header_value());
let response = request_builder.send().await?;
// Check response status
@@ -68,6 +68,9 @@ const DEBUG_HEADER_NAME: &str = "enable-debug-mode";
/// This is useful for catching the live logs or intercepting the job.
const ROUTING_TAG_HEADER_NAME: &str = "routing-tag";
const SORA_BEARER_HEADER_NAME : &str = "sora-bearer";
const SORA_COOKIE_HEADER_NAME : &str = "sora-cookie";
const SORA_SENTINEL_HEADER_NAME : &str = "sora-sentinel";
#[derive(Deserialize, ToSchema)]
pub struct EnqueueStudioImageGenRequest {
@@ -281,14 +284,30 @@ pub async fn enqueue_studio_image_generation_handler(
// ==================== HANDLE SORA CREDENTIALS ==================== //
let sora_bearer = get_request_header_optional(&http_request, SORA_BEARER_HEADER_NAME);
let sora_cookie = get_request_header_optional(&http_request, SORA_COOKIE_HEADER_NAME);
let sora_sentinel = get_request_header_optional(&http_request, SORA_SENTINEL_HEADER_NAME);
let sora_credentials = match SoraCredentials::from_env() {
Ok(creds) => creds,
Err(err) => {
error!("Failed to load Sora credentials from environment: {:?}", err);
return Err(EnqueueImageGenRequestError::ServerError);
let sora_credentials;
match (sora_bearer, sora_cookie, sora_sentinel) {
(Some(bearer), Some(cookie), Some(sentinel)) => {
sora_credentials = SoraCredentials {
bearer_token: bearer,
cookie,
sentinel: Some(sentinel),
};
}
};
_ => {
sora_credentials = match SoraCredentials::from_env() {
Ok(creds) => creds,
Err(err) => {
error!("Failed to load Sora credentials from environment: {:?}", err);
return Err(EnqueueImageGenRequestError::ServerError);
}
};
}
}
// ==================== HANDLE SORA UPLOAD ==================== //