Skip to main content

coinpaprika_api/changelog/
mod.rs

1use crate::client::{Client, Response};
2use crate::error::Error;
3use reqwest_middleware::RequestBuilder;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Serialize, Deserialize)]
7/// Change made by coinpaprika.com moderators
8pub struct Change {
9    pub currency_id: String,
10    pub old_id: String,
11    pub new_id: String,
12
13    /// RFC3999 (ISO-8601) format
14    pub changed_at: String,
15}
16
17/// Request for getting coin id changes made by coinpaprika.com moderators
18/// [/changelog/ids](https://api.coinpaprika.com/#tag/Changelog/operation/getChangelogIDs)
19pub struct GetChangelogRequest<'a> {
20    client: &'a Client,
21    page: i32,
22}
23
24impl<'a> GetChangelogRequest<'a> {
25    pub fn new(client: &'a Client, page: i32) -> Self {
26        Self { client, page }
27    }
28
29    pub async fn send(&self) -> Result<Vec<Change>, Error> {
30        let query: Vec<(String, String)> = vec![("page".to_string(), self.page.to_string())];
31
32        let request: RequestBuilder = self
33            .client
34            .client
35            .get(format!("{}/changelog/ids", self.client.api_url))
36            .query(&query);
37
38        let response: Response = self.client.request(request).await?;
39
40        let data: Vec<Change> = response.response.json().await?;
41
42        Ok(data)
43    }
44}