square_ox/api/
sites.rs

1/*!
2Sites functionality of the [Square API](https://developer.squareup.com).
3 */
4
5use crate::api::{SquareAPI, Verb};
6use crate::client::SquareClient;
7use crate::errors::SquareError;
8use crate::response::SquareResponse;
9
10impl SquareClient {
11    pub fn sites(&self) -> Sites {
12        Sites {
13            client: &self,
14        }
15    }
16}
17
18pub struct Sites<'a> {
19    client: &'a SquareClient,
20}
21
22impl<'a> Sites<'a> {
23    /// Lists the Square Online sites that belong to a seller.
24    /// [Open in API Reference](https://developer.squareup.com/reference/square/sites/list-sites)
25    /// # Example: List all of the Square Online sites belonging to you
26    /// ```rust
27    ///use square_ox::{
28    ///    response::{SquareResponse, ResponseError},
29    ///    client::SquareClient
30    ///    };
31    ///
32    /// async {
33    ///     let sites = SquareClient::new("some_token")
34    ///         .production()
35    ///         .sites()
36    ///         .list()
37    ///         .await;
38    /// };
39    /// ```
40    pub async fn list(self)
41                      -> Result<SquareResponse, SquareError> {
42        self.client.request(
43            Verb::GET,
44            SquareAPI::Sites("".to_string()),
45            None::<&SquareResponse>,
46            None,
47        ).await
48    }
49}
50
51#[cfg(test)]
52mod test_sites {
53    use super::*;
54
55    #[tokio::test]
56    async fn test_list_sites() {
57        use dotenv::dotenv;
58        use std::env;
59
60        dotenv().ok();
61        let access_token = env::var("SITE_ACCESS_TOKEN").expect("ACCESS_TOKEN to be set");
62        let sut = SquareClient::new(&access_token).production();
63
64        let res = sut.sites()
65            .list()
66            .await;
67
68        assert!(res.is_ok())
69    }
70}