twitter_internal_api/api/params/
common.rs1use 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}