lago_client/queries/
activity_log.rs1use lago_types::{
2 error::{LagoError, Result},
3 requests::activity_log::{GetActivityLogRequest, ListActivityLogsRequest},
4 responses::activity_log::{GetActivityLogResponse, ListActivityLogsResponse},
5};
6use url::Url;
7
8use crate::client::LagoClient;
9
10impl LagoClient {
12 pub async fn list_activity_logs(
20 &self,
21 request: Option<ListActivityLogsRequest>,
22 ) -> Result<ListActivityLogsResponse> {
23 let request = request.unwrap_or_default();
24 let region = self.config.region()?;
25 let mut url = Url::parse(&format!("{}/activity_logs", region.endpoint()))
26 .map_err(|e| LagoError::Configuration(format!("Invalid URL: {e}")))?;
27
28 let query_params = request.to_query_params();
29
30 if !query_params.is_empty() {
31 let query_string = query_params
32 .iter()
33 .map(|(k, v)| format!("{k}={v}"))
34 .collect::<Vec<_>>()
35 .join("&");
36 url.set_query(Some(&query_string));
37 }
38
39 self.make_request("GET", url.as_str(), None::<&()>).await
40 }
41
42 pub async fn get_activity_log(
50 &self,
51 request: GetActivityLogRequest,
52 ) -> Result<GetActivityLogResponse> {
53 let region = self.config.region()?;
54 let url = format!(
55 "{}/activity_logs/{}",
56 region.endpoint(),
57 request.activity_id
58 );
59 self.make_request("GET", &url, None::<&()>).await
60 }
61}