use serde::{Deserialize, Serialize};
pub const MAX_ACTIONS: usize = 100;
pub const MAX_TOTAL_WAIT_SECS: u64 = 300;
pub const MAX_SINGLE_WAIT_MS: u64 = 300_000;
pub const MAX_SELECTOR_LEN: usize = 4096;
pub const MAX_SCRIPT_LEN: usize = 1_048_576;
pub const MAX_TEXT_LEN: usize = 1_048_576;
pub const MAX_SCROLL_AMOUNT: i64 = 100_000;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "camelCase", deny_unknown_fields)]
pub enum PageAction {
Click {
selector: String,
},
Type {
selector: String,
text: String,
},
Press {
key: String,
},
Scroll {
direction: ScrollDirection,
#[serde(skip_serializing_if = "Option::is_none")]
selector: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
amount: Option<i64>,
},
Wait {
#[serde(skip_serializing_if = "Option::is_none")]
milliseconds: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
selector: Option<String>,
},
Screenshot {
#[serde(rename = "fullPage", skip_serializing_if = "Option::is_none")]
full_page: Option<bool>,
},
#[serde(rename = "executeJs")]
ExecuteJs {
script: String,
},
Scrape {},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ScrollDirection {
Up,
Down,
}