Skip to main content

asimov_apify_module/api/
twitter.rs

1// This is free and unencumbered software released into the public domain.
2
3#![allow(unused)]
4
5use asimov_module::prelude::{FromStr, String, Vec};
6use serde::Serialize;
7
8/// See: https://apify.com/kaitoeasyapi/premium-x-follower-scraper-following-data
9#[derive(Clone, Debug, Default, Serialize)]
10pub struct TwitterFollowingScrapeRequest {
11    #[serde(rename = "getFollowers")]
12    pub get_followers: bool,
13
14    #[serde(rename = "getFollowing")]
15    pub get_following: bool,
16
17    #[serde(rename = "maxFollowers")]
18    pub max_followers: u32,
19
20    #[serde(rename = "maxFollowings")]
21    pub max_followings: u32,
22
23    pub user_names: Vec<String>,
24}
25
26impl FromStr for TwitterFollowingScrapeRequest {
27    type Err = url::ParseError;
28
29    fn from_str(input: &str) -> Result<Self, Self::Err> {
30        url::Url::parse(input).map(|url| match url.path_segments().and_then(|mut s| s.next()) {
31            None => Self::default(),
32            Some(path) => Self {
33                user_names: Vec::from([path.into()]),
34                get_followers: true,
35                get_following: true,
36                max_followers: 200,
37                max_followings: 200,
38                ..Default::default()
39            },
40        })
41    }
42}