1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use crate::ApiCountry;
use async_std::task;
use std::error::Error;

#[derive(Clone, Debug)]
pub struct CountrySearchBuilder {
    builder: crate::CountrySearchBuilder,
}

impl CountrySearchBuilder {
    pub fn new(builder: crate::CountrySearchBuilder) -> Self {
        CountrySearchBuilder { builder }
    }

    pub fn filter<P: AsRef<str>>(self, filter: P) -> Self {
        CountrySearchBuilder {
            builder: self.builder.filter(filter.as_ref().to_string()),
        }
    }

    pub fn order(self, order: crate::CountryOrder) -> Self {
        CountrySearchBuilder {
            builder: self.builder.order(order),
        }
    }

    pub fn reverse(self, reverse: bool) -> Self {
        CountrySearchBuilder {
            builder: self.builder.reverse(reverse),
        }
    }

    pub fn offset<P: AsRef<str>>(self, offset: P) -> Self {
        CountrySearchBuilder {
            builder: self.builder.offset(offset),
        }
    }

    pub fn limit<P: AsRef<str>>(self, limit: P) -> Self {
        CountrySearchBuilder {
            builder: self.builder.limit(limit),
        }
    }

    pub fn hidebroken(self, hidebroken: bool) -> Self {
        CountrySearchBuilder {
            builder: self.builder.hidebroken(hidebroken),
        }
    }

    pub fn send(self) -> Result<Vec<ApiCountry>, Box<dyn Error>> {
        task::block_on(async { self.builder.send().await })
    }
}