Skip to main content

servo_fetch/
lib.rs

1//! Fetch, render, and extract web content as Markdown, JSON, or screenshots with an embedded Servo browser engine.
2//! No Chromium, no containers, no external processes.
3//!
4//! ## Async usage
5//!
6//! ```no_run
7//! # async fn run() -> servo_fetch::Result<()> {
8//! let md = servo_fetch::markdown("https://example.com").await?;
9//! # Ok(()) }
10//! ```
11//!
12//! ## Sync usage
13//!
14//! ```no_run
15//! let md = servo_fetch::blocking::markdown("https://example.com")?;
16//! # Ok::<(), servo_fetch::Error>(())
17//! ```
18
19#![deny(unsafe_code)]
20
21pub mod blocking;
22pub mod extract;
23pub mod sanitize;
24pub mod schema;
25pub mod visibility;
26
27pub(crate) mod bridge;
28pub(crate) mod client;
29pub(crate) mod crawl;
30pub(crate) mod error;
31pub(crate) mod fetch;
32pub(crate) mod layout;
33pub(crate) mod map;
34pub(crate) mod net;
35pub(crate) mod pdf;
36pub(crate) mod robots;
37pub(crate) mod runtime;
38pub(crate) mod scope;
39pub(crate) mod screenshot;
40pub(crate) mod sys;
41
42pub use client::{Client, ClientBuilder, ScreenshotOptions};
43pub use crawl::{CrawlOptions, CrawlPage, CrawlResult, crawl, crawl_each};
44pub use error::{Error, Result};
45pub use fetch::{ConsoleLevel, ConsoleMessage, FetchOptions, Page, extract_json, fetch, markdown, text};
46pub use map::{MapOptions, MappedUrl, map};
47pub use net::{NetworkPolicy, validate_url};
48pub use visibility::{VisibilityFlags, VisibilityPolicy};
49
50/// Set the network policy. Must be called at most once, before any engine use.
51pub fn init(policy: NetworkPolicy) {
52    bridge::set_engine_policy(policy);
53}