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}