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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
use crate::client::GoogleMapsClient;
use crate::places::place_search::text_search::request::Request;

// =============================================================================

impl<'a> Request<'a> {

    // -------------------------------------------------------------------------
    //
    /// Initializes the builder pattern for a Places API _Text Search_ query
    /// with the required, non-optional parameters.
    ///
    /// ## Arguments:
    ///
    /// * `client` ‧ Your application's Google Maps API client struct.
    ///
    /// * `query` ‧ The text string on which to search, for example:
    /// "restaurant" or "123 Main Street". This must a place name, address, or
    /// category of establishments. Any other types of input can generate errors
    /// and are not guaranteed to return valid results. The Google Places
    /// service will return candidate matches based on this string and order the
    /// results based on their perceived relevance.
    ///
    /// * `radius` ‧ Defines the distance (in meters) within which to return
    /// place results. You may bias results to a specified circle by passing a
    /// `location` and a `radius` parameter. Doing so instructs the Places
    /// service to prefer showing results within that circle; results outside of
    /// the defined area may still be displayed.
    ///
    /// The radius will automatically be clamped to a maximum value depending on
    /// the type of search and other parameters.
    ///
    /// * Autocomplete: 50,000 meters
    /// * Nearby Search:
    ///     * with `keyword` or `name`: 50,000 meters
    ///     * without `keyword` or `name`
    ///         * Up to 50,000 meters, adjusted dynamically based on area
    ///         density, independent of `rankby` parameter.
    ///         * When using `rankby=distance`, the radius parameter will not be
    ///         accepted, and will result in an `INVALID_REQUEST`.
    /// * Query Autocomplete: 50,000 meters
    /// * Nearby Search: 50,000 meters

    pub fn new(
        client: &GoogleMapsClient,
        query: String,
        radius: u32,
    ) -> Request {

        // Instantiate struct and return it to caller:
        Request {
            // Required parameters:
            client,
            input: query,
            radius,
            // Optional parameters:
            language: None,
            location: None,
            maxprice: None,
            minprice: None,
            opennow: None,
            pagetoken: None,
            region: None,
            place_type: None,
            // Internal use only:
            query: None,
        } // struct

    } // fn

} // impl