asimov_brightdata_module/
api.rs1mod scrape;
4pub use scrape::*;
5
6mod trigger;
7pub use trigger::*;
8
9pub use asimov_module::secrecy::{ExposeSecret, SecretString};
10
11use asimov_module::prelude::{Box, Result, String, format};
12use core::error::Error;
13
14#[derive(Debug)]
15pub struct BrightData {
16 pub(crate) api_key: SecretString,
17}
18
19impl BrightData {
20 pub fn new(api_key: SecretString) -> Self {
21 Self { api_key }
22 }
23
24 pub fn scrape_dataset(
25 &self,
26 dataset_id: impl AsRef<str>,
27 request: &ScrapeRequest,
28 ) -> Result<String, Box<dyn Error>> {
29 let mut response = ureq::post("https://api.brightdata.com/datasets/v3/scrape")
30 .query("dataset_id", dataset_id.as_ref())
31 .query("include_errors", "true")
32 .query("format", "json")
33 .header(
34 "Authorization",
35 format!("Bearer {}", self.api_key.expose_secret()),
36 )
37 .send_json(request)?;
38 let response_body = response.body_mut().read_to_string()?;
39 Ok(response_body)
40 }
41}