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)] #[derive(Debug)]
pub enum LuauSessionError{ pub enum LuauSessionError{
Get(GetError), Get(GetError),
Unspecified,
NotDone, NotDone,
NoOutput,
NoError,
} }
impl std::fmt::Display for LuauSessionError{ impl std::fmt::Display for LuauSessionError{
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
@@ -359,20 +362,18 @@ pub enum LuauSessionState{
STATE_UNSPECIFIED, STATE_UNSPECIFIED,
PROCESSING, PROCESSING,
COMPLETE, COMPLETE,
ERROR, FAILED,
} }
#[derive(Debug,serde::Deserialize)] #[derive(Debug,serde::Deserialize)]
#[expect(nonstandard_style)] #[expect(nonstandard_style)]
pub struct LuauSessionResponse{ pub struct LuauSessionResponse{
path:String, path:String,
pub createTime:chrono::DateTime<chrono::Utc>, #[serde(deserialize_with="deserialize_u64")]
pub updateTime:chrono::DateTime<chrono::Utc>, pub user:u64,
pub user:String,
pub state:LuauSessionState, pub state:LuauSessionState,
pub script:String, pub script:String,
pub timeout:String, pub error:Option<String>,
pub error:String, pub output:Option<String>,
pub output:String,
pub binaryInput:String, pub binaryInput:String,
pub enableBinaryOutput:bool, pub enableBinaryOutput:bool,
pub binaryOutputUri:String, pub binaryOutputUri:String,
@@ -381,19 +382,13 @@ impl LuauSessionResponse{
pub fn path(&self)->&str{ pub fn path(&self)->&str{
&self.path &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>{ 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)?; let response=context.get_luau_session(self).await.map_err(LuauSessionError::Get)?;
match response.state{ match response.state{
LuauSessionState::STATE_UNSPECIFIED=>Err(LuauSessionError::NotDone), LuauSessionState::STATE_UNSPECIFIED=>Err(LuauSessionError::Unspecified),
LuauSessionState::PROCESSING=>Err(LuauSessionError::NotDone), LuauSessionState::PROCESSING=>Err(LuauSessionError::NotDone),
LuauSessionState::COMPLETE=>Ok(Ok(response.output)), LuauSessionState::COMPLETE=>Ok(Ok(response.output.ok_or(LuauSessionError::NoOutput)?)),
LuauSessionState::ERROR=>Ok(Err(response.error)), LuauSessionState::FAILED=>Ok(Err(response.error.ok_or(LuauSessionError::NoError)?)),
} }
} }
} }