use crate::client::ZtkClient;
use crate::common::http::build_params_with_appkey;
use crate::error::ZtkResult;
use super::request::{ElemeConvertRequest, ElemeOrderQueryRequest};
use super::response::{ElemeConvertResponse, ElemeOrderResponse};
pub struct ElemeApi<'a> {
client: &'a ZtkClient,
}
impl<'a> ElemeApi<'a> {
pub fn new(client: &'a ZtkClient) -> Self {
Self { client }
}
#[allow(dead_code)]
pub(crate) fn client(&self) -> &ZtkClient {
self.client
}
pub async fn convert(&self, request: ElemeConvertRequest) -> ZtkResult<ElemeConvertResponse> {
let params = build_params_with_appkey(self.client.appkey(), &request)?;
self.client
.http_client()
.get("/api/open_eleme_generateLink.ashx", ¶ms)
.await
}
pub async fn query_orders(
&self,
request: ElemeOrderQueryRequest,
) -> ZtkResult<ElemeOrderResponse> {
let params = build_params_with_appkey(self.client.appkey(), &request)?;
self.client
.http_client()
.get("/api/open_lianmeng_orderList.ashx", ¶ms)
.await
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_eleme_api_creation() {
let client = ZtkClient::new("test_appkey").build().unwrap();
let eleme = client.eleme();
assert_eq!(eleme.client().appkey(), "test_appkey");
}
}