plausible_rs/api/event/
mod.rs1mod event_headers;
2mod event_payload;
3mod event_payload_builder;
4mod prop_value;
5
6use crate::{Error, Plausible};
7use bytes::Bytes;
8pub use event_headers::*;
9pub use event_payload::*;
10pub use event_payload_builder::*;
11pub use prop_value::*;
12use reqwest::{RequestBuilder, StatusCode};
13
14pub const PAGEVIEW_EVENT: &str = "pageview";
15
16impl Plausible {
17 pub async fn event(
28 &self,
29 headers: EventHeaders,
30 payload: EventPayload,
31 ) -> Result<Bytes, Error> {
32 let request: RequestBuilder = self
34 .client
35 .post(format!("{}/api/event", self.base_url))
36 .header("Content-Type", "application/json")
37 .header("User-Agent", headers.user_agent)
38 .header("X-Forwarded-For", headers.x_forwarded_for);
39
40 let response = request.json(&payload).send().await?;
42
43 let status_code: StatusCode = response.status();
45 let bytes = response.bytes().await?;
46
47 if !status_code.is_success() {
49 return Err(Error::RequestFailed { bytes, status_code });
50 }
51
52 Ok(bytes)
54 }
55}