rbx_asset: fix up Luau Execution
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-08-08 18:55:26 -07:00
parent a23bd07e64
commit 81517abde1

View File

@@ -330,7 +330,10 @@ impl RobloxOperation{
#[derive(Debug)]
pub enum LuauSessionError{
Get(GetError),
Unspecified,
NotDone,
NoOutput,
NoError,
}
impl std::fmt::Display for LuauSessionError{
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
@@ -359,20 +362,18 @@ pub enum LuauSessionState{
STATE_UNSPECIFIED,
PROCESSING,
COMPLETE,
ERROR,
FAILED,
}
#[derive(Debug,serde::Deserialize)]
#[expect(nonstandard_style)]
pub struct LuauSessionResponse{
path:String,
pub createTime:chrono::DateTime<chrono::Utc>,
pub updateTime:chrono::DateTime<chrono::Utc>,
pub user:String,
#[serde(deserialize_with="deserialize_u64")]
pub user:u64,
pub state:LuauSessionState,
pub script:String,
pub timeout:String,
pub error:String,
pub output:String,
pub error:Option<String>,
pub output:Option<String>,
pub binaryInput:String,
pub enableBinaryOutput:bool,
pub binaryOutputUri:String,
@@ -381,19 +382,13 @@ impl LuauSessionResponse{
pub fn path(&self)->&str{
&self.path
}
pub fn session_id(&self)->Option<&str>{
// universes/123/places/123/luau-execution-session-tasks/123e4567-e89b-12d3-a456-426655440000
self.path.rfind('/').map(|index|
self.path.split_at(index+1).1
)
}
pub async fn try_get_result(&self,context:&Context)->Result<Result<String,String>,LuauSessionError>{
let response=context.get_luau_session(self).await.map_err(LuauSessionError::Get)?;
match response.state{
LuauSessionState::STATE_UNSPECIFIED=>Err(LuauSessionError::NotDone),
LuauSessionState::STATE_UNSPECIFIED=>Err(LuauSessionError::Unspecified),
LuauSessionState::PROCESSING=>Err(LuauSessionError::NotDone),
LuauSessionState::COMPLETE=>Ok(Ok(response.output)),
LuauSessionState::ERROR=>Ok(Err(response.error)),
LuauSessionState::COMPLETE=>Ok(Ok(response.output.ok_or(LuauSessionError::NoOutput)?)),
LuauSessionState::FAILED=>Ok(Err(response.error.ok_or(LuauSessionError::NoError)?)),
}
}
}