onspring/endpoints/
reports.rs1use reqwest::Method;
2
3use crate::client::OnspringClient;
4use crate::error::Result;
5use crate::models::{
6 DataFormat, PagedResponse, PagingRequest, ReportData, ReportDataType, ReportInfo,
7};
8
9impl OnspringClient {
10 pub async fn get_report(
12 &self,
13 report_id: i32,
14 data_format: Option<DataFormat>,
15 data_type: Option<ReportDataType>,
16 ) -> Result<ReportData> {
17 let path = format!("/Reports/id/{}", report_id);
18 let mut query = Vec::new();
19 if let Some(fmt) = data_format {
20 query.push(("apiDataFormat", format!("{:?}", fmt)));
21 }
22 if let Some(dt) = data_type {
23 query.push(("dataType", format!("{:?}", dt)));
24 }
25 let query_refs: Vec<(&str, String)> = query.iter().map(|(k, v)| (*k, v.clone())).collect();
26 self
27 .request(Method::GET, &path, &query_refs, Option::<&()>::None)
28 .await
29 }
30
31 pub async fn list_reports(
33 &self,
34 app_id: i32,
35 paging: Option<PagingRequest>,
36 ) -> Result<PagedResponse<ReportInfo>> {
37 let path = format!("/Reports/appId/{}", app_id);
38 let mut query = Vec::new();
39 if let Some(p) = paging {
40 query.push(("PageNumber", p.page_number.to_string()));
41 query.push(("PageSize", p.page_size.to_string()));
42 }
43 let query_refs: Vec<(&str, String)> = query.iter().map(|(k, v)| (*k, v.clone())).collect();
44 self
45 .request(Method::GET, &path, &query_refs, Option::<&()>::None)
46 .await
47 }
48}