mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 01:38:44 +00:00
read tokens from headers, cleanup
This commit is contained in:
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
|
||||
|
||||
+25
-6
@@ -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 ==================== //
|
||||
|
||||
|
||||
Reference in new issue
Block a user