{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.Route53.ListGeoLocations -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- | To retrieve a list of supported geo locations, send a GET request to the -- 2013-04-01/geolocations resource. The response to this request includes a -- GeoLocationDetailsList element with zero, one, or multiple -- GeoLocationDetails child elements. The list is sorted by country code, and -- then subdivision code, followed by continents at the end of the list. By -- default, the list of geo locations is displayed on a single page. You can -- control the length of the page that is displayed by using the MaxItems -- parameter. If the list is truncated, IsTruncated will be set to true and a -- combination of NextContinentCode, NextCountryCode, NextSubdivisionCode will -- be populated. You can pass these as parameters to StartContinentCode, -- StartCountryCode, StartSubdivisionCode to control the geo location that the -- list begins with. -- -- module Network.AWS.Route53.ListGeoLocations ( -- * Request ListGeoLocations -- ** Request constructor , listGeoLocations -- ** Request lenses , lglMaxItems , lglStartContinentCode , lglStartCountryCode , lglStartSubdivisionCode -- * Response , ListGeoLocationsResponse -- ** Response constructor , listGeoLocationsResponse -- ** Response lenses , lglrGeoLocationDetailsList , lglrIsTruncated , lglrMaxItems , lglrNextContinentCode , lglrNextCountryCode , lglrNextSubdivisionCode ) where import Network.AWS.Prelude import Network.AWS.Request.RestXML import Network.AWS.Route53.Types import qualified GHC.Exts data ListGeoLocations = ListGeoLocations { _lglMaxItems :: Maybe Text , _lglStartContinentCode :: Maybe Text , _lglStartCountryCode :: Maybe Text , _lglStartSubdivisionCode :: Maybe Text } deriving (Eq, Ord, Show) -- | 'ListGeoLocations' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'lglMaxItems' @::@ 'Maybe' 'Text' -- -- * 'lglStartContinentCode' @::@ 'Maybe' 'Text' -- -- * 'lglStartCountryCode' @::@ 'Maybe' 'Text' -- -- * 'lglStartSubdivisionCode' @::@ 'Maybe' 'Text' -- listGeoLocations :: ListGeoLocations listGeoLocations = ListGeoLocations { _lglStartContinentCode = Nothing , _lglStartCountryCode = Nothing , _lglStartSubdivisionCode = Nothing , _lglMaxItems = Nothing } -- | The maximum number of geo locations you want in the response body. lglMaxItems :: Lens' ListGeoLocations (Maybe Text) lglMaxItems = lens _lglMaxItems (\s a -> s { _lglMaxItems = a }) -- | The first continent code in the lexicographic ordering of geo locations -- that you want the ListGeoLocations request to list. For non-continent geo -- locations, this should be null. Valid values: AF | AN | AS | EU | OC | NA -- | SA Constraint: Specifying ContinentCode with either CountryCode or -- SubdivisionCode returns an InvalidInput error. lglStartContinentCode :: Lens' ListGeoLocations (Maybe Text) lglStartContinentCode = lens _lglStartContinentCode (\s a -> s { _lglStartContinentCode = a }) -- | The first country code in the lexicographic ordering of geo locations -- that you want the ListGeoLocations request to list. The default geo -- location uses a * for the country code. All other country codes follow -- the ISO 3166 two-character code. lglStartCountryCode :: Lens' ListGeoLocations (Maybe Text) lglStartCountryCode = lens _lglStartCountryCode (\s a -> s { _lglStartCountryCode = a }) -- | The first subdivision code in the lexicographic ordering of geo locations -- that you want the ListGeoLocations request to list. Constraint: -- Specifying SubdivisionCode without CountryCode returns an InvalidInput -- error. lglStartSubdivisionCode :: Lens' ListGeoLocations (Maybe Text) lglStartSubdivisionCode = lens _lglStartSubdivisionCode (\s a -> s { _lglStartSubdivisionCode = a }) data ListGeoLocationsResponse = ListGeoLocationsResponse { _lglrGeoLocationDetailsList :: List "GeoLocationDetails" GeoLocationDetails , _lglrIsTruncated :: Bool , _lglrMaxItems :: Text , _lglrNextContinentCode :: Maybe Text , _lglrNextCountryCode :: Maybe Text , _lglrNextSubdivisionCode :: Maybe Text } deriving (Eq, Show) -- | 'ListGeoLocationsResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'lglrGeoLocationDetailsList' @::@ ['GeoLocationDetails'] -- -- * 'lglrIsTruncated' @::@ 'Bool' -- -- * 'lglrMaxItems' @::@ 'Text' -- -- * 'lglrNextContinentCode' @::@ 'Maybe' 'Text' -- -- * 'lglrNextCountryCode' @::@ 'Maybe' 'Text' -- -- * 'lglrNextSubdivisionCode' @::@ 'Maybe' 'Text' -- listGeoLocationsResponse :: Bool -- ^ 'lglrIsTruncated' -> Text -- ^ 'lglrMaxItems' -> ListGeoLocationsResponse listGeoLocationsResponse p1 p2 = ListGeoLocationsResponse { _lglrIsTruncated = p1 , _lglrMaxItems = p2 , _lglrGeoLocationDetailsList = mempty , _lglrNextContinentCode = Nothing , _lglrNextCountryCode = Nothing , _lglrNextSubdivisionCode = Nothing } -- | A complex type that contains information about the geo locations that are -- returned by the request. lglrGeoLocationDetailsList :: Lens' ListGeoLocationsResponse [GeoLocationDetails] lglrGeoLocationDetailsList = lens _lglrGeoLocationDetailsList (\s a -> s { _lglrGeoLocationDetailsList = a }) . _List -- | A flag that indicates whether there are more geo locations to be listed. -- If your results were truncated, you can make a follow-up request for the -- next page of results by using the values included in the -- ListGeoLocationsResponse$NextContinentCode, -- ListGeoLocationsResponse$NextCountryCode and -- ListGeoLocationsResponse$NextSubdivisionCode elements. Valid Values: true -- | false. lglrIsTruncated :: Lens' ListGeoLocationsResponse Bool lglrIsTruncated = lens _lglrIsTruncated (\s a -> s { _lglrIsTruncated = a }) -- | The maximum number of records you requested. The maximum value of -- MaxItems is 100. lglrMaxItems :: Lens' ListGeoLocationsResponse Text lglrMaxItems = lens _lglrMaxItems (\s a -> s { _lglrMaxItems = a }) -- | If the results were truncated, the continent code of the next geo -- location in the list. This element is present only if -- ListGeoLocationsResponse$IsTruncated is true and the next geo location to -- list is a continent location. lglrNextContinentCode :: Lens' ListGeoLocationsResponse (Maybe Text) lglrNextContinentCode = lens _lglrNextContinentCode (\s a -> s { _lglrNextContinentCode = a }) -- | If the results were truncated, the country code of the next geo location -- in the list. This element is present only if -- ListGeoLocationsResponse$IsTruncated is true and the next geo location to -- list is not a continent location. lglrNextCountryCode :: Lens' ListGeoLocationsResponse (Maybe Text) lglrNextCountryCode = lens _lglrNextCountryCode (\s a -> s { _lglrNextCountryCode = a }) -- | If the results were truncated, the subdivision code of the next geo -- location in the list. This element is present only if -- ListGeoLocationsResponse$IsTruncated is true and the next geo location -- has a subdivision. lglrNextSubdivisionCode :: Lens' ListGeoLocationsResponse (Maybe Text) lglrNextSubdivisionCode = lens _lglrNextSubdivisionCode (\s a -> s { _lglrNextSubdivisionCode = a }) instance ToPath ListGeoLocations where toPath = const "/2013-04-01/geolocations" instance ToQuery ListGeoLocations where toQuery ListGeoLocations{..} = mconcat [ "maxitems" =? _lglMaxItems , "startcontinentcode" =? _lglStartContinentCode , "startcountrycode" =? _lglStartCountryCode , "startsubdivisioncode" =? _lglStartSubdivisionCode ] instance ToHeaders ListGeoLocations instance ToXMLRoot ListGeoLocations where toXMLRoot = const (namespaced ns "ListGeoLocations" []) instance ToXML ListGeoLocations instance AWSRequest ListGeoLocations where type Sv ListGeoLocations = Route53 type Rs ListGeoLocations = ListGeoLocationsResponse request = get response = xmlResponse instance FromXML ListGeoLocationsResponse where parseXML x = ListGeoLocationsResponse <$> x .@ "GeoLocationDetailsList" <*> x .@ "IsTruncated" <*> x .@ "MaxItems" <*> x .@? "NextContinentCode" <*> x .@? "NextCountryCode" <*> x .@? "NextSubdivisionCode"