bybit_rust_api/rest/announcements/
announcements_client.rs1use crate::rest::client::{RestClient, SecType, ServerResponse};
2use anyhow::Result;
3use serde_json::json;
4
5pub struct AnnouncementsClient {
6 client: RestClient,
7}
8
9impl AnnouncementsClient {
10 pub fn new(client: RestClient) -> Self {
11 AnnouncementsClient { client }
12 }
13
14 pub async fn get_announcements(
17 &self,
18 locale: Option<&str>,
19 type_list: Option<&str>,
20 tag: Option<&str>,
21 page: Option<i32>,
22 limit: Option<i32>,
23 ) -> Result<ServerResponse<serde_json::Value>> {
24 let endpoint = "v5/announcements/index";
25 let mut params = json!({});
26
27 if let Some(locale) = locale {
28 params["locale"] = json!(locale);
29 }
30 if let Some(type_list) = type_list {
31 params["type"] = json!(type_list);
32 }
33 if let Some(tag) = tag {
34 params["tag"] = json!(tag);
35 }
36 if let Some(page) = page {
37 params["page"] = json!(page);
38 }
39 if let Some(limit) = limit {
40 params["limit"] = json!(limit);
41 }
42
43 let response = self.client.get(endpoint, params, SecType::None).await?;
44 Ok(response)
45 }
46}
47
48#[cfg(test)]
49mod tests {
50 use super::*;
51 use crate::rest::ApiKeyPair;
52
53 fn create_test_client() -> AnnouncementsClient {
54 let api_key_pair = ApiKeyPair::new(
55 "test".to_string(),
56 "test_key".to_string(),
57 "test_secret".to_string(),
58 );
59 let rest_client = RestClient::new(
60 api_key_pair,
61 "https://api-testnet.bybit.com".to_string(),
62 false,
63 );
64 AnnouncementsClient::new(rest_client)
65 }
66
67 #[test]
68 fn test_announcements_client_creation() {
69 let _client = create_test_client();
70 }
71
72 #[tokio::test]
73 async fn test_get_announcements_params() {
74 let locale = Some("en-US");
75 let type_list = Some("new_crypto");
76 let tag = Some("Spot");
77 let page = Some(1);
78 let limit = Some(20);
79
80 assert_eq!(locale, Some("en-US"));
81 assert_eq!(type_list, Some("new_crypto"));
82 assert_eq!(tag, Some("Spot"));
83 assert_eq!(page, Some(1));
84 assert_eq!(limit, Some(20));
85 }
86}