bobby_browser_client/
state.rs1use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5
6use crate::{ExecutionPolicy, PageId, SessionId};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
11pub enum PageMode {
12 Document,
13 Interactive,
14 Render,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
20pub struct RuntimeInfo {
21 pub version: String,
22 pub capabilities: Vec<String>,
23 pub active_sessions: usize,
24 pub queued_jobs: usize,
25 pub uptime_ms: u64,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
30#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
31pub struct SessionState {
32 pub id: SessionId,
33 pub profile: String,
34 pub proxy: Option<String>,
35 pub page_ids: Vec<PageId>,
36 pub created_at: DateTime<Utc>,
37 pub last_used_at: DateTime<Utc>,
38 pub execution_policy: ExecutionPolicy,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
44pub struct PageState {
45 pub id: PageId,
46 pub session_id: SessionId,
47 pub url: Option<String>,
48 pub mode: PageMode,
49 pub ready_state: String,
50 pub pending_requests: usize,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
55#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
56pub struct NavigationResult {
57 pub page_id: PageId,
58 pub url: String,
59 pub ready_state: String,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
64#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
65pub struct ExtractResult {
66 pub page_id: PageId,
67 pub data: serde_json::Value,
68}