shodan_client/
utility.rs

1use crate::*;
2use async_trait::async_trait;
3
4#[async_trait]
5pub trait Utility {
6    async fn get_my_ip(&self) -> Result<String, Error>;
7    async fn get_http_headers(&self) -> Result<HashMap<String, String>, Error>;
8}
9
10#[async_trait]
11impl Utility for ShodanClient {
12    async fn get_my_ip(&self) -> Result<String, Error> {
13        Self::fetch(self.build_request_url("/tools/myip", &Default::default())?).await
14    }
15
16    async fn get_http_headers(&self) -> Result<HashMap<String, String>, Error> {
17        Self::fetch(self.build_request_url("/tools/httpheaders", &Default::default())?).await
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    use crate::tests::get_test_api_key;
24    use crate::*;
25
26    #[tokio::test]
27    async fn can_get_my_ip() {
28        let client = ShodanClient::new(get_test_api_key());
29        client.get_my_ip().await.unwrap();
30    }
31
32    #[tokio::test]
33    async fn can_get_http_headers() {
34        let client = ShodanClient::new(get_test_api_key());
35        client.get_http_headers().await.unwrap();
36    }
37}