instagram_link/
media_metadata.rs

1use instagram_media_shortcode::{ig_id_to_shortcode, is_private_shortcode, shortcode_to_ig_id};
2
3//
4#[derive(Debug, Clone, PartialEq, Eq)]
5pub struct MediaMetadata {
6    pub ig_id: u64,
7    pub shortcode: String,
8    pub is_public_shortcode: Option<bool>,
9}
10
11impl MediaMetadata {
12    pub fn with_ig_id(ig_id: u64) -> Self {
13        Self {
14            ig_id,
15            shortcode: ig_id_to_shortcode(ig_id),
16            is_public_shortcode: None,
17        }
18    }
19
20    pub fn with_shortcode(shortcode: String) -> Result<Self, String> {
21        let ig_id = shortcode_to_ig_id(&shortcode)?;
22        let is_public_shortcode = Some(!is_private_shortcode(&shortcode));
23
24        Ok(Self {
25            ig_id,
26            shortcode,
27            is_public_shortcode,
28        })
29    }
30}