qinstagram 0.1.1

Enterprise-grade IG Private API Architecture & Protocol Engineering toolkit with 100% Async-GraphQL & Websocket integration.
Documentation
use crate::error::{InstagramError, Result};
use crate::transport::client::InstagramHttpClient;
use crate::types::story::StoryReel;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReelsTrayResponse {
    pub tray: Vec<StoryReel>,
}

impl InstagramHttpClient {
    pub async fn get_reels_tray(&self) -> Result<Vec<StoryReel>> {
        let url = format!("{}/api/v1/feed/reels_tray/", crate::constants::HOST);
        
        let res = self.get(&url).send().await?;
        let text = res.text().await.map_err(InstagramError::NetworkError)?;
        
        let json_res: serde_json::Value = serde_json::from_str(&text).map_err(InstagramError::SerdeError)?;
        
        let mut reels = Vec::new();
        if let Some(tray) = json_res.get("tray").and_then(|t| t.as_array()) {
            for reel_val in tray {
                if let Ok(reel) = serde_json::from_value::<StoryReel>(reel_val.clone()) {
                    reels.push(reel);
                }
            }
        }
        
        Ok(reels)
    }
}