eversal_esi/alliance/
routes.rs

1use super::{Alliance, AllianceIcon};
2use crate::{get_public, Esi, EsiResult, Response};
3
4impl Esi {
5  /**
6   * List all active player alliances
7   * esi: https://esi.evetech.net/latest/alliances/
8   */
9  pub async fn get_alliances(&self, etag: Option<&str>) -> EsiResult<Response<Vec<i32>>> {
10    let result = get_public::<Vec<i32>>("alliances/", self, None, etag).await?;
11    Ok(result)
12  }
13
14  /**
15   * Public information about an alliance
16   * esi: https://esi.evetech.net/latest/alliances/{alliance_id}/
17   */
18  pub async fn get_alliance(
19    &self,
20    alliance_id: i32,
21    etag: Option<&str>,
22  ) -> EsiResult<Response<Alliance>> {
23    let result =
24      get_public::<Alliance>(&format!("alliances/{}", alliance_id), self, None, etag).await?;
25    Ok(result)
26  }
27
28  /**
29   * List all current member corporations of an alliance
30   * esi: https://esi.evetech.net/latest/alliances/{alliance_id}/corporations/
31   */
32  pub async fn get_alliance_corporations(
33    &self,
34    alliance_id: i32,
35    etag: Option<&str>,
36  ) -> EsiResult<Response<Vec<i32>>> {
37    let result = get_public::<Vec<i32>>(
38      &format!("alliances/{}/corporations/", alliance_id),
39      self,
40      None,
41      etag,
42    )
43    .await?;
44    Ok(result)
45  }
46
47  /**
48   * Get the icon urls for a alliance
49   * esi: https://esi.evetech.net/latest/alliances/{alliance_id}/icons/
50   */
51  pub async fn get_alliance_icons(
52    &self,
53    alliance_id: i32,
54    etag: Option<&str>,
55  ) -> EsiResult<Response<AllianceIcon>> {
56    let result = get_public::<AllianceIcon>(
57      &format!("alliances/{}/icons/", alliance_id),
58      self,
59      None,
60      etag,
61    )
62    .await?;
63    Ok(result)
64  }
65}
66
67#[cfg(test)]
68mod tests {
69  use crate::Esi;
70
71  const OWNER_ID: &str = "1234567890";
72  const CLIENT_ID: &str = "1234567890";
73  const CLIENT_SECRET: &str = "1234567890";
74  const CALLBACK_URL: &str = "https://example.com/callback";
75
76  async fn get_alliance_id() -> i32 {
77    let esi = Esi::new(OWNER_ID, CLIENT_ID, CLIENT_SECRET, CALLBACK_URL, 10);
78    assert!(esi.is_ok());
79    let esi = esi.unwrap();
80    let result = esi.get_alliances(None).await;
81    assert!(result.is_ok());
82    let alliances = result.unwrap().data;
83    assert!(!alliances.is_empty());
84    alliances[0]
85  }
86
87  #[tokio::test]
88  async fn test_get_alliances() {
89    let esi = Esi::new(OWNER_ID, CLIENT_ID, CLIENT_SECRET, CALLBACK_URL, 10);
90    assert!(esi.is_ok());
91    let esi = esi.unwrap();
92    let result = esi.get_alliances(None).await;
93    assert!(result.is_ok());
94    let etag = result.unwrap().headers.etag;
95    let result = esi.get_alliances(Some(&etag)).await;
96    assert!(result.is_err_and(|x| x.status() == 304));
97  }
98
99  #[tokio::test]
100  async fn test_get_alliance() {
101    let esi = Esi::new(OWNER_ID, CLIENT_ID, CLIENT_SECRET, CALLBACK_URL, 10);
102    assert!(esi.is_ok());
103    let esi = esi.unwrap();
104    let alliance_id = get_alliance_id().await;
105    let result = esi.get_alliance(alliance_id, None).await;
106    assert!(result.is_ok());
107    let etag = result.unwrap().headers.etag;
108    let result = esi.get_alliance(alliance_id, Some(&etag)).await;
109    assert!(result.is_err_and(|x| x.status() == 304));
110  }
111
112  #[tokio::test]
113  async fn test_get_alliance_corporations() {
114    let esi = Esi::new(OWNER_ID, CLIENT_ID, CLIENT_SECRET, CALLBACK_URL, 10);
115    assert!(esi.is_ok());
116    let esi = esi.unwrap();
117    let alliance_id = get_alliance_id().await;
118    let result = esi.get_alliance_corporations(alliance_id, None).await;
119    assert!(result.is_ok());
120    let etag = result.unwrap().headers.etag;
121    let result = esi
122      .get_alliance_corporations(alliance_id, Some(&etag))
123      .await;
124    assert!(result.is_err_and(|x| x.status() == 304));
125  }
126
127  #[tokio::test]
128  async fn test_get_alliance_icons() {
129    let esi = Esi::new(OWNER_ID, CLIENT_ID, CLIENT_SECRET, CALLBACK_URL, 10);
130    assert!(esi.is_ok());
131    let esi = esi.unwrap();
132    let alliance_id = get_alliance_id().await;
133    let result = esi.get_alliance_icons(alliance_id, None).await;
134    assert!(result.is_ok());
135    let etag = result.unwrap().headers.etag;
136    let result = esi.get_alliance_icons(alliance_id, Some(&etag)).await;
137    assert!(result.is_err_and(|x| x.status() == 304));
138  }
139}