Skip to main content

twitter_internal_api/api/params/
common.rs

1use crate::api::params::search_time_line::Product;
2use chrono::NaiveDate;
3use clap::Parser;
4
5#[derive(Parser, Debug, Clone)]
6pub struct TweetOptions {
7    #[clap(long)]
8    pub profile: String,
9    #[clap(long)]
10    pub since: Option<NaiveDate>,
11    #[clap(long)]
12    pub until: Option<NaiveDate>,
13    #[clap(long, default_value_t = Product::Top)]
14    pub search_mode: Product,
15    #[clap(long, default_value_t = 50)]
16    pub count: u32,
17    #[clap(long)]
18    pub cursor: Option<String>,
19    #[clap(long)]
20    pub output: String,
21    #[clap(long, default_value_t = Direction::Desc)]
22    pub direction: Direction,
23}
24
25#[derive(Parser, Debug, Clone)]
26pub struct ProfilesOptions {
27    #[clap(long, default_value_t = 50)]
28    pub count: u32,
29    #[clap(long)]
30    pub output: String,
31    #[clap(long)]
32    pub profile: String,
33}
34
35#[derive(Parser, Debug, Clone, Default, strum::EnumString, strum::Display)]
36pub enum Direction {
37    #[default]
38    Desc,
39    Asc,
40}
41
42#[derive(Parser)]
43pub enum Options {
44    Tweets(TweetOptions),
45    Profiles(ProfilesOptions),
46}
47
48#[derive(Debug, Clone, strum::EnumString, strum::Display)]
49#[strum(serialize_all = "snake_case")]
50pub enum Output {
51    PrettyPrint,
52    Json,
53}
54
55pub fn from_args() -> Options {
56    Options::parse()
57}