v0.4.7 user inventory + git fix #8

Merged
Quaternions merged 9 commits from staging into master 2024-10-01 20:10:30 +00:00
Showing only changes of commit ea0239c78b - Show all commits

View File

@ -150,6 +150,38 @@ pub struct CreationsPageResponse{
pub data:Vec<CreationsItem>, pub data:Vec<CreationsItem>,
} }
pub struct UserInventoryPageRequest{
pub user_id:u64,
pub cursor:Option<String>,
}
#[derive(serde::Deserialize,serde::Serialize)]
#[allow(nonstandard_style,dead_code)]
pub struct UserInventoryItemOwner{
userId:u64,
username:String,
buildersClubMembershipType:u64,
}
#[derive(serde::Deserialize,serde::Serialize)]
#[allow(nonstandard_style,dead_code)]
pub struct UserInventoryItem{
userAssetId:u64,
assetId:u64,
assetName:String,
collectibleItemId:Option<String>,
collectibleItemInstanceId:Option<String>,
owner:UserInventoryItemOwner,
created:chrono::DateTime<chrono::Utc>,
updated:chrono::DateTime<chrono::Utc>,
}
#[derive(serde::Deserialize,serde::Serialize)]
#[allow(nonstandard_style,dead_code)]
pub struct UserInventoryPageResponse{
pub previousPageCursor:Option<String>,
pub nextPageCursor:Option<String>,
pub data:Vec<UserInventoryItem>,
}
//idk how to do this better //idk how to do this better
enum ReaderType<R:std::io::Read>{ enum ReaderType<R:std::io::Read>{
GZip(flate2::read::GzDecoder<std::io::BufReader<R>>), GZip(flate2::read::GzDecoder<std::io::BufReader<R>>),
@ -321,4 +353,18 @@ impl CookieContext{
.error_for_status().map_err(PageError::Reqwest)? .error_for_status().map_err(PageError::Reqwest)?
.json::<CreationsPageResponse>().await.map_err(PageError::Reqwest) .json::<CreationsPageResponse>().await.map_err(PageError::Reqwest)
} }
pub async fn get_user_inventory_page(&self,config:&UserInventoryPageRequest)->Result<UserInventoryPageResponse,PageError>{
let mut url=reqwest::Url::parse(format!("https://inventory.roblox.com/v2/users/{}/inventory/10?limit=100&sortOrder=Desc",config.user_id).as_str()).map_err(PageError::ParseError)?;
//url borrow scope
{
let mut query=url.query_pairs_mut();//borrow here
if let Some(cursor)=config.cursor.as_deref(){
query.append_pair("cursor",cursor);
}
}
self.get(url).await.map_err(PageError::Reqwest)?
.error_for_status().map_err(PageError::Reqwest)?
.json::<UserInventoryPageResponse>().await.map_err(PageError::Reqwest)
}
} }