diff --git a/rbx_asset/src/cookie.rs b/rbx_asset/src/cookie.rs index 14c677f..aa4b215 100644 --- a/rbx_asset/src/cookie.rs +++ b/rbx_asset/src/cookie.rs @@ -27,6 +27,10 @@ pub enum CreateError{ PostError(PostError), Response(ResponseError), Reqwest(reqwest::Error), + ParseInt{ + response:String, + err:std::num::ParseIntError, + }, } impl std::fmt::Display for CreateError{ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { @@ -51,6 +55,10 @@ pub enum UploadError{ Reqwest(reqwest::Error), Response(ResponseError), AssetIdIsZero, + ParseInt{ + response:String, + err:std::num::ParseIntError, + }, } impl std::fmt::Display for UploadError{ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { @@ -58,7 +66,6 @@ impl std::fmt::Display for UploadError{ } } impl std::error::Error for UploadError{} -type RobloxUploadResponse=u64; #[derive(Debug,serde::Deserialize,serde::Serialize)] #[allow(nonstandard_style,dead_code)] pub struct UploadResponse{ @@ -272,14 +279,20 @@ impl CookieContext{ query.append_pair("groupId",group_id.to_string().as_str()); } } - let asset_id=crate::response_ok( + let response=crate::response_ok( self.post(url,body).await.map_err(CreateError::PostError)? ).await.map_err(CreateError::Response)? - .json::<RobloxUploadResponse>().await.map_err(CreateError::Reqwest)?; + .text().await.map_err(CreateError::Reqwest)?; - Ok(UploadResponse{ - AssetId:asset_id, - }) + match response.parse(){ + Ok(asset_id)=>Ok(UploadResponse{ + AssetId:asset_id, + }), + Err(err)=>Err(CreateError::ParseInt{ + response, + err, + }) + } } pub async fn upload(&self,config:UploadRequest,body:impl Into<reqwest::Body>+Clone)->Result<UploadResponse,UploadError>{ let mut url=reqwest::Url::parse("https://data.roblox.com/Data/Upload.ashx?json=1&type=Model&genreTypeId=1").map_err(UploadError::ParseError)?; @@ -307,14 +320,20 @@ impl CookieContext{ query.append_pair("groupId",group_id.to_string().as_str()); } } - let asset_id=crate::response_ok( + let response=crate::response_ok( self.post(url,body).await.map_err(UploadError::PostError)? ).await.map_err(UploadError::Response)? - .json::<RobloxUploadResponse>().await.map_err(UploadError::Reqwest)?; + .text().await.map_err(UploadError::Reqwest)?; - Ok(UploadResponse{ - AssetId:asset_id, - }) + match response.parse(){ + Ok(asset_id)=>Ok(UploadResponse{ + AssetId:asset_id, + }), + Err(err)=>Err(UploadError::ParseInt{ + response, + err, + }) + } } pub async fn get_asset(&self,config:GetAssetRequest)->Result<Vec<u8>,GetError>{ let mut url=reqwest::Url::parse("https://assetdelivery.roblox.com/v1/asset/").map_err(GetError::ParseError)?;