packages feed

amazonka-cloudfront (empty) → 0.0.0

raw patch · 27 files changed

+6860/−0 lines, 27 filesdep +amazonka-coredep +basesetup-changed

Dependencies added: amazonka-core, base

Files

+ LICENSE view
@@ -0,0 +1,373 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.++Exhibit B - "Incompatible With Secondary Licenses" Notice+---------------------------------------------------------++  This Source Code Form is "Incompatible With Secondary Licenses", as+  defined by the Mozilla Public License, v. 2.0.
+ README.md view
@@ -0,0 +1,26 @@+# Amazon CloudFront SDK++> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!++* [description](#description)+* [Contribute](#contribute)+* [Licence](#licence)++## Description++Amazon CloudFront is a web service that speeds up distribution of your static and dynamic web content, for example, .html, .css, .php, image, and media files, to end users. CloudFront delivers your content through a worldwide network of edge locations. When an end user requests content that you're serving with CloudFront, the user is routed to the edge location that provides the lowest latency, so content is delivered with the best possible performance. If the content is already in that edge location, CloudFront delivers it immediately. If the content is not currently in that edge location, CloudFront retrieves it from an Amazon S3 bucket or an HTTP server (for example, a web server) that you have identified as the source for the definitive version of your content.++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-cloudfront)+and [AWS API Reference](http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/Welcome.html).+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`amazonka-cloudfront` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ amazonka-cloudfront.cabal view
@@ -0,0 +1,73 @@+name:                  amazonka-cloudfront+version:               0.0.0+synopsis:              Amazon CloudFront SDK.+homepage:              https://github.com/brendanhay/amazonka+license:               OtherLicense+license-file:          LICENSE+author:                Brendan Hay+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>+copyright:             Copyright (c) 2013-2014 Brendan Hay+category:              Network, AWS, Cloud+build-type:            Simple+extra-source-files:    README.md+cabal-version:         >= 1.10++description:+    Amazon CloudFront is a web service that speeds up distribution of your+    static and dynamic web content, for example, .html, .css, .php, image,+    and media files, to end users. CloudFront delivers your content through+    a worldwide network of edge locations. When an end user requests+    content that you're serving with CloudFront, the user is routed to the+    edge location that provides the lowest latency, so content is delivered+    with the best possible performance. If the content is already in that+    edge location, CloudFront delivers it immediately. If the content is+    not currently in that edge location, CloudFront retrieves it from an+    Amazon S3 bucket or an HTTP server (for example, a web server) that you+    have identified as the source for the definitive version of your+    content.+    .+    /See:/ <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/Welcome.html AWS API Reference>+    .+    /Warning:/ This is an experimental preview release which is still under+    heavy development and not intended for public consumption, caveat emptor!++source-repository head+    type:     git+    location: git://github.com/brendanhay/amazonka.git++library+    default-language:  Haskell2010+    hs-source-dirs:    src gen++    ghc-options:       -Wall++    exposed-modules:+          Network.AWS.CloudFront+        , Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity+        , Network.AWS.CloudFront.CreateDistribution+        , Network.AWS.CloudFront.CreateInvalidation+        , Network.AWS.CloudFront.CreateStreamingDistribution+        , Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity+        , Network.AWS.CloudFront.DeleteDistribution+        , Network.AWS.CloudFront.DeleteStreamingDistribution+        , Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentity+        , Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentityConfig+        , Network.AWS.CloudFront.GetDistribution+        , Network.AWS.CloudFront.GetDistributionConfig+        , Network.AWS.CloudFront.GetInvalidation+        , Network.AWS.CloudFront.GetStreamingDistribution+        , Network.AWS.CloudFront.GetStreamingDistributionConfig+        , Network.AWS.CloudFront.ListCloudFrontOriginAccessIdentities+        , Network.AWS.CloudFront.ListDistributions+        , Network.AWS.CloudFront.ListInvalidations+        , Network.AWS.CloudFront.ListStreamingDistributions+        , Network.AWS.CloudFront.Types+        , Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity+        , Network.AWS.CloudFront.UpdateDistribution+        , Network.AWS.CloudFront.UpdateStreamingDistribution++    other-modules:++    build-depends:+          amazonka-core+        , base          >= 4.7 && < 5
+ gen/Network/AWS/CloudFront.hs view
@@ -0,0 +1,68 @@+-- Module      : Network.AWS.CloudFront+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Amazon CloudFront is a web service that speeds up distribution of your+-- static and dynamic web content, for example, .html, .css, .php, image, and+-- media files, to end users. CloudFront delivers your content through a+-- worldwide network of edge locations. When an end user requests content that+-- you're serving with CloudFront, the user is routed to the edge location+-- that provides the lowest latency, so content is delivered with the best+-- possible performance. If the content is already in that edge location,+-- CloudFront delivers it immediately. If the content is not currently in that+-- edge location, CloudFront retrieves it from an Amazon S3 bucket or an HTTP+-- server (for example, a web server) that you have identified as the source+-- for the definitive version of your content.+module Network.AWS.CloudFront+    ( module Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity+    , module Network.AWS.CloudFront.CreateDistribution+    , module Network.AWS.CloudFront.CreateInvalidation+    , module Network.AWS.CloudFront.CreateStreamingDistribution+    , module Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity+    , module Network.AWS.CloudFront.DeleteDistribution+    , module Network.AWS.CloudFront.DeleteStreamingDistribution+    , module Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentity+    , module Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentityConfig+    , module Network.AWS.CloudFront.GetDistribution+    , module Network.AWS.CloudFront.GetDistributionConfig+    , module Network.AWS.CloudFront.GetInvalidation+    , module Network.AWS.CloudFront.GetStreamingDistribution+    , module Network.AWS.CloudFront.GetStreamingDistributionConfig+    , module Network.AWS.CloudFront.ListCloudFrontOriginAccessIdentities+    , module Network.AWS.CloudFront.ListDistributions+    , module Network.AWS.CloudFront.ListInvalidations+    , module Network.AWS.CloudFront.ListStreamingDistributions+    , module Network.AWS.CloudFront.Types+    , module Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity+    , module Network.AWS.CloudFront.UpdateDistribution+    , module Network.AWS.CloudFront.UpdateStreamingDistribution+    ) where++import Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity+import Network.AWS.CloudFront.CreateDistribution+import Network.AWS.CloudFront.CreateInvalidation+import Network.AWS.CloudFront.CreateStreamingDistribution+import Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity+import Network.AWS.CloudFront.DeleteDistribution+import Network.AWS.CloudFront.DeleteStreamingDistribution+import Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentity+import Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentityConfig+import Network.AWS.CloudFront.GetDistribution+import Network.AWS.CloudFront.GetDistributionConfig+import Network.AWS.CloudFront.GetInvalidation+import Network.AWS.CloudFront.GetStreamingDistribution+import Network.AWS.CloudFront.GetStreamingDistributionConfig+import Network.AWS.CloudFront.ListCloudFrontOriginAccessIdentities+import Network.AWS.CloudFront.ListDistributions+import Network.AWS.CloudFront.ListInvalidations+import Network.AWS.CloudFront.ListStreamingDistributions+import Network.AWS.CloudFront.Types+import Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity+import Network.AWS.CloudFront.UpdateDistribution+import Network.AWS.CloudFront.UpdateStreamingDistribution
+ gen/Network/AWS/CloudFront/CreateCloudFrontOriginAccessIdentity.hs view
@@ -0,0 +1,135 @@+{-# 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.CloudFront.CreateCloudFrontOriginAccessIdentity+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Create a new origin access identity.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateCloudFrontOriginAccessIdentity.html>+module Network.AWS.CloudFront.CreateCloudFrontOriginAccessIdentity+    (+    -- * Request+      CreateCloudFrontOriginAccessIdentity+    -- ** Request constructor+    , createCloudFrontOriginAccessIdentity+    -- ** Request lenses+    , ccfoaiCloudFrontOriginAccessIdentityConfig++    -- * Response+    , CreateCloudFrontOriginAccessIdentityResponse+    -- ** Response constructor+    , createCloudFrontOriginAccessIdentityResponse+    -- ** Response lenses+    , ccfoairCloudFrontOriginAccessIdentity+    , ccfoairETag+    , ccfoairLocation+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype CreateCloudFrontOriginAccessIdentity = CreateCloudFrontOriginAccessIdentity+    { _ccfoaiCloudFrontOriginAccessIdentityConfig :: CloudFrontOriginAccessIdentityConfig+    } deriving (Eq, Show)++-- | 'CreateCloudFrontOriginAccessIdentity' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccfoaiCloudFrontOriginAccessIdentityConfig' @::@ 'CloudFrontOriginAccessIdentityConfig'+--+createCloudFrontOriginAccessIdentity :: CloudFrontOriginAccessIdentityConfig -- ^ 'ccfoaiCloudFrontOriginAccessIdentityConfig'+                                     -> CreateCloudFrontOriginAccessIdentity+createCloudFrontOriginAccessIdentity p1 = CreateCloudFrontOriginAccessIdentity+    { _ccfoaiCloudFrontOriginAccessIdentityConfig = p1+    }++-- | The origin access identity's configuration information.+ccfoaiCloudFrontOriginAccessIdentityConfig :: Lens' CreateCloudFrontOriginAccessIdentity CloudFrontOriginAccessIdentityConfig+ccfoaiCloudFrontOriginAccessIdentityConfig =+    lens _ccfoaiCloudFrontOriginAccessIdentityConfig+        (\s a -> s { _ccfoaiCloudFrontOriginAccessIdentityConfig = a })++data CreateCloudFrontOriginAccessIdentityResponse = CreateCloudFrontOriginAccessIdentityResponse+    { _ccfoairCloudFrontOriginAccessIdentity :: Maybe CloudFrontOriginAccessIdentity+    , _ccfoairETag                           :: Maybe Text+    , _ccfoairLocation                       :: Maybe Text+    } deriving (Eq, Show)++-- | 'CreateCloudFrontOriginAccessIdentityResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ccfoairCloudFrontOriginAccessIdentity' @::@ 'Maybe' 'CloudFrontOriginAccessIdentity'+--+-- * 'ccfoairETag' @::@ 'Maybe' 'Text'+--+-- * 'ccfoairLocation' @::@ 'Maybe' 'Text'+--+createCloudFrontOriginAccessIdentityResponse :: CreateCloudFrontOriginAccessIdentityResponse+createCloudFrontOriginAccessIdentityResponse = CreateCloudFrontOriginAccessIdentityResponse+    { _ccfoairCloudFrontOriginAccessIdentity = Nothing+    , _ccfoairLocation                       = Nothing+    , _ccfoairETag                           = Nothing+    }++-- | The origin access identity's information.+ccfoairCloudFrontOriginAccessIdentity :: Lens' CreateCloudFrontOriginAccessIdentityResponse (Maybe CloudFrontOriginAccessIdentity)+ccfoairCloudFrontOriginAccessIdentity =+    lens _ccfoairCloudFrontOriginAccessIdentity+        (\s a -> s { _ccfoairCloudFrontOriginAccessIdentity = a })++-- | The current version of the origin access identity created.+ccfoairETag :: Lens' CreateCloudFrontOriginAccessIdentityResponse (Maybe Text)+ccfoairETag = lens _ccfoairETag (\s a -> s { _ccfoairETag = a })++-- | The fully qualified URI of the new origin access identity just created.+-- For example:+-- https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront/E74FTE3AJFJ256A.+-- +ccfoairLocation :: Lens' CreateCloudFrontOriginAccessIdentityResponse (Maybe Text)+ccfoairLocation = lens _ccfoairLocation (\s a -> s { _ccfoairLocation = a })++instance ToPath CreateCloudFrontOriginAccessIdentity where+    toPath = const "/2014-05-31/origin-access-identity/cloudfront"++instance ToQuery CreateCloudFrontOriginAccessIdentity where+    toQuery = const mempty++instance ToHeaders CreateCloudFrontOriginAccessIdentity++instance ToXMLRoot CreateCloudFrontOriginAccessIdentity where+    toXMLRoot CreateCloudFrontOriginAccessIdentity{..} = namespaced ns "CreateCloudFrontOriginAccessIdentity"+        [ "CloudFrontOriginAccessIdentityConfig" =@ _ccfoaiCloudFrontOriginAccessIdentityConfig+        ]++instance ToXML CreateCloudFrontOriginAccessIdentity++instance AWSRequest CreateCloudFrontOriginAccessIdentity where+    type Sv CreateCloudFrontOriginAccessIdentity = CloudFront+    type Rs CreateCloudFrontOriginAccessIdentity = CreateCloudFrontOriginAccessIdentityResponse++    request  = post+    response = xmlHeaderResponse $ \h x -> CreateCloudFrontOriginAccessIdentityResponse+        <$> x .@? "CloudFrontOriginAccessIdentity"+        <*> h ~:? "ETag"+        <*> h ~:? "Location"
+ gen/Network/AWS/CloudFront/CreateDistribution.hs view
@@ -0,0 +1,131 @@+{-# 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.CloudFront.CreateDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Create a new distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html>+module Network.AWS.CloudFront.CreateDistribution+    (+    -- * Request+      CreateDistribution+    -- ** Request constructor+    , createDistribution+    -- ** Request lenses+    , cdDistributionConfig++    -- * Response+    , CreateDistributionResponse+    -- ** Response constructor+    , createDistributionResponse+    -- ** Response lenses+    , cdrDistribution+    , cdrETag+    , cdrLocation+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype CreateDistribution = CreateDistribution+    { _cdDistributionConfig :: DistributionConfig+    } deriving (Eq, Show)++-- | 'CreateDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cdDistributionConfig' @::@ 'DistributionConfig'+--+createDistribution :: DistributionConfig -- ^ 'cdDistributionConfig'+                   -> CreateDistribution+createDistribution p1 = CreateDistribution+    { _cdDistributionConfig = p1+    }++-- | The distribution's configuration information.+cdDistributionConfig :: Lens' CreateDistribution DistributionConfig+cdDistributionConfig =+    lens _cdDistributionConfig (\s a -> s { _cdDistributionConfig = a })++data CreateDistributionResponse = CreateDistributionResponse+    { _cdrDistribution :: Maybe Distribution+    , _cdrETag         :: Maybe Text+    , _cdrLocation     :: Maybe Text+    } deriving (Eq, Show)++-- | 'CreateDistributionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cdrDistribution' @::@ 'Maybe' 'Distribution'+--+-- * 'cdrETag' @::@ 'Maybe' 'Text'+--+-- * 'cdrLocation' @::@ 'Maybe' 'Text'+--+createDistributionResponse :: CreateDistributionResponse+createDistributionResponse = CreateDistributionResponse+    { _cdrDistribution = Nothing+    , _cdrLocation     = Nothing+    , _cdrETag         = Nothing+    }++-- | The distribution's information.+cdrDistribution :: Lens' CreateDistributionResponse (Maybe Distribution)+cdrDistribution = lens _cdrDistribution (\s a -> s { _cdrDistribution = a })++-- | The current version of the distribution created.+cdrETag :: Lens' CreateDistributionResponse (Maybe Text)+cdrETag = lens _cdrETag (\s a -> s { _cdrETag = a })++-- | The fully qualified URI of the new distribution resource just created.+-- For example:+-- https://cloudfront.amazonaws.com/2010-11-01/distribution/EDFDVBD632BHDS5.+cdrLocation :: Lens' CreateDistributionResponse (Maybe Text)+cdrLocation = lens _cdrLocation (\s a -> s { _cdrLocation = a })++instance ToPath CreateDistribution where+    toPath = const "/2014-05-31/distribution"++instance ToQuery CreateDistribution where+    toQuery = const mempty++instance ToHeaders CreateDistribution++instance ToXMLRoot CreateDistribution where+    toXMLRoot CreateDistribution{..} = namespaced ns "CreateDistribution"+        [ "DistributionConfig" =@ _cdDistributionConfig+        ]++instance ToXML CreateDistribution++instance AWSRequest CreateDistribution where+    type Sv CreateDistribution = CloudFront+    type Rs CreateDistribution = CreateDistributionResponse++    request  = post+    response = xmlHeaderResponse $ \h x -> CreateDistributionResponse+        <$> x .@? "Distribution"+        <*> h ~:? "ETag"+        <*> h ~:? "Location"
+ gen/Network/AWS/CloudFront/CreateInvalidation.hs view
@@ -0,0 +1,134 @@+{-# 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.CloudFront.CreateInvalidation+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Create a new invalidation.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateInvalidation.html>+module Network.AWS.CloudFront.CreateInvalidation+    (+    -- * Request+      CreateInvalidation+    -- ** Request constructor+    , createInvalidation+    -- ** Request lenses+    , ciDistributionId+    , ciInvalidationBatch++    -- * Response+    , CreateInvalidationResponse+    -- ** Response constructor+    , createInvalidationResponse+    -- ** Response lenses+    , cirInvalidation+    , cirLocation+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data CreateInvalidation = CreateInvalidation+    { _ciDistributionId    :: Text+    , _ciInvalidationBatch :: InvalidationBatch+    } deriving (Eq, Show)++-- | 'CreateInvalidation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ciDistributionId' @::@ 'Text'+--+-- * 'ciInvalidationBatch' @::@ 'InvalidationBatch'+--+createInvalidation :: Text -- ^ 'ciDistributionId'+                   -> InvalidationBatch -- ^ 'ciInvalidationBatch'+                   -> CreateInvalidation+createInvalidation p1 p2 = CreateInvalidation+    { _ciDistributionId    = p1+    , _ciInvalidationBatch = p2+    }++-- | The distribution's id.+ciDistributionId :: Lens' CreateInvalidation Text+ciDistributionId = lens _ciDistributionId (\s a -> s { _ciDistributionId = a })++-- | The batch information for the invalidation.+ciInvalidationBatch :: Lens' CreateInvalidation InvalidationBatch+ciInvalidationBatch =+    lens _ciInvalidationBatch (\s a -> s { _ciInvalidationBatch = a })++data CreateInvalidationResponse = CreateInvalidationResponse+    { _cirInvalidation :: Maybe Invalidation+    , _cirLocation     :: Maybe Text+    } deriving (Eq, Show)++-- | 'CreateInvalidationResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cirInvalidation' @::@ 'Maybe' 'Invalidation'+--+-- * 'cirLocation' @::@ 'Maybe' 'Text'+--+createInvalidationResponse :: CreateInvalidationResponse+createInvalidationResponse = CreateInvalidationResponse+    { _cirLocation     = Nothing+    , _cirInvalidation = Nothing+    }++-- | The invalidation's information.+cirInvalidation :: Lens' CreateInvalidationResponse (Maybe Invalidation)+cirInvalidation = lens _cirInvalidation (\s a -> s { _cirInvalidation = a })++-- | The fully qualified URI of the distribution and invalidation batch+-- request, including the Invalidation ID.+cirLocation :: Lens' CreateInvalidationResponse (Maybe Text)+cirLocation = lens _cirLocation (\s a -> s { _cirLocation = a })++instance ToPath CreateInvalidation where+    toPath CreateInvalidation{..} = mconcat+        [ "/2014-05-31/distribution/"+        , toText _ciDistributionId+        , "/invalidation"+        ]++instance ToQuery CreateInvalidation where+    toQuery = const mempty++instance ToHeaders CreateInvalidation++instance ToXMLRoot CreateInvalidation where+    toXMLRoot CreateInvalidation{..} = namespaced ns "CreateInvalidation"+        [ "InvalidationBatch" =@ _ciInvalidationBatch+        ]++instance ToXML CreateInvalidation++instance AWSRequest CreateInvalidation where+    type Sv CreateInvalidation = CloudFront+    type Rs CreateInvalidation = CreateInvalidationResponse++    request  = post+    response = xmlHeaderResponse $ \h x -> CreateInvalidationResponse+        <$> x .@? "Invalidation"+        <*> h ~:? "Location"
+ gen/Network/AWS/CloudFront/CreateStreamingDistribution.hs view
@@ -0,0 +1,135 @@+{-# 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.CloudFront.CreateStreamingDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Create a new streaming distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/CreateStreamingDistribution.html>+module Network.AWS.CloudFront.CreateStreamingDistribution+    (+    -- * Request+      CreateStreamingDistribution+    -- ** Request constructor+    , createStreamingDistribution+    -- ** Request lenses+    , csdStreamingDistributionConfig++    -- * Response+    , CreateStreamingDistributionResponse+    -- ** Response constructor+    , createStreamingDistributionResponse+    -- ** Response lenses+    , csdrETag+    , csdrLocation+    , csdrStreamingDistribution+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype CreateStreamingDistribution = CreateStreamingDistribution+    { _csdStreamingDistributionConfig :: StreamingDistributionConfig+    } deriving (Eq, Show)++-- | 'CreateStreamingDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csdStreamingDistributionConfig' @::@ 'StreamingDistributionConfig'+--+createStreamingDistribution :: StreamingDistributionConfig -- ^ 'csdStreamingDistributionConfig'+                            -> CreateStreamingDistribution+createStreamingDistribution p1 = CreateStreamingDistribution+    { _csdStreamingDistributionConfig = p1+    }++-- | The streaming distribution's configuration information.+csdStreamingDistributionConfig :: Lens' CreateStreamingDistribution StreamingDistributionConfig+csdStreamingDistributionConfig =+    lens _csdStreamingDistributionConfig+        (\s a -> s { _csdStreamingDistributionConfig = a })++data CreateStreamingDistributionResponse = CreateStreamingDistributionResponse+    { _csdrETag                  :: Maybe Text+    , _csdrLocation              :: Maybe Text+    , _csdrStreamingDistribution :: Maybe StreamingDistribution+    } deriving (Eq, Show)++-- | 'CreateStreamingDistributionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'csdrETag' @::@ 'Maybe' 'Text'+--+-- * 'csdrLocation' @::@ 'Maybe' 'Text'+--+-- * 'csdrStreamingDistribution' @::@ 'Maybe' 'StreamingDistribution'+--+createStreamingDistributionResponse :: CreateStreamingDistributionResponse+createStreamingDistributionResponse = CreateStreamingDistributionResponse+    { _csdrStreamingDistribution = Nothing+    , _csdrLocation              = Nothing+    , _csdrETag                  = Nothing+    }++-- | The current version of the streaming distribution created.+csdrETag :: Lens' CreateStreamingDistributionResponse (Maybe Text)+csdrETag = lens _csdrETag (\s a -> s { _csdrETag = a })++-- | The fully qualified URI of the new streaming distribution resource just+-- created. For example:+-- https://cloudfront.amazonaws.com/2010-11-01/streaming-distribution/EGTXBD79H29TRA8.+-- +csdrLocation :: Lens' CreateStreamingDistributionResponse (Maybe Text)+csdrLocation = lens _csdrLocation (\s a -> s { _csdrLocation = a })++-- | The streaming distribution's information.+csdrStreamingDistribution :: Lens' CreateStreamingDistributionResponse (Maybe StreamingDistribution)+csdrStreamingDistribution =+    lens _csdrStreamingDistribution+        (\s a -> s { _csdrStreamingDistribution = a })++instance ToPath CreateStreamingDistribution where+    toPath = const "/2014-05-31/streaming-distribution"++instance ToQuery CreateStreamingDistribution where+    toQuery = const mempty++instance ToHeaders CreateStreamingDistribution++instance ToXMLRoot CreateStreamingDistribution where+    toXMLRoot CreateStreamingDistribution{..} = namespaced ns "CreateStreamingDistribution"+        [ "StreamingDistributionConfig" =@ _csdStreamingDistributionConfig+        ]++instance ToXML CreateStreamingDistribution++instance AWSRequest CreateStreamingDistribution where+    type Sv CreateStreamingDistribution = CloudFront+    type Rs CreateStreamingDistribution = CreateStreamingDistributionResponse++    request  = post+    response = xmlHeaderResponse $ \h x -> CreateStreamingDistributionResponse+        <$> h ~:? "ETag"+        <*> h ~:? "Location"+        <*> x .@? "StreamingDistribution"
+ gen/Network/AWS/CloudFront/DeleteCloudFrontOriginAccessIdentity.hs view
@@ -0,0 +1,107 @@+{-# 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.CloudFront.DeleteCloudFrontOriginAccessIdentity+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Delete an origin access identity.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DeleteCloudFrontOriginAccessIdentity.html>+module Network.AWS.CloudFront.DeleteCloudFrontOriginAccessIdentity+    (+    -- * Request+      DeleteCloudFrontOriginAccessIdentity+    -- ** Request constructor+    , deleteCloudFrontOriginAccessIdentity+    -- ** Request lenses+    , dcfoaiId+    , dcfoaiIfMatch++    -- * Response+    , DeleteCloudFrontOriginAccessIdentityResponse+    -- ** Response constructor+    , deleteCloudFrontOriginAccessIdentityResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data DeleteCloudFrontOriginAccessIdentity = DeleteCloudFrontOriginAccessIdentity+    { _dcfoaiId      :: Text+    , _dcfoaiIfMatch :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteCloudFrontOriginAccessIdentity' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcfoaiId' @::@ 'Text'+--+-- * 'dcfoaiIfMatch' @::@ 'Maybe' 'Text'+--+deleteCloudFrontOriginAccessIdentity :: Text -- ^ 'dcfoaiId'+                                     -> DeleteCloudFrontOriginAccessIdentity+deleteCloudFrontOriginAccessIdentity p1 = DeleteCloudFrontOriginAccessIdentity+    { _dcfoaiId      = p1+    , _dcfoaiIfMatch = Nothing+    }++-- | The origin access identity's id.+dcfoaiId :: Lens' DeleteCloudFrontOriginAccessIdentity Text+dcfoaiId = lens _dcfoaiId (\s a -> s { _dcfoaiId = a })++-- | The value of the ETag header you received from a previous GET or PUT+-- request. For example: E2QWRUHAPOMQZL.+dcfoaiIfMatch :: Lens' DeleteCloudFrontOriginAccessIdentity (Maybe Text)+dcfoaiIfMatch = lens _dcfoaiIfMatch (\s a -> s { _dcfoaiIfMatch = a })++data DeleteCloudFrontOriginAccessIdentityResponse = DeleteCloudFrontOriginAccessIdentityResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteCloudFrontOriginAccessIdentityResponse' constructor.+deleteCloudFrontOriginAccessIdentityResponse :: DeleteCloudFrontOriginAccessIdentityResponse+deleteCloudFrontOriginAccessIdentityResponse = DeleteCloudFrontOriginAccessIdentityResponse++instance ToPath DeleteCloudFrontOriginAccessIdentity where+    toPath DeleteCloudFrontOriginAccessIdentity{..} = mconcat+        [ "/2014-05-31/origin-access-identity/cloudfront/"+        , toText _dcfoaiId+        ]++instance ToQuery DeleteCloudFrontOriginAccessIdentity where+    toQuery = const mempty++instance ToHeaders DeleteCloudFrontOriginAccessIdentity where+    toHeaders DeleteCloudFrontOriginAccessIdentity{..} = mconcat+        [ "If-Match" =: _dcfoaiIfMatch+        ]++instance ToXMLRoot DeleteCloudFrontOriginAccessIdentity where+    toXMLRoot = const (namespaced ns "DeleteCloudFrontOriginAccessIdentity" [])++instance ToXML DeleteCloudFrontOriginAccessIdentity++instance AWSRequest DeleteCloudFrontOriginAccessIdentity where+    type Sv DeleteCloudFrontOriginAccessIdentity = CloudFront+    type Rs DeleteCloudFrontOriginAccessIdentity = DeleteCloudFrontOriginAccessIdentityResponse++    request  = delete+    response = nullResponse DeleteCloudFrontOriginAccessIdentityResponse
+ gen/Network/AWS/CloudFront/DeleteDistribution.hs view
@@ -0,0 +1,107 @@+{-# 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.CloudFront.DeleteDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Delete a distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DeleteDistribution.html>+module Network.AWS.CloudFront.DeleteDistribution+    (+    -- * Request+      DeleteDistribution+    -- ** Request constructor+    , deleteDistribution+    -- ** Request lenses+    , ddId+    , ddIfMatch++    -- * Response+    , DeleteDistributionResponse+    -- ** Response constructor+    , deleteDistributionResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data DeleteDistribution = DeleteDistribution+    { _ddId      :: Text+    , _ddIfMatch :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ddId' @::@ 'Text'+--+-- * 'ddIfMatch' @::@ 'Maybe' 'Text'+--+deleteDistribution :: Text -- ^ 'ddId'+                   -> DeleteDistribution+deleteDistribution p1 = DeleteDistribution+    { _ddId      = p1+    , _ddIfMatch = Nothing+    }++-- | The distribution id.+ddId :: Lens' DeleteDistribution Text+ddId = lens _ddId (\s a -> s { _ddId = a })++-- | The value of the ETag header you received when you disabled the+-- distribution. For example: E2QWRUHAPOMQZL.+ddIfMatch :: Lens' DeleteDistribution (Maybe Text)+ddIfMatch = lens _ddIfMatch (\s a -> s { _ddIfMatch = a })++data DeleteDistributionResponse = DeleteDistributionResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteDistributionResponse' constructor.+deleteDistributionResponse :: DeleteDistributionResponse+deleteDistributionResponse = DeleteDistributionResponse++instance ToPath DeleteDistribution where+    toPath DeleteDistribution{..} = mconcat+        [ "/2014-05-31/distribution/"+        , toText _ddId+        ]++instance ToQuery DeleteDistribution where+    toQuery = const mempty++instance ToHeaders DeleteDistribution where+    toHeaders DeleteDistribution{..} = mconcat+        [ "If-Match" =: _ddIfMatch+        ]++instance ToXMLRoot DeleteDistribution where+    toXMLRoot = const (namespaced ns "DeleteDistribution" [])++instance ToXML DeleteDistribution++instance AWSRequest DeleteDistribution where+    type Sv DeleteDistribution = CloudFront+    type Rs DeleteDistribution = DeleteDistributionResponse++    request  = delete+    response = nullResponse DeleteDistributionResponse
+ gen/Network/AWS/CloudFront/DeleteStreamingDistribution.hs view
@@ -0,0 +1,107 @@+{-# 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.CloudFront.DeleteStreamingDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Delete a streaming distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DeleteStreamingDistribution.html>+module Network.AWS.CloudFront.DeleteStreamingDistribution+    (+    -- * Request+      DeleteStreamingDistribution+    -- ** Request constructor+    , deleteStreamingDistribution+    -- ** Request lenses+    , dsdId+    , dsdIfMatch++    -- * Response+    , DeleteStreamingDistributionResponse+    -- ** Response constructor+    , deleteStreamingDistributionResponse+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data DeleteStreamingDistribution = DeleteStreamingDistribution+    { _dsdId      :: Text+    , _dsdIfMatch :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'DeleteStreamingDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsdId' @::@ 'Text'+--+-- * 'dsdIfMatch' @::@ 'Maybe' 'Text'+--+deleteStreamingDistribution :: Text -- ^ 'dsdId'+                            -> DeleteStreamingDistribution+deleteStreamingDistribution p1 = DeleteStreamingDistribution+    { _dsdId      = p1+    , _dsdIfMatch = Nothing+    }++-- | The distribution id.+dsdId :: Lens' DeleteStreamingDistribution Text+dsdId = lens _dsdId (\s a -> s { _dsdId = a })++-- | The value of the ETag header you received when you disabled the streaming+-- distribution. For example: E2QWRUHAPOMQZL.+dsdIfMatch :: Lens' DeleteStreamingDistribution (Maybe Text)+dsdIfMatch = lens _dsdIfMatch (\s a -> s { _dsdIfMatch = a })++data DeleteStreamingDistributionResponse = DeleteStreamingDistributionResponse+    deriving (Eq, Ord, Show, Generic)++-- | 'DeleteStreamingDistributionResponse' constructor.+deleteStreamingDistributionResponse :: DeleteStreamingDistributionResponse+deleteStreamingDistributionResponse = DeleteStreamingDistributionResponse++instance ToPath DeleteStreamingDistribution where+    toPath DeleteStreamingDistribution{..} = mconcat+        [ "/2014-05-31/streaming-distribution/"+        , toText _dsdId+        ]++instance ToQuery DeleteStreamingDistribution where+    toQuery = const mempty++instance ToHeaders DeleteStreamingDistribution where+    toHeaders DeleteStreamingDistribution{..} = mconcat+        [ "If-Match" =: _dsdIfMatch+        ]++instance ToXMLRoot DeleteStreamingDistribution where+    toXMLRoot = const (namespaced ns "DeleteStreamingDistribution" [])++instance ToXML DeleteStreamingDistribution++instance AWSRequest DeleteStreamingDistribution where+    type Sv DeleteStreamingDistribution = CloudFront+    type Rs DeleteStreamingDistribution = DeleteStreamingDistributionResponse++    request  = delete+    response = nullResponse DeleteStreamingDistributionResponse
+ gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentity.hs view
@@ -0,0 +1,122 @@+{-# 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.CloudFront.GetCloudFrontOriginAccessIdentity+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Get the information about an origin access identity.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetCloudFrontOriginAccessIdentity.html>+module Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentity+    (+    -- * Request+      GetCloudFrontOriginAccessIdentity+    -- ** Request constructor+    , getCloudFrontOriginAccessIdentity+    -- ** Request lenses+    , gcfoaiId++    -- * Response+    , GetCloudFrontOriginAccessIdentityResponse+    -- ** Response constructor+    , getCloudFrontOriginAccessIdentityResponse+    -- ** Response lenses+    , gcfoairCloudFrontOriginAccessIdentity+    , gcfoairETag+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype GetCloudFrontOriginAccessIdentity = GetCloudFrontOriginAccessIdentity+    { _gcfoaiId :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetCloudFrontOriginAccessIdentity' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gcfoaiId' @::@ 'Text'+--+getCloudFrontOriginAccessIdentity :: Text -- ^ 'gcfoaiId'+                                  -> GetCloudFrontOriginAccessIdentity+getCloudFrontOriginAccessIdentity p1 = GetCloudFrontOriginAccessIdentity+    { _gcfoaiId = p1+    }++-- | The identity's id.+gcfoaiId :: Lens' GetCloudFrontOriginAccessIdentity Text+gcfoaiId = lens _gcfoaiId (\s a -> s { _gcfoaiId = a })++data GetCloudFrontOriginAccessIdentityResponse = GetCloudFrontOriginAccessIdentityResponse+    { _gcfoairCloudFrontOriginAccessIdentity :: Maybe CloudFrontOriginAccessIdentity+    , _gcfoairETag                           :: Maybe Text+    } deriving (Eq, Show)++-- | 'GetCloudFrontOriginAccessIdentityResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gcfoairCloudFrontOriginAccessIdentity' @::@ 'Maybe' 'CloudFrontOriginAccessIdentity'+--+-- * 'gcfoairETag' @::@ 'Maybe' 'Text'+--+getCloudFrontOriginAccessIdentityResponse :: GetCloudFrontOriginAccessIdentityResponse+getCloudFrontOriginAccessIdentityResponse = GetCloudFrontOriginAccessIdentityResponse+    { _gcfoairCloudFrontOriginAccessIdentity = Nothing+    , _gcfoairETag                           = Nothing+    }++-- | The origin access identity's information.+gcfoairCloudFrontOriginAccessIdentity :: Lens' GetCloudFrontOriginAccessIdentityResponse (Maybe CloudFrontOriginAccessIdentity)+gcfoairCloudFrontOriginAccessIdentity =+    lens _gcfoairCloudFrontOriginAccessIdentity+        (\s a -> s { _gcfoairCloudFrontOriginAccessIdentity = a })++-- | The current version of the origin access identity's information. For+-- example: E2QWRUHAPOMQZL.+gcfoairETag :: Lens' GetCloudFrontOriginAccessIdentityResponse (Maybe Text)+gcfoairETag = lens _gcfoairETag (\s a -> s { _gcfoairETag = a })++instance ToPath GetCloudFrontOriginAccessIdentity where+    toPath GetCloudFrontOriginAccessIdentity{..} = mconcat+        [ "/2014-05-31/origin-access-identity/cloudfront/"+        , toText _gcfoaiId+        ]++instance ToQuery GetCloudFrontOriginAccessIdentity where+    toQuery = const mempty++instance ToHeaders GetCloudFrontOriginAccessIdentity++instance ToXMLRoot GetCloudFrontOriginAccessIdentity where+    toXMLRoot = const (namespaced ns "GetCloudFrontOriginAccessIdentity" [])++instance ToXML GetCloudFrontOriginAccessIdentity++instance AWSRequest GetCloudFrontOriginAccessIdentity where+    type Sv GetCloudFrontOriginAccessIdentity = CloudFront+    type Rs GetCloudFrontOriginAccessIdentity = GetCloudFrontOriginAccessIdentityResponse++    request  = get+    response = xmlHeaderResponse $ \h x -> GetCloudFrontOriginAccessIdentityResponse+        <$> x .@? "CloudFrontOriginAccessIdentity"+        <*> h ~:? "ETag"
+ gen/Network/AWS/CloudFront/GetCloudFrontOriginAccessIdentityConfig.hs view
@@ -0,0 +1,122 @@+{-# 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.CloudFront.GetCloudFrontOriginAccessIdentityConfig+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Get the configuration information about an origin access identity.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetCloudFrontOriginAccessIdentityConfig.html>+module Network.AWS.CloudFront.GetCloudFrontOriginAccessIdentityConfig+    (+    -- * Request+      GetCloudFrontOriginAccessIdentityConfig+    -- ** Request constructor+    , getCloudFrontOriginAccessIdentityConfig+    -- ** Request lenses+    , gcfoaicId++    -- * Response+    , GetCloudFrontOriginAccessIdentityConfigResponse+    -- ** Response constructor+    , getCloudFrontOriginAccessIdentityConfigResponse+    -- ** Response lenses+    , gcfoaicrCloudFrontOriginAccessIdentityConfig+    , gcfoaicrETag+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype GetCloudFrontOriginAccessIdentityConfig = GetCloudFrontOriginAccessIdentityConfig+    { _gcfoaicId :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetCloudFrontOriginAccessIdentityConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gcfoaicId' @::@ 'Text'+--+getCloudFrontOriginAccessIdentityConfig :: Text -- ^ 'gcfoaicId'+                                        -> GetCloudFrontOriginAccessIdentityConfig+getCloudFrontOriginAccessIdentityConfig p1 = GetCloudFrontOriginAccessIdentityConfig+    { _gcfoaicId = p1+    }++-- | The identity's id.+gcfoaicId :: Lens' GetCloudFrontOriginAccessIdentityConfig Text+gcfoaicId = lens _gcfoaicId (\s a -> s { _gcfoaicId = a })++data GetCloudFrontOriginAccessIdentityConfigResponse = GetCloudFrontOriginAccessIdentityConfigResponse+    { _gcfoaicrCloudFrontOriginAccessIdentityConfig :: Maybe CloudFrontOriginAccessIdentityConfig+    , _gcfoaicrETag                                 :: Maybe Text+    } deriving (Eq, Show)++-- | 'GetCloudFrontOriginAccessIdentityConfigResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gcfoaicrCloudFrontOriginAccessIdentityConfig' @::@ 'Maybe' 'CloudFrontOriginAccessIdentityConfig'+--+-- * 'gcfoaicrETag' @::@ 'Maybe' 'Text'+--+getCloudFrontOriginAccessIdentityConfigResponse :: GetCloudFrontOriginAccessIdentityConfigResponse+getCloudFrontOriginAccessIdentityConfigResponse = GetCloudFrontOriginAccessIdentityConfigResponse+    { _gcfoaicrCloudFrontOriginAccessIdentityConfig = Nothing+    , _gcfoaicrETag                                 = Nothing+    }++-- | The origin access identity's configuration information.+gcfoaicrCloudFrontOriginAccessIdentityConfig :: Lens' GetCloudFrontOriginAccessIdentityConfigResponse (Maybe CloudFrontOriginAccessIdentityConfig)+gcfoaicrCloudFrontOriginAccessIdentityConfig =+    lens _gcfoaicrCloudFrontOriginAccessIdentityConfig+        (\s a -> s { _gcfoaicrCloudFrontOriginAccessIdentityConfig = a })++-- | The current version of the configuration. For example: E2QWRUHAPOMQZL.+gcfoaicrETag :: Lens' GetCloudFrontOriginAccessIdentityConfigResponse (Maybe Text)+gcfoaicrETag = lens _gcfoaicrETag (\s a -> s { _gcfoaicrETag = a })++instance ToPath GetCloudFrontOriginAccessIdentityConfig where+    toPath GetCloudFrontOriginAccessIdentityConfig{..} = mconcat+        [ "/2014-05-31/origin-access-identity/cloudfront/"+        , toText _gcfoaicId+        , "/config"+        ]++instance ToQuery GetCloudFrontOriginAccessIdentityConfig where+    toQuery = const mempty++instance ToHeaders GetCloudFrontOriginAccessIdentityConfig++instance ToXMLRoot GetCloudFrontOriginAccessIdentityConfig where+    toXMLRoot = const (namespaced ns "GetCloudFrontOriginAccessIdentityConfig" [])++instance ToXML GetCloudFrontOriginAccessIdentityConfig++instance AWSRequest GetCloudFrontOriginAccessIdentityConfig where+    type Sv GetCloudFrontOriginAccessIdentityConfig = CloudFront+    type Rs GetCloudFrontOriginAccessIdentityConfig = GetCloudFrontOriginAccessIdentityConfigResponse++    request  = get+    response = xmlHeaderResponse $ \h x -> GetCloudFrontOriginAccessIdentityConfigResponse+        <$> x .@? "CloudFrontOriginAccessIdentityConfig"+        <*> h ~:? "ETag"
+ gen/Network/AWS/CloudFront/GetDistribution.hs view
@@ -0,0 +1,120 @@+{-# 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.CloudFront.GetDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Get the information about a distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetDistribution.html>+module Network.AWS.CloudFront.GetDistribution+    (+    -- * Request+      GetDistribution+    -- ** Request constructor+    , getDistribution+    -- ** Request lenses+    , gdId++    -- * Response+    , GetDistributionResponse+    -- ** Response constructor+    , getDistributionResponse+    -- ** Response lenses+    , gdrDistribution+    , gdrETag+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype GetDistribution = GetDistribution+    { _gdId :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gdId' @::@ 'Text'+--+getDistribution :: Text -- ^ 'gdId'+                -> GetDistribution+getDistribution p1 = GetDistribution+    { _gdId = p1+    }++-- | The distribution's id.+gdId :: Lens' GetDistribution Text+gdId = lens _gdId (\s a -> s { _gdId = a })++data GetDistributionResponse = GetDistributionResponse+    { _gdrDistribution :: Maybe Distribution+    , _gdrETag         :: Maybe Text+    } deriving (Eq, Show)++-- | 'GetDistributionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gdrDistribution' @::@ 'Maybe' 'Distribution'+--+-- * 'gdrETag' @::@ 'Maybe' 'Text'+--+getDistributionResponse :: GetDistributionResponse+getDistributionResponse = GetDistributionResponse+    { _gdrDistribution = Nothing+    , _gdrETag         = Nothing+    }++-- | The distribution's information.+gdrDistribution :: Lens' GetDistributionResponse (Maybe Distribution)+gdrDistribution = lens _gdrDistribution (\s a -> s { _gdrDistribution = a })++-- | The current version of the distribution's information. For example:+-- E2QWRUHAPOMQZL.+gdrETag :: Lens' GetDistributionResponse (Maybe Text)+gdrETag = lens _gdrETag (\s a -> s { _gdrETag = a })++instance ToPath GetDistribution where+    toPath GetDistribution{..} = mconcat+        [ "/2014-05-31/distribution/"+        , toText _gdId+        ]++instance ToQuery GetDistribution where+    toQuery = const mempty++instance ToHeaders GetDistribution++instance ToXMLRoot GetDistribution where+    toXMLRoot = const (namespaced ns "GetDistribution" [])++instance ToXML GetDistribution++instance AWSRequest GetDistribution where+    type Sv GetDistribution = CloudFront+    type Rs GetDistribution = GetDistributionResponse++    request  = get+    response = xmlHeaderResponse $ \h x -> GetDistributionResponse+        <$> x .@? "Distribution"+        <*> h ~:? "ETag"
+ gen/Network/AWS/CloudFront/GetDistributionConfig.hs view
@@ -0,0 +1,121 @@+{-# 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.CloudFront.GetDistributionConfig+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Get the configuration information about a distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetDistributionConfig.html>+module Network.AWS.CloudFront.GetDistributionConfig+    (+    -- * Request+      GetDistributionConfig+    -- ** Request constructor+    , getDistributionConfig+    -- ** Request lenses+    , gdcId++    -- * Response+    , GetDistributionConfigResponse+    -- ** Response constructor+    , getDistributionConfigResponse+    -- ** Response lenses+    , gdcrDistributionConfig+    , gdcrETag+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype GetDistributionConfig = GetDistributionConfig+    { _gdcId :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetDistributionConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gdcId' @::@ 'Text'+--+getDistributionConfig :: Text -- ^ 'gdcId'+                      -> GetDistributionConfig+getDistributionConfig p1 = GetDistributionConfig+    { _gdcId = p1+    }++-- | The distribution's id.+gdcId :: Lens' GetDistributionConfig Text+gdcId = lens _gdcId (\s a -> s { _gdcId = a })++data GetDistributionConfigResponse = GetDistributionConfigResponse+    { _gdcrDistributionConfig :: Maybe DistributionConfig+    , _gdcrETag               :: Maybe Text+    } deriving (Eq, Show)++-- | 'GetDistributionConfigResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gdcrDistributionConfig' @::@ 'Maybe' 'DistributionConfig'+--+-- * 'gdcrETag' @::@ 'Maybe' 'Text'+--+getDistributionConfigResponse :: GetDistributionConfigResponse+getDistributionConfigResponse = GetDistributionConfigResponse+    { _gdcrDistributionConfig = Nothing+    , _gdcrETag               = Nothing+    }++-- | The distribution's configuration information.+gdcrDistributionConfig :: Lens' GetDistributionConfigResponse (Maybe DistributionConfig)+gdcrDistributionConfig =+    lens _gdcrDistributionConfig (\s a -> s { _gdcrDistributionConfig = a })++-- | The current version of the configuration. For example: E2QWRUHAPOMQZL.+gdcrETag :: Lens' GetDistributionConfigResponse (Maybe Text)+gdcrETag = lens _gdcrETag (\s a -> s { _gdcrETag = a })++instance ToPath GetDistributionConfig where+    toPath GetDistributionConfig{..} = mconcat+        [ "/2014-05-31/distribution/"+        , toText _gdcId+        , "/config"+        ]++instance ToQuery GetDistributionConfig where+    toQuery = const mempty++instance ToHeaders GetDistributionConfig++instance ToXMLRoot GetDistributionConfig where+    toXMLRoot = const (namespaced ns "GetDistributionConfig" [])++instance ToXML GetDistributionConfig++instance AWSRequest GetDistributionConfig where+    type Sv GetDistributionConfig = CloudFront+    type Rs GetDistributionConfig = GetDistributionConfigResponse++    request  = get+    response = xmlHeaderResponse $ \h x -> GetDistributionConfigResponse+        <$> x .@? "DistributionConfig"+        <*> h ~:? "ETag"
+ gen/Network/AWS/CloudFront/GetInvalidation.hs view
@@ -0,0 +1,124 @@+{-# 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.CloudFront.GetInvalidation+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Get the information about an invalidation.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetInvalidation.html>+module Network.AWS.CloudFront.GetInvalidation+    (+    -- * Request+      GetInvalidation+    -- ** Request constructor+    , getInvalidation+    -- ** Request lenses+    , giDistributionId+    , giId++    -- * Response+    , GetInvalidationResponse+    -- ** Response constructor+    , getInvalidationResponse+    -- ** Response lenses+    , girInvalidation+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data GetInvalidation = GetInvalidation+    { _giDistributionId :: Text+    , _giId             :: Text+    } deriving (Eq, Ord, Show)++-- | 'GetInvalidation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'giDistributionId' @::@ 'Text'+--+-- * 'giId' @::@ 'Text'+--+getInvalidation :: Text -- ^ 'giDistributionId'+                -> Text -- ^ 'giId'+                -> GetInvalidation+getInvalidation p1 p2 = GetInvalidation+    { _giDistributionId = p1+    , _giId             = p2+    }++-- | The distribution's id.+giDistributionId :: Lens' GetInvalidation Text+giDistributionId = lens _giDistributionId (\s a -> s { _giDistributionId = a })++-- | The invalidation's id.+giId :: Lens' GetInvalidation Text+giId = lens _giId (\s a -> s { _giId = a })++newtype GetInvalidationResponse = GetInvalidationResponse+    { _girInvalidation :: Maybe Invalidation+    } deriving (Eq, Show)++-- | 'GetInvalidationResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'girInvalidation' @::@ 'Maybe' 'Invalidation'+--+getInvalidationResponse :: GetInvalidationResponse+getInvalidationResponse = GetInvalidationResponse+    { _girInvalidation = Nothing+    }++-- | The invalidation's information.+girInvalidation :: Lens' GetInvalidationResponse (Maybe Invalidation)+girInvalidation = lens _girInvalidation (\s a -> s { _girInvalidation = a })++instance ToPath GetInvalidation where+    toPath GetInvalidation{..} = mconcat+        [ "/2014-05-31/distribution/"+        , toText _giDistributionId+        , "/invalidation/"+        , toText _giId+        ]++instance ToQuery GetInvalidation where+    toQuery = const mempty++instance ToHeaders GetInvalidation++instance ToXMLRoot GetInvalidation where+    toXMLRoot = const (namespaced ns "GetInvalidation" [])++instance ToXML GetInvalidation++instance AWSRequest GetInvalidation where+    type Sv GetInvalidation = CloudFront+    type Rs GetInvalidation = GetInvalidationResponse++    request  = get+    response = xmlResponse++instance FromXML GetInvalidationResponse where+    parseXML x = GetInvalidationResponse+        <$> x .@? "Invalidation"
+ gen/Network/AWS/CloudFront/GetStreamingDistribution.hs view
@@ -0,0 +1,122 @@+{-# 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.CloudFront.GetStreamingDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Get the information about a streaming distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetStreamingDistribution.html>+module Network.AWS.CloudFront.GetStreamingDistribution+    (+    -- * Request+      GetStreamingDistribution+    -- ** Request constructor+    , getStreamingDistribution+    -- ** Request lenses+    , gsdId++    -- * Response+    , GetStreamingDistributionResponse+    -- ** Response constructor+    , getStreamingDistributionResponse+    -- ** Response lenses+    , gsdrETag+    , gsdrStreamingDistribution+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype GetStreamingDistribution = GetStreamingDistribution+    { _gsdId :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetStreamingDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gsdId' @::@ 'Text'+--+getStreamingDistribution :: Text -- ^ 'gsdId'+                         -> GetStreamingDistribution+getStreamingDistribution p1 = GetStreamingDistribution+    { _gsdId = p1+    }++-- | The streaming distribution's id.+gsdId :: Lens' GetStreamingDistribution Text+gsdId = lens _gsdId (\s a -> s { _gsdId = a })++data GetStreamingDistributionResponse = GetStreamingDistributionResponse+    { _gsdrETag                  :: Maybe Text+    , _gsdrStreamingDistribution :: Maybe StreamingDistribution+    } deriving (Eq, Show)++-- | 'GetStreamingDistributionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gsdrETag' @::@ 'Maybe' 'Text'+--+-- * 'gsdrStreamingDistribution' @::@ 'Maybe' 'StreamingDistribution'+--+getStreamingDistributionResponse :: GetStreamingDistributionResponse+getStreamingDistributionResponse = GetStreamingDistributionResponse+    { _gsdrStreamingDistribution = Nothing+    , _gsdrETag                  = Nothing+    }++-- | The current version of the streaming distribution's information. For+-- example: E2QWRUHAPOMQZL.+gsdrETag :: Lens' GetStreamingDistributionResponse (Maybe Text)+gsdrETag = lens _gsdrETag (\s a -> s { _gsdrETag = a })++-- | The streaming distribution's information.+gsdrStreamingDistribution :: Lens' GetStreamingDistributionResponse (Maybe StreamingDistribution)+gsdrStreamingDistribution =+    lens _gsdrStreamingDistribution+        (\s a -> s { _gsdrStreamingDistribution = a })++instance ToPath GetStreamingDistribution where+    toPath GetStreamingDistribution{..} = mconcat+        [ "/2014-05-31/streaming-distribution/"+        , toText _gsdId+        ]++instance ToQuery GetStreamingDistribution where+    toQuery = const mempty++instance ToHeaders GetStreamingDistribution++instance ToXMLRoot GetStreamingDistribution where+    toXMLRoot = const (namespaced ns "GetStreamingDistribution" [])++instance ToXML GetStreamingDistribution++instance AWSRequest GetStreamingDistribution where+    type Sv GetStreamingDistribution = CloudFront+    type Rs GetStreamingDistribution = GetStreamingDistributionResponse++    request  = get+    response = xmlHeaderResponse $ \h x -> GetStreamingDistributionResponse+        <$> h ~:? "ETag"+        <*> x .@? "StreamingDistribution"
+ gen/Network/AWS/CloudFront/GetStreamingDistributionConfig.hs view
@@ -0,0 +1,122 @@+{-# 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.CloudFront.GetStreamingDistributionConfig+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Get the configuration information about a streaming distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/GetStreamingDistributionConfig.html>+module Network.AWS.CloudFront.GetStreamingDistributionConfig+    (+    -- * Request+      GetStreamingDistributionConfig+    -- ** Request constructor+    , getStreamingDistributionConfig+    -- ** Request lenses+    , gsdcId++    -- * Response+    , GetStreamingDistributionConfigResponse+    -- ** Response constructor+    , getStreamingDistributionConfigResponse+    -- ** Response lenses+    , gsdcrETag+    , gsdcrStreamingDistributionConfig+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++newtype GetStreamingDistributionConfig = GetStreamingDistributionConfig+    { _gsdcId :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'GetStreamingDistributionConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gsdcId' @::@ 'Text'+--+getStreamingDistributionConfig :: Text -- ^ 'gsdcId'+                               -> GetStreamingDistributionConfig+getStreamingDistributionConfig p1 = GetStreamingDistributionConfig+    { _gsdcId = p1+    }++-- | The streaming distribution's id.+gsdcId :: Lens' GetStreamingDistributionConfig Text+gsdcId = lens _gsdcId (\s a -> s { _gsdcId = a })++data GetStreamingDistributionConfigResponse = GetStreamingDistributionConfigResponse+    { _gsdcrETag                        :: Maybe Text+    , _gsdcrStreamingDistributionConfig :: Maybe StreamingDistributionConfig+    } deriving (Eq, Show)++-- | 'GetStreamingDistributionConfigResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'gsdcrETag' @::@ 'Maybe' 'Text'+--+-- * 'gsdcrStreamingDistributionConfig' @::@ 'Maybe' 'StreamingDistributionConfig'+--+getStreamingDistributionConfigResponse :: GetStreamingDistributionConfigResponse+getStreamingDistributionConfigResponse = GetStreamingDistributionConfigResponse+    { _gsdcrStreamingDistributionConfig = Nothing+    , _gsdcrETag                        = Nothing+    }++-- | The current version of the configuration. For example: E2QWRUHAPOMQZL.+gsdcrETag :: Lens' GetStreamingDistributionConfigResponse (Maybe Text)+gsdcrETag = lens _gsdcrETag (\s a -> s { _gsdcrETag = a })++-- | The streaming distribution's configuration information.+gsdcrStreamingDistributionConfig :: Lens' GetStreamingDistributionConfigResponse (Maybe StreamingDistributionConfig)+gsdcrStreamingDistributionConfig =+    lens _gsdcrStreamingDistributionConfig+        (\s a -> s { _gsdcrStreamingDistributionConfig = a })++instance ToPath GetStreamingDistributionConfig where+    toPath GetStreamingDistributionConfig{..} = mconcat+        [ "/2014-05-31/streaming-distribution/"+        , toText _gsdcId+        , "/config"+        ]++instance ToQuery GetStreamingDistributionConfig where+    toQuery = const mempty++instance ToHeaders GetStreamingDistributionConfig++instance ToXMLRoot GetStreamingDistributionConfig where+    toXMLRoot = const (namespaced ns "GetStreamingDistributionConfig" [])++instance ToXML GetStreamingDistributionConfig++instance AWSRequest GetStreamingDistributionConfig where+    type Sv GetStreamingDistributionConfig = CloudFront+    type Rs GetStreamingDistributionConfig = GetStreamingDistributionConfigResponse++    request  = get+    response = xmlHeaderResponse $ \h x -> GetStreamingDistributionConfigResponse+        <$> h ~:? "ETag"+        <*> x .@? "StreamingDistributionConfig"
+ gen/Network/AWS/CloudFront/ListCloudFrontOriginAccessIdentities.hs view
@@ -0,0 +1,134 @@+{-# 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.CloudFront.ListCloudFrontOriginAccessIdentities+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | List origin access identities.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListCloudFrontOriginAccessIdentities.html>+module Network.AWS.CloudFront.ListCloudFrontOriginAccessIdentities+    (+    -- * Request+      ListCloudFrontOriginAccessIdentities+    -- ** Request constructor+    , listCloudFrontOriginAccessIdentities+    -- ** Request lenses+    , lcfoaiMarker+    , lcfoaiMaxItems++    -- * Response+    , ListCloudFrontOriginAccessIdentitiesResponse+    -- ** Response constructor+    , listCloudFrontOriginAccessIdentitiesResponse+    -- ** Response lenses+    , lcfoairCloudFrontOriginAccessIdentityList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data ListCloudFrontOriginAccessIdentities = ListCloudFrontOriginAccessIdentities+    { _lcfoaiMarker   :: Maybe Text+    , _lcfoaiMaxItems :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListCloudFrontOriginAccessIdentities' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lcfoaiMarker' @::@ 'Maybe' 'Text'+--+-- * 'lcfoaiMaxItems' @::@ 'Maybe' 'Text'+--+listCloudFrontOriginAccessIdentities :: ListCloudFrontOriginAccessIdentities+listCloudFrontOriginAccessIdentities = ListCloudFrontOriginAccessIdentities+    { _lcfoaiMarker   = Nothing+    , _lcfoaiMaxItems = Nothing+    }++-- | Use this when paginating results to indicate where to begin in your list+-- of origin access identities. The results include identities in the list+-- that occur after the marker. To get the next page of results, set the+-- Marker to the value of the NextMarker from the current page's response+-- (which is also the ID of the last identity on that page).+lcfoaiMarker :: Lens' ListCloudFrontOriginAccessIdentities (Maybe Text)+lcfoaiMarker = lens _lcfoaiMarker (\s a -> s { _lcfoaiMarker = a })++-- | The maximum number of origin access identities you want in the response+-- body.+lcfoaiMaxItems :: Lens' ListCloudFrontOriginAccessIdentities (Maybe Text)+lcfoaiMaxItems = lens _lcfoaiMaxItems (\s a -> s { _lcfoaiMaxItems = a })++newtype ListCloudFrontOriginAccessIdentitiesResponse = ListCloudFrontOriginAccessIdentitiesResponse+    { _lcfoairCloudFrontOriginAccessIdentityList :: CloudFrontOriginAccessIdentityList+    } deriving (Eq, Show)++-- | 'ListCloudFrontOriginAccessIdentitiesResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lcfoairCloudFrontOriginAccessIdentityList' @::@ 'CloudFrontOriginAccessIdentityList'+--+listCloudFrontOriginAccessIdentitiesResponse :: CloudFrontOriginAccessIdentityList -- ^ 'lcfoairCloudFrontOriginAccessIdentityList'+                                             -> ListCloudFrontOriginAccessIdentitiesResponse+listCloudFrontOriginAccessIdentitiesResponse p1 = ListCloudFrontOriginAccessIdentitiesResponse+    { _lcfoairCloudFrontOriginAccessIdentityList = p1+    }++-- | The CloudFrontOriginAccessIdentityList type.+lcfoairCloudFrontOriginAccessIdentityList :: Lens' ListCloudFrontOriginAccessIdentitiesResponse CloudFrontOriginAccessIdentityList+lcfoairCloudFrontOriginAccessIdentityList =+    lens _lcfoairCloudFrontOriginAccessIdentityList+        (\s a -> s { _lcfoairCloudFrontOriginAccessIdentityList = a })++instance ToPath ListCloudFrontOriginAccessIdentities where+    toPath = const "/2014-05-31/origin-access-identity/cloudfront"++instance ToQuery ListCloudFrontOriginAccessIdentities where+    toQuery ListCloudFrontOriginAccessIdentities{..} = mconcat+        [ "Marker"   =? _lcfoaiMarker+        , "MaxItems" =? _lcfoaiMaxItems+        ]++instance ToHeaders ListCloudFrontOriginAccessIdentities++instance ToXMLRoot ListCloudFrontOriginAccessIdentities where+    toXMLRoot = const (namespaced ns "ListCloudFrontOriginAccessIdentities" [])++instance ToXML ListCloudFrontOriginAccessIdentities++instance AWSRequest ListCloudFrontOriginAccessIdentities where+    type Sv ListCloudFrontOriginAccessIdentities = CloudFront+    type Rs ListCloudFrontOriginAccessIdentities = ListCloudFrontOriginAccessIdentitiesResponse++    request  = get+    response = xmlResponse++instance FromXML ListCloudFrontOriginAccessIdentitiesResponse where+    parseXML x = ListCloudFrontOriginAccessIdentitiesResponse+        <$> x .@  "CloudFrontOriginAccessIdentityList"++instance AWSPager ListCloudFrontOriginAccessIdentities where+    page rq rs+        | stop (rs ^. lcfoairCloudFrontOriginAccessIdentityList . cfoailIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lcfoaiMarker .~ rs ^. lcfoairCloudFrontOriginAccessIdentityList . cfoailNextMarker
+ gen/Network/AWS/CloudFront/ListDistributions.hs view
@@ -0,0 +1,132 @@+{-# 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.CloudFront.ListDistributions+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | List distributions.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListDistributions.html>+module Network.AWS.CloudFront.ListDistributions+    (+    -- * Request+      ListDistributions+    -- ** Request constructor+    , listDistributions+    -- ** Request lenses+    , ldMarker+    , ldMaxItems++    -- * Response+    , ListDistributionsResponse+    -- ** Response constructor+    , listDistributionsResponse+    -- ** Response lenses+    , ldrDistributionList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data ListDistributions = ListDistributions+    { _ldMarker   :: Maybe Text+    , _ldMaxItems :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListDistributions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ldMarker' @::@ 'Maybe' 'Text'+--+-- * 'ldMaxItems' @::@ 'Maybe' 'Text'+--+listDistributions :: ListDistributions+listDistributions = ListDistributions+    { _ldMarker   = Nothing+    , _ldMaxItems = Nothing+    }++-- | Use this when paginating results to indicate where to begin in your list+-- of distributions. The results include distributions in the list that+-- occur after the marker. To get the next page of results, set the Marker+-- to the value of the NextMarker from the current page's response (which is+-- also the ID of the last distribution on that page).+ldMarker :: Lens' ListDistributions (Maybe Text)+ldMarker = lens _ldMarker (\s a -> s { _ldMarker = a })++-- | The maximum number of distributions you want in the response body.+ldMaxItems :: Lens' ListDistributions (Maybe Text)+ldMaxItems = lens _ldMaxItems (\s a -> s { _ldMaxItems = a })++newtype ListDistributionsResponse = ListDistributionsResponse+    { _ldrDistributionList :: DistributionList+    } deriving (Eq, Show)++-- | 'ListDistributionsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ldrDistributionList' @::@ 'DistributionList'+--+listDistributionsResponse :: DistributionList -- ^ 'ldrDistributionList'+                          -> ListDistributionsResponse+listDistributionsResponse p1 = ListDistributionsResponse+    { _ldrDistributionList = p1+    }++-- | The DistributionList type.+ldrDistributionList :: Lens' ListDistributionsResponse DistributionList+ldrDistributionList =+    lens _ldrDistributionList (\s a -> s { _ldrDistributionList = a })++instance ToPath ListDistributions where+    toPath = const "/2014-05-31/distribution"++instance ToQuery ListDistributions where+    toQuery ListDistributions{..} = mconcat+        [ "Marker"   =? _ldMarker+        , "MaxItems" =? _ldMaxItems+        ]++instance ToHeaders ListDistributions++instance ToXMLRoot ListDistributions where+    toXMLRoot = const (namespaced ns "ListDistributions" [])++instance ToXML ListDistributions++instance AWSRequest ListDistributions where+    type Sv ListDistributions = CloudFront+    type Rs ListDistributions = ListDistributionsResponse++    request  = get+    response = xmlResponse++instance FromXML ListDistributionsResponse where+    parseXML x = ListDistributionsResponse+        <$> x .@  "DistributionList"++instance AWSPager ListDistributions where+    page rq rs+        | stop (rs ^. ldrDistributionList . dlIsTruncated) = Nothing+        | otherwise = Just $ rq+            & ldMarker .~ rs ^. ldrDistributionList . dlNextMarker
+ gen/Network/AWS/CloudFront/ListInvalidations.hs view
@@ -0,0 +1,148 @@+{-# 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.CloudFront.ListInvalidations+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | List invalidation batches.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListInvalidations.html>+module Network.AWS.CloudFront.ListInvalidations+    (+    -- * Request+      ListInvalidations+    -- ** Request constructor+    , listInvalidations+    -- ** Request lenses+    , liDistributionId+    , liMarker+    , liMaxItems++    -- * Response+    , ListInvalidationsResponse+    -- ** Response constructor+    , listInvalidationsResponse+    -- ** Response lenses+    , lirInvalidationList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data ListInvalidations = ListInvalidations+    { _liDistributionId :: Text+    , _liMarker         :: Maybe Text+    , _liMaxItems       :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListInvalidations' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'liDistributionId' @::@ 'Text'+--+-- * 'liMarker' @::@ 'Maybe' 'Text'+--+-- * 'liMaxItems' @::@ 'Maybe' 'Text'+--+listInvalidations :: Text -- ^ 'liDistributionId'+                  -> ListInvalidations+listInvalidations p1 = ListInvalidations+    { _liDistributionId = p1+    , _liMarker         = Nothing+    , _liMaxItems       = Nothing+    }++-- | The distribution's id.+liDistributionId :: Lens' ListInvalidations Text+liDistributionId = lens _liDistributionId (\s a -> s { _liDistributionId = a })++-- | Use this parameter when paginating results to indicate where to begin in+-- your list of invalidation batches. Because the results are returned in+-- decreasing order from most recent to oldest, the most recent results are+-- on the first page, the second page will contain earlier results, and so+-- on. To get the next page of results, set the Marker to the value of the+-- NextMarker from the current page's response. This value is the same as+-- the ID of the last invalidation batch on that page.+liMarker :: Lens' ListInvalidations (Maybe Text)+liMarker = lens _liMarker (\s a -> s { _liMarker = a })++-- | The maximum number of invalidation batches you want in the response body.+liMaxItems :: Lens' ListInvalidations (Maybe Text)+liMaxItems = lens _liMaxItems (\s a -> s { _liMaxItems = a })++newtype ListInvalidationsResponse = ListInvalidationsResponse+    { _lirInvalidationList :: InvalidationList+    } deriving (Eq, Show)++-- | 'ListInvalidationsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lirInvalidationList' @::@ 'InvalidationList'+--+listInvalidationsResponse :: InvalidationList -- ^ 'lirInvalidationList'+                          -> ListInvalidationsResponse+listInvalidationsResponse p1 = ListInvalidationsResponse+    { _lirInvalidationList = p1+    }++-- | Information about invalidation batches.+lirInvalidationList :: Lens' ListInvalidationsResponse InvalidationList+lirInvalidationList =+    lens _lirInvalidationList (\s a -> s { _lirInvalidationList = a })++instance ToPath ListInvalidations where+    toPath ListInvalidations{..} = mconcat+        [ "/2014-05-31/distribution/"+        , toText _liDistributionId+        , "/invalidation"+        ]++instance ToQuery ListInvalidations where+    toQuery ListInvalidations{..} = mconcat+        [ "Marker"   =? _liMarker+        , "MaxItems" =? _liMaxItems+        ]++instance ToHeaders ListInvalidations++instance ToXMLRoot ListInvalidations where+    toXMLRoot = const (namespaced ns "ListInvalidations" [])++instance ToXML ListInvalidations++instance AWSRequest ListInvalidations where+    type Sv ListInvalidations = CloudFront+    type Rs ListInvalidations = ListInvalidationsResponse++    request  = get+    response = xmlResponse++instance FromXML ListInvalidationsResponse where+    parseXML x = ListInvalidationsResponse+        <$> x .@  "InvalidationList"++instance AWSPager ListInvalidations where+    page rq rs+        | stop (rs ^. lirInvalidationList . ilIsTruncated) = Nothing+        | otherwise = Just $ rq+            & liMarker .~ rs ^. lirInvalidationList . ilNextMarker
+ gen/Network/AWS/CloudFront/ListStreamingDistributions.hs view
@@ -0,0 +1,134 @@+{-# 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.CloudFront.ListStreamingDistributions+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | List streaming distributions.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/ListStreamingDistributions.html>+module Network.AWS.CloudFront.ListStreamingDistributions+    (+    -- * Request+      ListStreamingDistributions+    -- ** Request constructor+    , listStreamingDistributions+    -- ** Request lenses+    , lsdMarker+    , lsdMaxItems++    -- * Response+    , ListStreamingDistributionsResponse+    -- ** Response constructor+    , listStreamingDistributionsResponse+    -- ** Response lenses+    , lsdrStreamingDistributionList+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data ListStreamingDistributions = ListStreamingDistributions+    { _lsdMarker   :: Maybe Text+    , _lsdMaxItems :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ListStreamingDistributions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lsdMarker' @::@ 'Maybe' 'Text'+--+-- * 'lsdMaxItems' @::@ 'Maybe' 'Text'+--+listStreamingDistributions :: ListStreamingDistributions+listStreamingDistributions = ListStreamingDistributions+    { _lsdMarker   = Nothing+    , _lsdMaxItems = Nothing+    }++-- | Use this when paginating results to indicate where to begin in your list+-- of streaming distributions. The results include distributions in the list+-- that occur after the marker. To get the next page of results, set the+-- Marker to the value of the NextMarker from the current page's response+-- (which is also the ID of the last distribution on that page).+lsdMarker :: Lens' ListStreamingDistributions (Maybe Text)+lsdMarker = lens _lsdMarker (\s a -> s { _lsdMarker = a })++-- | The maximum number of streaming distributions you want in the response+-- body.+lsdMaxItems :: Lens' ListStreamingDistributions (Maybe Text)+lsdMaxItems = lens _lsdMaxItems (\s a -> s { _lsdMaxItems = a })++newtype ListStreamingDistributionsResponse = ListStreamingDistributionsResponse+    { _lsdrStreamingDistributionList :: StreamingDistributionList+    } deriving (Eq, Show)++-- | 'ListStreamingDistributionsResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lsdrStreamingDistributionList' @::@ 'StreamingDistributionList'+--+listStreamingDistributionsResponse :: StreamingDistributionList -- ^ 'lsdrStreamingDistributionList'+                                   -> ListStreamingDistributionsResponse+listStreamingDistributionsResponse p1 = ListStreamingDistributionsResponse+    { _lsdrStreamingDistributionList = p1+    }++-- | The StreamingDistributionList type.+lsdrStreamingDistributionList :: Lens' ListStreamingDistributionsResponse StreamingDistributionList+lsdrStreamingDistributionList =+    lens _lsdrStreamingDistributionList+        (\s a -> s { _lsdrStreamingDistributionList = a })++instance ToPath ListStreamingDistributions where+    toPath = const "/2014-05-31/streaming-distribution"++instance ToQuery ListStreamingDistributions where+    toQuery ListStreamingDistributions{..} = mconcat+        [ "Marker"   =? _lsdMarker+        , "MaxItems" =? _lsdMaxItems+        ]++instance ToHeaders ListStreamingDistributions++instance ToXMLRoot ListStreamingDistributions where+    toXMLRoot = const (namespaced ns "ListStreamingDistributions" [])++instance ToXML ListStreamingDistributions++instance AWSRequest ListStreamingDistributions where+    type Sv ListStreamingDistributions = CloudFront+    type Rs ListStreamingDistributions = ListStreamingDistributionsResponse++    request  = get+    response = xmlResponse++instance FromXML ListStreamingDistributionsResponse where+    parseXML x = ListStreamingDistributionsResponse+        <$> x .@  "StreamingDistributionList"++instance AWSPager ListStreamingDistributions where+    page rq rs+        | stop (rs ^. lsdrStreamingDistributionList . sdlIsTruncated) = Nothing+        | otherwise = Just $ rq+            & lsdMarker .~ rs ^. lsdrStreamingDistributionList . sdlNextMarker
+ gen/Network/AWS/CloudFront/Types.hs view
@@ -0,0 +1,3617 @@+{-# 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.CloudFront.Types+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++module Network.AWS.CloudFront.Types+    (+    -- * Service+      CloudFront+    -- ** Error+    , RESTError+    -- ** XML+    , ns++    -- * CloudFrontOriginAccessIdentityList+    , CloudFrontOriginAccessIdentityList+    , cloudFrontOriginAccessIdentityList+    , cfoailIsTruncated+    , cfoailItems+    , cfoailMarker+    , cfoailMaxItems+    , cfoailNextMarker+    , cfoailQuantity++    -- * Invalidation+    , Invalidation+    , invalidation+    , iCreateTime+    , iId+    , iInvalidationBatch+    , iStatus++    -- * SSLSupportMethod+    , SSLSupportMethod (..)++    -- * AllowedMethods+    , AllowedMethods+    , allowedMethods+    , amItems+    , amQuantity++    -- * CloudFrontOriginAccessIdentityConfig+    , CloudFrontOriginAccessIdentityConfig+    , cloudFrontOriginAccessIdentityConfig+    , cfoaicCallerReference+    , cfoaicComment++    -- * Origin+    , Origin+    , origin+    , oCustomOriginConfig+    , oDomainName+    , oId+    , oS3OriginConfig++    -- * ViewerProtocolPolicy+    , ViewerProtocolPolicy (..)++    -- * StreamingDistributionList+    , StreamingDistributionList+    , streamingDistributionList+    , sdlIsTruncated+    , sdlItems+    , sdlMarker+    , sdlMaxItems+    , sdlNextMarker+    , sdlQuantity++    -- * StreamingDistributionConfig+    , StreamingDistributionConfig+    , streamingDistributionConfig+    , sdcAliases+    , sdcCallerReference+    , sdcComment+    , sdcEnabled+    , sdcLogging+    , sdcPriceClass+    , sdcS3Origin+    , sdcTrustedSigners++    -- * Signer+    , Signer+    , signer+    , sAwsAccountNumber+    , sKeyPairIds++    -- * CookiePreference+    , CookiePreference+    , cookiePreference+    , cpForward+    , cpWhitelistedNames++    -- * OriginProtocolPolicy+    , OriginProtocolPolicy (..)++    -- * Distribution+    , Distribution+    , distribution+    , dActiveTrustedSigners+    , dDistributionConfig+    , dDomainName+    , dId+    , dInProgressInvalidationBatches+    , dLastModifiedTime+    , dStatus++    -- * CloudFrontOriginAccessIdentitySummary+    , CloudFrontOriginAccessIdentitySummary+    , cloudFrontOriginAccessIdentitySummary+    , cfoaisComment+    , cfoaisId+    , cfoaisS3CanonicalUserId++    -- * StreamingDistributionSummary+    , StreamingDistributionSummary+    , streamingDistributionSummary+    , sdsAliases+    , sdsComment+    , sdsDomainName+    , sdsEnabled+    , sdsId+    , sdsLastModifiedTime+    , sdsPriceClass+    , sdsS3Origin+    , sdsStatus+    , sdsTrustedSigners++    -- * CustomOriginConfig+    , CustomOriginConfig+    , customOriginConfig+    , cocHTTPPort+    , cocHTTPSPort+    , cocOriginProtocolPolicy++    -- * Aliases+    , Aliases+    , aliases+    , aItems+    , aQuantity++    -- * InvalidationBatch+    , InvalidationBatch+    , invalidationBatch+    , ibCallerReference+    , ibPaths++    -- * InvalidationSummary+    , InvalidationSummary+    , invalidationSummary+    , isCreateTime+    , isId+    , isStatus++    -- * DistributionConfig+    , DistributionConfig+    , distributionConfig+    , dcAliases+    , dcCacheBehaviors+    , dcCallerReference+    , dcComment+    , dcCustomErrorResponses+    , dcDefaultCacheBehavior+    , dcDefaultRootObject+    , dcEnabled+    , dcLogging+    , dcOrigins+    , dcPriceClass+    , dcRestrictions+    , dcViewerCertificate++    -- * CacheBehavior+    , CacheBehavior+    , cacheBehavior+    , cbAllowedMethods+    , cbForwardedValues+    , cbMinTTL+    , cbPathPattern+    , cbSmoothStreaming+    , cbTargetOriginId+    , cbTrustedSigners+    , cbViewerProtocolPolicy++    -- * DistributionList+    , DistributionList+    , distributionList+    , dlIsTruncated+    , dlItems+    , dlMarker+    , dlMaxItems+    , dlNextMarker+    , dlQuantity++    -- * KeyPairIds+    , KeyPairIds+    , keyPairIds+    , kpiItems+    , kpiQuantity++    -- * PriceClass+    , PriceClass (..)++    -- * CustomErrorResponses+    , CustomErrorResponses+    , customErrorResponses+    , cerItems+    , cerQuantity++    -- * S3OriginConfig+    , S3OriginConfig+    , s3OriginConfig+    , socOriginAccessIdentity++    -- * GeoRestriction+    , GeoRestriction+    , geoRestriction+    , grItems+    , grQuantity+    , grRestrictionType++    -- * S3Origin+    , S3Origin+    , s3Origin+    , soDomainName+    , soOriginAccessIdentity++    -- * Headers+    , Headers+    , headers+    , hItems+    , hQuantity++    -- * ViewerCertificate+    , ViewerCertificate+    , viewerCertificate+    , vcCloudFrontDefaultCertificate+    , vcIAMCertificateId+    , vcSSLSupportMethod++    -- * Restrictions+    , Restrictions+    , restrictions+    , rGeoRestriction++    -- * Origins+    , Origins+    , origins+    , oItems+    , oQuantity++    -- * Method+    , Method (..)++    -- * ForwardedValues+    , ForwardedValues+    , forwardedValues+    , fvCookies+    , fvHeaders+    , fvQueryString++    -- * TrustedSigners+    , TrustedSigners+    , trustedSigners+    , tsEnabled+    , tsItems+    , tsQuantity++    -- * ItemSelection+    , ItemSelection (..)++    -- * StreamingLoggingConfig+    , StreamingLoggingConfig+    , streamingLoggingConfig+    , slcBucket+    , slcEnabled+    , slcPrefix++    -- * CookieNames+    , CookieNames+    , cookieNames+    , cnItems+    , cnQuantity++    -- * CustomErrorResponse+    , CustomErrorResponse+    , customErrorResponse+    , cerErrorCachingMinTTL+    , cerErrorCode+    , cerResponseCode+    , cerResponsePagePath++    -- * CacheBehaviors+    , CacheBehaviors+    , cacheBehaviors+    , cbItems+    , cbQuantity++    -- * DefaultCacheBehavior+    , DefaultCacheBehavior+    , defaultCacheBehavior+    , dcbAllowedMethods+    , dcbForwardedValues+    , dcbMinTTL+    , dcbSmoothStreaming+    , dcbTargetOriginId+    , dcbTrustedSigners+    , dcbViewerProtocolPolicy++    -- * InvalidationList+    , InvalidationList+    , invalidationList+    , ilIsTruncated+    , ilItems+    , ilMarker+    , ilMaxItems+    , ilNextMarker+    , ilQuantity++    -- * StreamingDistribution+    , StreamingDistribution+    , streamingDistribution+    , sdActiveTrustedSigners+    , sdDomainName+    , sdId+    , sdLastModifiedTime+    , sdStatus+    , sdStreamingDistributionConfig++    -- * Paths+    , Paths+    , paths+    , pItems+    , pQuantity++    -- * CloudFrontOriginAccessIdentity+    , CloudFrontOriginAccessIdentity+    , cloudFrontOriginAccessIdentity+    , cfoaiCloudFrontOriginAccessIdentityConfig+    , cfoaiId+    , cfoaiS3CanonicalUserId++    -- * ActiveTrustedSigners+    , ActiveTrustedSigners+    , activeTrustedSigners+    , atsEnabled+    , atsItems+    , atsQuantity++    -- * DistributionSummary+    , DistributionSummary+    , distributionSummary+    , dsAliases+    , dsCacheBehaviors+    , dsComment+    , dsCustomErrorResponses+    , dsDefaultCacheBehavior+    , dsDomainName+    , dsEnabled+    , dsId+    , dsLastModifiedTime+    , dsOrigins+    , dsPriceClass+    , dsRestrictions+    , dsStatus+    , dsViewerCertificate++    -- * GeoRestrictionType+    , GeoRestrictionType (..)++    -- * LoggingConfig+    , LoggingConfig+    , loggingConfig+    , lcBucket+    , lcEnabled+    , lcIncludeCookies+    , lcPrefix+    ) where++import Network.AWS.Error+import Network.AWS.Prelude+import Network.AWS.Signing.V4+import qualified GHC.Exts++-- | Version @2014-05-31@ of the Amazon CloudFront service.+data CloudFront++instance AWSService CloudFront where+    type Sg CloudFront = V4+    type Er CloudFront = RESTError++    service = Service+        { _svcEndpoint     = global+        , _svcAbbrev       = "CloudFront"+        , _svcPrefix       = "cloudfront"+        , _svcVersion      = "2014-05-31"+        , _svcTargetPrefix = Nothing+        , _svcJSONVersion  = Nothing+        }++    handle = restError statusSuccess++ns :: Text+ns = "http://cloudfront.amazonaws.com/doc/2014-05-31/"++data CloudFrontOriginAccessIdentityList = CloudFrontOriginAccessIdentityList+    { _cfoailIsTruncated :: Bool+    , _cfoailItems       :: List "CloudFrontOriginAccessIdentitySummary" CloudFrontOriginAccessIdentitySummary+    , _cfoailMarker      :: Text+    , _cfoailMaxItems    :: Int+    , _cfoailNextMarker  :: Maybe Text+    , _cfoailQuantity    :: Int+    } deriving (Eq, Show)++-- | 'CloudFrontOriginAccessIdentityList' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cfoailIsTruncated' @::@ 'Bool'+--+-- * 'cfoailItems' @::@ ['CloudFrontOriginAccessIdentitySummary']+--+-- * 'cfoailMarker' @::@ 'Text'+--+-- * 'cfoailMaxItems' @::@ 'Int'+--+-- * 'cfoailNextMarker' @::@ 'Maybe' 'Text'+--+-- * 'cfoailQuantity' @::@ 'Int'+--+cloudFrontOriginAccessIdentityList :: Text -- ^ 'cfoailMarker'+                                   -> Int -- ^ 'cfoailMaxItems'+                                   -> Bool -- ^ 'cfoailIsTruncated'+                                   -> Int -- ^ 'cfoailQuantity'+                                   -> CloudFrontOriginAccessIdentityList+cloudFrontOriginAccessIdentityList p1 p2 p3 p4 = CloudFrontOriginAccessIdentityList+    { _cfoailMarker      = p1+    , _cfoailMaxItems    = p2+    , _cfoailIsTruncated = p3+    , _cfoailQuantity    = p4+    , _cfoailNextMarker  = Nothing+    , _cfoailItems       = mempty+    }++-- | A flag that indicates whether more origin access identities remain to be+-- listed. If your results were truncated, you can make a follow-up+-- pagination request using the Marker request parameter to retrieve more+-- items in the list.+cfoailIsTruncated :: Lens' CloudFrontOriginAccessIdentityList Bool+cfoailIsTruncated =+    lens _cfoailIsTruncated (\s a -> s { _cfoailIsTruncated = a })++-- | A complex type that contains one CloudFrontOriginAccessIdentitySummary+-- element for each origin access identity that was created by the current+-- AWS account.+cfoailItems :: Lens' CloudFrontOriginAccessIdentityList [CloudFrontOriginAccessIdentitySummary]+cfoailItems = lens _cfoailItems (\s a -> s { _cfoailItems = a }) . _List++-- | The value you provided for the Marker request parameter.+cfoailMarker :: Lens' CloudFrontOriginAccessIdentityList Text+cfoailMarker = lens _cfoailMarker (\s a -> s { _cfoailMarker = a })++-- | The value you provided for the MaxItems request parameter.+cfoailMaxItems :: Lens' CloudFrontOriginAccessIdentityList Int+cfoailMaxItems = lens _cfoailMaxItems (\s a -> s { _cfoailMaxItems = a })++-- | If IsTruncated is true, this element is present and contains the value+-- you can use for the Marker request parameter to continue listing your+-- origin access identities where they left off.+cfoailNextMarker :: Lens' CloudFrontOriginAccessIdentityList (Maybe Text)+cfoailNextMarker = lens _cfoailNextMarker (\s a -> s { _cfoailNextMarker = a })++-- | The number of CloudFront origin access identities that were created by+-- the current AWS account.+cfoailQuantity :: Lens' CloudFrontOriginAccessIdentityList Int+cfoailQuantity = lens _cfoailQuantity (\s a -> s { _cfoailQuantity = a })++instance FromXML CloudFrontOriginAccessIdentityList where+    parseXML x = CloudFrontOriginAccessIdentityList+        <$> x .@  "IsTruncated"+        <*> x .@  "Items"+        <*> x .@  "Marker"+        <*> x .@  "MaxItems"+        <*> x .@? "NextMarker"+        <*> x .@  "Quantity"++instance ToXML CloudFrontOriginAccessIdentityList where+    toXML CloudFrontOriginAccessIdentityList{..} = nodes "CloudFrontOriginAccessIdentityList"+        [ "Marker"      =@ _cfoailMarker+        , "NextMarker"  =@ _cfoailNextMarker+        , "MaxItems"    =@ _cfoailMaxItems+        , "IsTruncated" =@ _cfoailIsTruncated+        , "Quantity"    =@ _cfoailQuantity+        , "Items"       =@ _cfoailItems+        ]++data Invalidation = Invalidation+    { _iCreateTime        :: RFC822+    , _iId                :: Text+    , _iInvalidationBatch :: InvalidationBatch+    , _iStatus            :: Text+    } deriving (Eq, Show)++-- | 'Invalidation' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'iCreateTime' @::@ 'UTCTime'+--+-- * 'iId' @::@ 'Text'+--+-- * 'iInvalidationBatch' @::@ 'InvalidationBatch'+--+-- * 'iStatus' @::@ 'Text'+--+invalidation :: Text -- ^ 'iId'+             -> Text -- ^ 'iStatus'+             -> UTCTime -- ^ 'iCreateTime'+             -> InvalidationBatch -- ^ 'iInvalidationBatch'+             -> Invalidation+invalidation p1 p2 p3 p4 = Invalidation+    { _iId                = p1+    , _iStatus            = p2+    , _iCreateTime        = withIso _Time (const id) p3+    , _iInvalidationBatch = p4+    }++-- | The date and time the invalidation request was first made.+iCreateTime :: Lens' Invalidation UTCTime+iCreateTime = lens _iCreateTime (\s a -> s { _iCreateTime = a }) . _Time++-- | The identifier for the invalidation request. For example:+-- IDFDVBD632BHDS5.+iId :: Lens' Invalidation Text+iId = lens _iId (\s a -> s { _iId = a })++-- | The current invalidation information for the batch request.+iInvalidationBatch :: Lens' Invalidation InvalidationBatch+iInvalidationBatch =+    lens _iInvalidationBatch (\s a -> s { _iInvalidationBatch = a })++-- | The status of the invalidation request. When the invalidation batch is+-- finished, the status is Completed.+iStatus :: Lens' Invalidation Text+iStatus = lens _iStatus (\s a -> s { _iStatus = a })++instance FromXML Invalidation where+    parseXML x = Invalidation+        <$> x .@  "CreateTime"+        <*> x .@  "Id"+        <*> x .@  "InvalidationBatch"+        <*> x .@  "Status"++instance ToXMLRoot Invalidation where+    toXMLRoot Invalidation{..} = namespaced ns "Invalidation"+        [ "Id"                =@ _iId+        , "Status"            =@ _iStatus+        , "CreateTime"        =@ _iCreateTime+        , "InvalidationBatch" =@ _iInvalidationBatch+        ]++instance ToXML Invalidation++data SSLSupportMethod+    = SniOnly -- ^ sni-only+    | Vip     -- ^ vip+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable SSLSupportMethod++instance FromText SSLSupportMethod where+    parser = match "sni-only" SniOnly+         <|> match "vip"      Vip++instance ToText SSLSupportMethod where+    toText = \case+        SniOnly -> "sni-only"+        Vip     -> "vip"++instance FromXML SSLSupportMethod where+    parseXML = parseXMLText "SSLSupportMethod"++instance ToXML SSLSupportMethod where+    toXML = toXMLText++data AllowedMethods = AllowedMethods+    { _amItems    :: List "Method" Text+    , _amQuantity :: Int+    } deriving (Eq, Ord, Show)++-- | 'AllowedMethods' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'amItems' @::@ ['Text']+--+-- * 'amQuantity' @::@ 'Int'+--+allowedMethods :: Int -- ^ 'amQuantity'+               -> AllowedMethods+allowedMethods p1 = AllowedMethods+    { _amQuantity = p1+    , _amItems    = mempty+    }++-- | A complex type that contains the HTTP methods that you want CloudFront to+-- process and forward to your origin.+amItems :: Lens' AllowedMethods [Text]+amItems = lens _amItems (\s a -> s { _amItems = a }) . _List++-- | The number of HTTP methods that you want CloudFront to forward to your+-- origin. Valid values are 2 (for GET and HEAD requests) and 7 (for DELETE,+-- GET, HEAD, OPTIONS, PATCH, POST, and PUT requests).+amQuantity :: Lens' AllowedMethods Int+amQuantity = lens _amQuantity (\s a -> s { _amQuantity = a })++instance FromXML AllowedMethods where+    parseXML x = AllowedMethods+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML AllowedMethods where+    toXML AllowedMethods{..} = nodes "AllowedMethods"+        [ "Quantity" =@ _amQuantity+        , "Items"    =@ _amItems+        ]++data CloudFrontOriginAccessIdentityConfig = CloudFrontOriginAccessIdentityConfig+    { _cfoaicCallerReference :: Text+    , _cfoaicComment         :: Text+    } deriving (Eq, Ord, Show)++-- | 'CloudFrontOriginAccessIdentityConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cfoaicCallerReference' @::@ 'Text'+--+-- * 'cfoaicComment' @::@ 'Text'+--+cloudFrontOriginAccessIdentityConfig :: Text -- ^ 'cfoaicCallerReference'+                                     -> Text -- ^ 'cfoaicComment'+                                     -> CloudFrontOriginAccessIdentityConfig+cloudFrontOriginAccessIdentityConfig p1 p2 = CloudFrontOriginAccessIdentityConfig+    { _cfoaicCallerReference = p1+    , _cfoaicComment         = p2+    }++-- | A unique number that ensures the request can't be replayed. If the+-- CallerReference is new (no matter the content of the+-- CloudFrontOriginAccessIdentityConfig object), a new origin access+-- identity is created. If the CallerReference is a value you already sent+-- in a previous request to create an identity, and the content of the+-- CloudFrontOriginAccessIdentityConfig is identical to the original request+-- (ignoring white space), the response includes the same information+-- returned to the original request. If the CallerReference is a value you+-- already sent in a previous request to create an identity but the content+-- of the CloudFrontOriginAccessIdentityConfig is different from the+-- original request, CloudFront returns a+-- CloudFrontOriginAccessIdentityAlreadyExists error.+cfoaicCallerReference :: Lens' CloudFrontOriginAccessIdentityConfig Text+cfoaicCallerReference =+    lens _cfoaicCallerReference (\s a -> s { _cfoaicCallerReference = a })++-- | Any comments you want to include about the origin access identity.+cfoaicComment :: Lens' CloudFrontOriginAccessIdentityConfig Text+cfoaicComment = lens _cfoaicComment (\s a -> s { _cfoaicComment = a })++instance FromXML CloudFrontOriginAccessIdentityConfig where+    parseXML x = CloudFrontOriginAccessIdentityConfig+        <$> x .@  "CallerReference"+        <*> x .@  "Comment"++instance ToXML CloudFrontOriginAccessIdentityConfig where+    toXML CloudFrontOriginAccessIdentityConfig{..} = nodes "CloudFrontOriginAccessIdentityConfig"+        [ "CallerReference" =@ _cfoaicCallerReference+        , "Comment"         =@ _cfoaicComment+        ]++data Origin = Origin+    { _oCustomOriginConfig :: Maybe CustomOriginConfig+    , _oDomainName         :: Text+    , _oId                 :: Text+    , _oS3OriginConfig     :: Maybe S3OriginConfig+    } deriving (Eq, Show)++-- | 'Origin' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'oCustomOriginConfig' @::@ 'Maybe' 'CustomOriginConfig'+--+-- * 'oDomainName' @::@ 'Text'+--+-- * 'oId' @::@ 'Text'+--+-- * 'oS3OriginConfig' @::@ 'Maybe' 'S3OriginConfig'+--+origin :: Text -- ^ 'oId'+       -> Text -- ^ 'oDomainName'+       -> Origin+origin p1 p2 = Origin+    { _oId                 = p1+    , _oDomainName         = p2+    , _oS3OriginConfig     = Nothing+    , _oCustomOriginConfig = Nothing+    }++-- | A complex type that contains information about a custom origin. If the+-- origin is an Amazon S3 bucket, use the S3OriginConfig element instead.+oCustomOriginConfig :: Lens' Origin (Maybe CustomOriginConfig)+oCustomOriginConfig =+    lens _oCustomOriginConfig (\s a -> s { _oCustomOriginConfig = a })++-- | Amazon S3 origins: The DNS name of the Amazon S3 bucket from which you+-- want CloudFront to get objects for this origin, for example,+-- myawsbucket.s3.amazonaws.com. Custom origins: The DNS domain name for the+-- HTTP server from which you want CloudFront to get objects for this+-- origin, for example, www.example.com.+oDomainName :: Lens' Origin Text+oDomainName = lens _oDomainName (\s a -> s { _oDomainName = a })++-- | A unique identifier for the origin. The value of Id must be unique within+-- the distribution. You use the value of Id when you create a cache+-- behavior. The Id identifies the origin that CloudFront routes a request+-- to when the request matches the path pattern for that cache behavior.+oId :: Lens' Origin Text+oId = lens _oId (\s a -> s { _oId = a })++-- | A complex type that contains information about the Amazon S3 origin. If+-- the origin is a custom origin, use the CustomOriginConfig element+-- instead.+oS3OriginConfig :: Lens' Origin (Maybe S3OriginConfig)+oS3OriginConfig = lens _oS3OriginConfig (\s a -> s { _oS3OriginConfig = a })++instance FromXML Origin where+    parseXML x = Origin+        <$> x .@? "CustomOriginConfig"+        <*> x .@  "DomainName"+        <*> x .@  "Id"+        <*> x .@? "S3OriginConfig"++instance ToXML Origin where+    toXML Origin{..} = nodes "Origin"+        [ "Id"                 =@ _oId+        , "DomainName"         =@ _oDomainName+        , "S3OriginConfig"     =@ _oS3OriginConfig+        , "CustomOriginConfig" =@ _oCustomOriginConfig+        ]++data ViewerProtocolPolicy+    = AllowAll        -- ^ allow-all+    | HttpsOnly       -- ^ https-only+    | RedirectToHttps -- ^ redirect-to-https+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable ViewerProtocolPolicy++instance FromText ViewerProtocolPolicy where+    parser = match "allow-all"         AllowAll+         <|> match "https-only"        HttpsOnly+         <|> match "redirect-to-https" RedirectToHttps++instance ToText ViewerProtocolPolicy where+    toText = \case+        AllowAll        -> "allow-all"+        HttpsOnly       -> "https-only"+        RedirectToHttps -> "redirect-to-https"++instance FromXML ViewerProtocolPolicy where+    parseXML = parseXMLText "ViewerProtocolPolicy"++instance ToXML ViewerProtocolPolicy where+    toXML = toXMLText++data StreamingDistributionList = StreamingDistributionList+    { _sdlIsTruncated :: Bool+    , _sdlItems       :: List "StreamingDistributionSummary" StreamingDistributionSummary+    , _sdlMarker      :: Text+    , _sdlMaxItems    :: Int+    , _sdlNextMarker  :: Maybe Text+    , _sdlQuantity    :: Int+    } deriving (Eq, Show)++-- | 'StreamingDistributionList' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sdlIsTruncated' @::@ 'Bool'+--+-- * 'sdlItems' @::@ ['StreamingDistributionSummary']+--+-- * 'sdlMarker' @::@ 'Text'+--+-- * 'sdlMaxItems' @::@ 'Int'+--+-- * 'sdlNextMarker' @::@ 'Maybe' 'Text'+--+-- * 'sdlQuantity' @::@ 'Int'+--+streamingDistributionList :: Text -- ^ 'sdlMarker'+                          -> Int -- ^ 'sdlMaxItems'+                          -> Bool -- ^ 'sdlIsTruncated'+                          -> Int -- ^ 'sdlQuantity'+                          -> StreamingDistributionList+streamingDistributionList p1 p2 p3 p4 = StreamingDistributionList+    { _sdlMarker      = p1+    , _sdlMaxItems    = p2+    , _sdlIsTruncated = p3+    , _sdlQuantity    = p4+    , _sdlNextMarker  = Nothing+    , _sdlItems       = mempty+    }++-- | A flag that indicates whether more streaming distributions remain to be+-- listed. If your results were truncated, you can make a follow-up+-- pagination request using the Marker request parameter to retrieve more+-- distributions in the list.+sdlIsTruncated :: Lens' StreamingDistributionList Bool+sdlIsTruncated = lens _sdlIsTruncated (\s a -> s { _sdlIsTruncated = a })++-- | A complex type that contains one StreamingDistributionSummary element for+-- each distribution that was created by the current AWS account.+sdlItems :: Lens' StreamingDistributionList [StreamingDistributionSummary]+sdlItems = lens _sdlItems (\s a -> s { _sdlItems = a }) . _List++-- | The value you provided for the Marker request parameter.+sdlMarker :: Lens' StreamingDistributionList Text+sdlMarker = lens _sdlMarker (\s a -> s { _sdlMarker = a })++-- | The value you provided for the MaxItems request parameter.+sdlMaxItems :: Lens' StreamingDistributionList Int+sdlMaxItems = lens _sdlMaxItems (\s a -> s { _sdlMaxItems = a })++-- | If IsTruncated is true, this element is present and contains the value+-- you can use for the Marker request parameter to continue listing your+-- streaming distributions where they left off.+sdlNextMarker :: Lens' StreamingDistributionList (Maybe Text)+sdlNextMarker = lens _sdlNextMarker (\s a -> s { _sdlNextMarker = a })++-- | The number of streaming distributions that were created by the current+-- AWS account.+sdlQuantity :: Lens' StreamingDistributionList Int+sdlQuantity = lens _sdlQuantity (\s a -> s { _sdlQuantity = a })++instance FromXML StreamingDistributionList where+    parseXML x = StreamingDistributionList+        <$> x .@  "IsTruncated"+        <*> x .@  "Items"+        <*> x .@  "Marker"+        <*> x .@  "MaxItems"+        <*> x .@? "NextMarker"+        <*> x .@  "Quantity"++instance ToXML StreamingDistributionList where+    toXML StreamingDistributionList{..} = nodes "StreamingDistributionList"+        [ "Marker"      =@ _sdlMarker+        , "NextMarker"  =@ _sdlNextMarker+        , "MaxItems"    =@ _sdlMaxItems+        , "IsTruncated" =@ _sdlIsTruncated+        , "Quantity"    =@ _sdlQuantity+        , "Items"       =@ _sdlItems+        ]++data StreamingDistributionConfig = StreamingDistributionConfig+    { _sdcAliases         :: Aliases+    , _sdcCallerReference :: Text+    , _sdcComment         :: Text+    , _sdcEnabled         :: Bool+    , _sdcLogging         :: StreamingLoggingConfig+    , _sdcPriceClass      :: Text+    , _sdcS3Origin        :: S3Origin+    , _sdcTrustedSigners  :: TrustedSigners+    } deriving (Eq, Show)++-- | 'StreamingDistributionConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sdcAliases' @::@ 'Aliases'+--+-- * 'sdcCallerReference' @::@ 'Text'+--+-- * 'sdcComment' @::@ 'Text'+--+-- * 'sdcEnabled' @::@ 'Bool'+--+-- * 'sdcLogging' @::@ 'StreamingLoggingConfig'+--+-- * 'sdcPriceClass' @::@ 'Text'+--+-- * 'sdcS3Origin' @::@ 'S3Origin'+--+-- * 'sdcTrustedSigners' @::@ 'TrustedSigners'+--+streamingDistributionConfig :: Text -- ^ 'sdcCallerReference'+                            -> S3Origin -- ^ 'sdcS3Origin'+                            -> Aliases -- ^ 'sdcAliases'+                            -> Text -- ^ 'sdcComment'+                            -> StreamingLoggingConfig -- ^ 'sdcLogging'+                            -> TrustedSigners -- ^ 'sdcTrustedSigners'+                            -> Text -- ^ 'sdcPriceClass'+                            -> Bool -- ^ 'sdcEnabled'+                            -> StreamingDistributionConfig+streamingDistributionConfig p1 p2 p3 p4 p5 p6 p7 p8 = StreamingDistributionConfig+    { _sdcCallerReference = p1+    , _sdcS3Origin        = p2+    , _sdcAliases         = p3+    , _sdcComment         = p4+    , _sdcLogging         = p5+    , _sdcTrustedSigners  = p6+    , _sdcPriceClass      = p7+    , _sdcEnabled         = p8+    }++-- | A complex type that contains information about CNAMEs (alternate domain+-- names), if any, for this streaming distribution.+sdcAliases :: Lens' StreamingDistributionConfig Aliases+sdcAliases = lens _sdcAliases (\s a -> s { _sdcAliases = a })++-- | A unique number that ensures the request can't be replayed. If the+-- CallerReference is new (no matter the content of the+-- StreamingDistributionConfig object), a new streaming distribution is+-- created. If the CallerReference is a value you already sent in a previous+-- request to create a streaming distribution, and the content of the+-- StreamingDistributionConfig is identical to the original request+-- (ignoring white space), the response includes the same information+-- returned to the original request. If the CallerReference is a value you+-- already sent in a previous request to create a streaming distribution but+-- the content of the StreamingDistributionConfig is different from the+-- original request, CloudFront returns a DistributionAlreadyExists error.+sdcCallerReference :: Lens' StreamingDistributionConfig Text+sdcCallerReference =+    lens _sdcCallerReference (\s a -> s { _sdcCallerReference = a })++-- | Any comments you want to include about the streaming distribution.+sdcComment :: Lens' StreamingDistributionConfig Text+sdcComment = lens _sdcComment (\s a -> s { _sdcComment = a })++-- | Whether the streaming distribution is enabled to accept end user requests+-- for content.+sdcEnabled :: Lens' StreamingDistributionConfig Bool+sdcEnabled = lens _sdcEnabled (\s a -> s { _sdcEnabled = a })++-- | A complex type that controls whether access logs are written for the+-- streaming distribution.+sdcLogging :: Lens' StreamingDistributionConfig StreamingLoggingConfig+sdcLogging = lens _sdcLogging (\s a -> s { _sdcLogging = a })++-- | A complex type that contains information about price class for this+-- streaming distribution.+sdcPriceClass :: Lens' StreamingDistributionConfig Text+sdcPriceClass = lens _sdcPriceClass (\s a -> s { _sdcPriceClass = a })++-- | A complex type that contains information about the Amazon S3 bucket from+-- which you want CloudFront to get your media files for distribution.+sdcS3Origin :: Lens' StreamingDistributionConfig S3Origin+sdcS3Origin = lens _sdcS3Origin (\s a -> s { _sdcS3Origin = a })++-- | A complex type that specifies the AWS accounts, if any, that you want to+-- allow to create signed URLs for private content. If you want to require+-- signed URLs in requests for objects in the target origin that match the+-- PathPattern for this cache behavior, specify true for Enabled, and+-- specify the applicable values for Quantity and Items. For more+-- information, go to Using a Signed URL to Serve Private Content in the+-- Amazon CloudFront Developer Guide. If you don't want to require signed+-- URLs in requests for objects that match PathPattern, specify false for+-- Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or+-- more trusted signers, change Enabled to true (if it's currently false),+-- change Quantity as applicable, and specify all of the trusted signers+-- that you want to include in the updated distribution.+sdcTrustedSigners :: Lens' StreamingDistributionConfig TrustedSigners+sdcTrustedSigners =+    lens _sdcTrustedSigners (\s a -> s { _sdcTrustedSigners = a })++instance FromXML StreamingDistributionConfig where+    parseXML x = StreamingDistributionConfig+        <$> x .@  "Aliases"+        <*> x .@  "CallerReference"+        <*> x .@  "Comment"+        <*> x .@  "Enabled"+        <*> x .@  "Logging"+        <*> x .@  "PriceClass"+        <*> x .@  "S3Origin"+        <*> x .@  "TrustedSigners"++instance ToXML StreamingDistributionConfig where+    toXML StreamingDistributionConfig{..} = nodes "StreamingDistributionConfig"+        [ "CallerReference" =@ _sdcCallerReference+        , "S3Origin"        =@ _sdcS3Origin+        , "Aliases"         =@ _sdcAliases+        , "Comment"         =@ _sdcComment+        , "Logging"         =@ _sdcLogging+        , "TrustedSigners"  =@ _sdcTrustedSigners+        , "PriceClass"      =@ _sdcPriceClass+        , "Enabled"         =@ _sdcEnabled+        ]++data Signer = Signer+    { _sAwsAccountNumber :: Maybe Text+    , _sKeyPairIds       :: Maybe KeyPairIds+    } deriving (Eq, Show)++-- | 'Signer' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sAwsAccountNumber' @::@ 'Maybe' 'Text'+--+-- * 'sKeyPairIds' @::@ 'Maybe' 'KeyPairIds'+--+signer :: Signer+signer = Signer+    { _sAwsAccountNumber = Nothing+    , _sKeyPairIds       = Nothing+    }++-- | Specifies an AWS account that can create signed URLs. Values: self, which+-- indicates that the AWS account that was used to create the distribution+-- can created signed URLs, or an AWS account number. Omit the dashes in the+-- account number.+sAwsAccountNumber :: Lens' Signer (Maybe Text)+sAwsAccountNumber =+    lens _sAwsAccountNumber (\s a -> s { _sAwsAccountNumber = a })++-- | A complex type that lists the active CloudFront key pairs, if any, that+-- are associated with AwsAccountNumber.+sKeyPairIds :: Lens' Signer (Maybe KeyPairIds)+sKeyPairIds = lens _sKeyPairIds (\s a -> s { _sKeyPairIds = a })++instance FromXML Signer where+    parseXML x = Signer+        <$> x .@? "AwsAccountNumber"+        <*> x .@? "KeyPairIds"++instance ToXML Signer where+    toXML Signer{..} = nodes "Signer"+        [ "AwsAccountNumber" =@ _sAwsAccountNumber+        , "KeyPairIds"       =@ _sKeyPairIds+        ]++data CookiePreference = CookiePreference+    { _cpForward          :: Text+    , _cpWhitelistedNames :: Maybe CookieNames+    } deriving (Eq, Show)++-- | 'CookiePreference' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cpForward' @::@ 'Text'+--+-- * 'cpWhitelistedNames' @::@ 'Maybe' 'CookieNames'+--+cookiePreference :: Text -- ^ 'cpForward'+                 -> CookiePreference+cookiePreference p1 = CookiePreference+    { _cpForward          = p1+    , _cpWhitelistedNames = Nothing+    }++-- | Use this element to specify whether you want CloudFront to forward+-- cookies to the origin that is associated with this cache behavior. You+-- can specify all, none or whitelist. If you choose All, CloudFront+-- forwards all cookies regardless of how many your application uses.+cpForward :: Lens' CookiePreference Text+cpForward = lens _cpForward (\s a -> s { _cpForward = a })++-- | A complex type that specifies the whitelisted cookies, if any, that you+-- want CloudFront to forward to your origin that is associated with this+-- cache behavior.+cpWhitelistedNames :: Lens' CookiePreference (Maybe CookieNames)+cpWhitelistedNames =+    lens _cpWhitelistedNames (\s a -> s { _cpWhitelistedNames = a })++instance FromXML CookiePreference where+    parseXML x = CookiePreference+        <$> x .@  "Forward"+        <*> x .@? "WhitelistedNames"++instance ToXML CookiePreference where+    toXML CookiePreference{..} = nodes "CookiePreference"+        [ "Forward"          =@ _cpForward+        , "WhitelistedNames" =@ _cpWhitelistedNames+        ]++data OriginProtocolPolicy+    = HttpOnly    -- ^ http-only+    | MatchViewer -- ^ match-viewer+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable OriginProtocolPolicy++instance FromText OriginProtocolPolicy where+    parser = match "http-only"    HttpOnly+         <|> match "match-viewer" MatchViewer++instance ToText OriginProtocolPolicy where+    toText = \case+        HttpOnly    -> "http-only"+        MatchViewer -> "match-viewer"++instance FromXML OriginProtocolPolicy where+    parseXML = parseXMLText "OriginProtocolPolicy"++instance ToXML OriginProtocolPolicy where+    toXML = toXMLText++data Distribution = Distribution+    { _dActiveTrustedSigners          :: ActiveTrustedSigners+    , _dDistributionConfig            :: DistributionConfig+    , _dDomainName                    :: Text+    , _dId                            :: Text+    , _dInProgressInvalidationBatches :: Int+    , _dLastModifiedTime              :: RFC822+    , _dStatus                        :: Text+    } deriving (Eq, Show)++-- | 'Distribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dActiveTrustedSigners' @::@ 'ActiveTrustedSigners'+--+-- * 'dDistributionConfig' @::@ 'DistributionConfig'+--+-- * 'dDomainName' @::@ 'Text'+--+-- * 'dId' @::@ 'Text'+--+-- * 'dInProgressInvalidationBatches' @::@ 'Int'+--+-- * 'dLastModifiedTime' @::@ 'UTCTime'+--+-- * 'dStatus' @::@ 'Text'+--+distribution :: Text -- ^ 'dId'+             -> Text -- ^ 'dStatus'+             -> UTCTime -- ^ 'dLastModifiedTime'+             -> Int -- ^ 'dInProgressInvalidationBatches'+             -> Text -- ^ 'dDomainName'+             -> ActiveTrustedSigners -- ^ 'dActiveTrustedSigners'+             -> DistributionConfig -- ^ 'dDistributionConfig'+             -> Distribution+distribution p1 p2 p3 p4 p5 p6 p7 = Distribution+    { _dId                            = p1+    , _dStatus                        = p2+    , _dLastModifiedTime              = withIso _Time (const id) p3+    , _dInProgressInvalidationBatches = p4+    , _dDomainName                    = p5+    , _dActiveTrustedSigners          = p6+    , _dDistributionConfig            = p7+    }++-- | CloudFront automatically adds this element to the response only if you've+-- set up the distribution to serve private content with signed URLs. The+-- element lists the key pair IDs that CloudFront is aware of for each+-- trusted signer. The Signer child element lists the AWS account number of+-- the trusted signer (or an empty Self element if the signer is you). The+-- Signer element also includes the IDs of any active key pairs associated+-- with the trusted signer's AWS account. If no KeyPairId element appears+-- for a Signer, that signer can't create working signed URLs.+dActiveTrustedSigners :: Lens' Distribution ActiveTrustedSigners+dActiveTrustedSigners =+    lens _dActiveTrustedSigners (\s a -> s { _dActiveTrustedSigners = a })++-- | The current configuration information for the distribution.+dDistributionConfig :: Lens' Distribution DistributionConfig+dDistributionConfig =+    lens _dDistributionConfig (\s a -> s { _dDistributionConfig = a })++-- | The domain name corresponding to the distribution. For example:+-- d604721fxaaqy9.cloudfront.net.+dDomainName :: Lens' Distribution Text+dDomainName = lens _dDomainName (\s a -> s { _dDomainName = a })++-- | The identifier for the distribution. For example: EDFDVBD632BHDS5.+dId :: Lens' Distribution Text+dId = lens _dId (\s a -> s { _dId = a })++-- | The number of invalidation batches currently in progress.+dInProgressInvalidationBatches :: Lens' Distribution Int+dInProgressInvalidationBatches =+    lens _dInProgressInvalidationBatches+        (\s a -> s { _dInProgressInvalidationBatches = a })++-- | The date and time the distribution was last modified.+dLastModifiedTime :: Lens' Distribution UTCTime+dLastModifiedTime =+    lens _dLastModifiedTime (\s a -> s { _dLastModifiedTime = a })+        . _Time++-- | This response element indicates the current status of the distribution.+-- When the status is Deployed, the distribution's information is fully+-- propagated throughout the Amazon CloudFront system.+dStatus :: Lens' Distribution Text+dStatus = lens _dStatus (\s a -> s { _dStatus = a })++instance FromXML Distribution where+    parseXML x = Distribution+        <$> x .@  "ActiveTrustedSigners"+        <*> x .@  "DistributionConfig"+        <*> x .@  "DomainName"+        <*> x .@  "Id"+        <*> x .@  "InProgressInvalidationBatches"+        <*> x .@  "LastModifiedTime"+        <*> x .@  "Status"++instance ToXMLRoot Distribution where+    toXMLRoot Distribution{..} = namespaced ns "Distribution"+        [ "Id"                            =@ _dId+        , "Status"                        =@ _dStatus+        , "LastModifiedTime"              =@ _dLastModifiedTime+        , "InProgressInvalidationBatches" =@ _dInProgressInvalidationBatches+        , "DomainName"                    =@ _dDomainName+        , "ActiveTrustedSigners"          =@ _dActiveTrustedSigners+        , "DistributionConfig"            =@ _dDistributionConfig+        ]++instance ToXML Distribution++data CloudFrontOriginAccessIdentitySummary = CloudFrontOriginAccessIdentitySummary+    { _cfoaisComment           :: Text+    , _cfoaisId                :: Text+    , _cfoaisS3CanonicalUserId :: Text+    } deriving (Eq, Ord, Show)++-- | 'CloudFrontOriginAccessIdentitySummary' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cfoaisComment' @::@ 'Text'+--+-- * 'cfoaisId' @::@ 'Text'+--+-- * 'cfoaisS3CanonicalUserId' @::@ 'Text'+--+cloudFrontOriginAccessIdentitySummary :: Text -- ^ 'cfoaisId'+                                      -> Text -- ^ 'cfoaisS3CanonicalUserId'+                                      -> Text -- ^ 'cfoaisComment'+                                      -> CloudFrontOriginAccessIdentitySummary+cloudFrontOriginAccessIdentitySummary p1 p2 p3 = CloudFrontOriginAccessIdentitySummary+    { _cfoaisId                = p1+    , _cfoaisS3CanonicalUserId = p2+    , _cfoaisComment           = p3+    }++-- | The comment for this origin access identity, as originally specified when+-- created.+cfoaisComment :: Lens' CloudFrontOriginAccessIdentitySummary Text+cfoaisComment = lens _cfoaisComment (\s a -> s { _cfoaisComment = a })++-- | The ID for the origin access identity. For example: E74FTE3AJFJ256A.+cfoaisId :: Lens' CloudFrontOriginAccessIdentitySummary Text+cfoaisId = lens _cfoaisId (\s a -> s { _cfoaisId = a })++-- | The Amazon S3 canonical user ID for the origin access identity, which you+-- use when giving the origin access identity read permission to an object+-- in Amazon S3.+cfoaisS3CanonicalUserId :: Lens' CloudFrontOriginAccessIdentitySummary Text+cfoaisS3CanonicalUserId =+    lens _cfoaisS3CanonicalUserId (\s a -> s { _cfoaisS3CanonicalUserId = a })++instance FromXML CloudFrontOriginAccessIdentitySummary where+    parseXML x = CloudFrontOriginAccessIdentitySummary+        <$> x .@  "Comment"+        <*> x .@  "Id"+        <*> x .@  "S3CanonicalUserId"++instance ToXML CloudFrontOriginAccessIdentitySummary where+    toXML CloudFrontOriginAccessIdentitySummary{..} = nodes "CloudFrontOriginAccessIdentitySummary"+        [ "Id"                =@ _cfoaisId+        , "S3CanonicalUserId" =@ _cfoaisS3CanonicalUserId+        , "Comment"           =@ _cfoaisComment+        ]++data StreamingDistributionSummary = StreamingDistributionSummary+    { _sdsAliases          :: Aliases+    , _sdsComment          :: Text+    , _sdsDomainName       :: Text+    , _sdsEnabled          :: Bool+    , _sdsId               :: Text+    , _sdsLastModifiedTime :: RFC822+    , _sdsPriceClass       :: Text+    , _sdsS3Origin         :: S3Origin+    , _sdsStatus           :: Text+    , _sdsTrustedSigners   :: TrustedSigners+    } deriving (Eq, Show)++-- | 'StreamingDistributionSummary' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sdsAliases' @::@ 'Aliases'+--+-- * 'sdsComment' @::@ 'Text'+--+-- * 'sdsDomainName' @::@ 'Text'+--+-- * 'sdsEnabled' @::@ 'Bool'+--+-- * 'sdsId' @::@ 'Text'+--+-- * 'sdsLastModifiedTime' @::@ 'UTCTime'+--+-- * 'sdsPriceClass' @::@ 'Text'+--+-- * 'sdsS3Origin' @::@ 'S3Origin'+--+-- * 'sdsStatus' @::@ 'Text'+--+-- * 'sdsTrustedSigners' @::@ 'TrustedSigners'+--+streamingDistributionSummary :: Text -- ^ 'sdsId'+                             -> Text -- ^ 'sdsStatus'+                             -> UTCTime -- ^ 'sdsLastModifiedTime'+                             -> Text -- ^ 'sdsDomainName'+                             -> S3Origin -- ^ 'sdsS3Origin'+                             -> Aliases -- ^ 'sdsAliases'+                             -> TrustedSigners -- ^ 'sdsTrustedSigners'+                             -> Text -- ^ 'sdsComment'+                             -> Text -- ^ 'sdsPriceClass'+                             -> Bool -- ^ 'sdsEnabled'+                             -> StreamingDistributionSummary+streamingDistributionSummary p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 = StreamingDistributionSummary+    { _sdsId               = p1+    , _sdsStatus           = p2+    , _sdsLastModifiedTime = withIso _Time (const id) p3+    , _sdsDomainName       = p4+    , _sdsS3Origin         = p5+    , _sdsAliases          = p6+    , _sdsTrustedSigners   = p7+    , _sdsComment          = p8+    , _sdsPriceClass       = p9+    , _sdsEnabled          = p10+    }++-- | A complex type that contains information about CNAMEs (alternate domain+-- names), if any, for this streaming distribution.+sdsAliases :: Lens' StreamingDistributionSummary Aliases+sdsAliases = lens _sdsAliases (\s a -> s { _sdsAliases = a })++-- | The comment originally specified when this distribution was created.+sdsComment :: Lens' StreamingDistributionSummary Text+sdsComment = lens _sdsComment (\s a -> s { _sdsComment = a })++-- | The domain name corresponding to the distribution. For example:+-- d604721fxaaqy9.cloudfront.net.+sdsDomainName :: Lens' StreamingDistributionSummary Text+sdsDomainName = lens _sdsDomainName (\s a -> s { _sdsDomainName = a })++-- | Whether the distribution is enabled to accept end user requests for+-- content.+sdsEnabled :: Lens' StreamingDistributionSummary Bool+sdsEnabled = lens _sdsEnabled (\s a -> s { _sdsEnabled = a })++-- | The identifier for the distribution. For example: EDFDVBD632BHDS5.+sdsId :: Lens' StreamingDistributionSummary Text+sdsId = lens _sdsId (\s a -> s { _sdsId = a })++-- | The date and time the distribution was last modified.+sdsLastModifiedTime :: Lens' StreamingDistributionSummary UTCTime+sdsLastModifiedTime =+    lens _sdsLastModifiedTime (\s a -> s { _sdsLastModifiedTime = a })+        . _Time++sdsPriceClass :: Lens' StreamingDistributionSummary Text+sdsPriceClass = lens _sdsPriceClass (\s a -> s { _sdsPriceClass = a })++-- | A complex type that contains information about the Amazon S3 bucket from+-- which you want CloudFront to get your media files for distribution.+sdsS3Origin :: Lens' StreamingDistributionSummary S3Origin+sdsS3Origin = lens _sdsS3Origin (\s a -> s { _sdsS3Origin = a })++-- | Indicates the current status of the distribution. When the status is+-- Deployed, the distribution's information is fully propagated throughout+-- the Amazon CloudFront system.+sdsStatus :: Lens' StreamingDistributionSummary Text+sdsStatus = lens _sdsStatus (\s a -> s { _sdsStatus = a })++-- | A complex type that specifies the AWS accounts, if any, that you want to+-- allow to create signed URLs for private content. If you want to require+-- signed URLs in requests for objects in the target origin that match the+-- PathPattern for this cache behavior, specify true for Enabled, and+-- specify the applicable values for Quantity and Items. For more+-- information, go to Using a Signed URL to Serve Private Content in the+-- Amazon CloudFront Developer Guide. If you don't want to require signed+-- URLs in requests for objects that match PathPattern, specify false for+-- Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or+-- more trusted signers, change Enabled to true (if it's currently false),+-- change Quantity as applicable, and specify all of the trusted signers+-- that you want to include in the updated distribution.+sdsTrustedSigners :: Lens' StreamingDistributionSummary TrustedSigners+sdsTrustedSigners =+    lens _sdsTrustedSigners (\s a -> s { _sdsTrustedSigners = a })++instance FromXML StreamingDistributionSummary where+    parseXML x = StreamingDistributionSummary+        <$> x .@  "Aliases"+        <*> x .@  "Comment"+        <*> x .@  "DomainName"+        <*> x .@  "Enabled"+        <*> x .@  "Id"+        <*> x .@  "LastModifiedTime"+        <*> x .@  "PriceClass"+        <*> x .@  "S3Origin"+        <*> x .@  "Status"+        <*> x .@  "TrustedSigners"++instance ToXML StreamingDistributionSummary where+    toXML StreamingDistributionSummary{..} = nodes "StreamingDistributionSummary"+        [ "Id"               =@ _sdsId+        , "Status"           =@ _sdsStatus+        , "LastModifiedTime" =@ _sdsLastModifiedTime+        , "DomainName"       =@ _sdsDomainName+        , "S3Origin"         =@ _sdsS3Origin+        , "Aliases"          =@ _sdsAliases+        , "TrustedSigners"   =@ _sdsTrustedSigners+        , "Comment"          =@ _sdsComment+        , "PriceClass"       =@ _sdsPriceClass+        , "Enabled"          =@ _sdsEnabled+        ]++data CustomOriginConfig = CustomOriginConfig+    { _cocHTTPPort             :: Int+    , _cocHTTPSPort            :: Int+    , _cocOriginProtocolPolicy :: Text+    } deriving (Eq, Ord, Show)++-- | 'CustomOriginConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cocHTTPPort' @::@ 'Int'+--+-- * 'cocHTTPSPort' @::@ 'Int'+--+-- * 'cocOriginProtocolPolicy' @::@ 'Text'+--+customOriginConfig :: Int -- ^ 'cocHTTPPort'+                   -> Int -- ^ 'cocHTTPSPort'+                   -> Text -- ^ 'cocOriginProtocolPolicy'+                   -> CustomOriginConfig+customOriginConfig p1 p2 p3 = CustomOriginConfig+    { _cocHTTPPort             = p1+    , _cocHTTPSPort            = p2+    , _cocOriginProtocolPolicy = p3+    }++-- | The HTTP port the custom origin listens on.+cocHTTPPort :: Lens' CustomOriginConfig Int+cocHTTPPort = lens _cocHTTPPort (\s a -> s { _cocHTTPPort = a })++-- | The HTTPS port the custom origin listens on.+cocHTTPSPort :: Lens' CustomOriginConfig Int+cocHTTPSPort = lens _cocHTTPSPort (\s a -> s { _cocHTTPSPort = a })++-- | The origin protocol policy to apply to your origin.+cocOriginProtocolPolicy :: Lens' CustomOriginConfig Text+cocOriginProtocolPolicy =+    lens _cocOriginProtocolPolicy (\s a -> s { _cocOriginProtocolPolicy = a })++instance FromXML CustomOriginConfig where+    parseXML x = CustomOriginConfig+        <$> x .@  "HTTPPort"+        <*> x .@  "HTTPSPort"+        <*> x .@  "OriginProtocolPolicy"++instance ToXML CustomOriginConfig where+    toXML CustomOriginConfig{..} = nodes "CustomOriginConfig"+        [ "HTTPPort"             =@ _cocHTTPPort+        , "HTTPSPort"            =@ _cocHTTPSPort+        , "OriginProtocolPolicy" =@ _cocOriginProtocolPolicy+        ]++data Aliases = Aliases+    { _aItems    :: List "CNAME" Text+    , _aQuantity :: Int+    } deriving (Eq, Ord, Show)++-- | 'Aliases' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'aItems' @::@ ['Text']+--+-- * 'aQuantity' @::@ 'Int'+--+aliases :: Int -- ^ 'aQuantity'+        -> Aliases+aliases p1 = Aliases+    { _aQuantity = p1+    , _aItems    = mempty+    }++-- | Optional: A complex type that contains CNAME elements, if any, for this+-- distribution. If Quantity is 0, you can omit Items.+aItems :: Lens' Aliases [Text]+aItems = lens _aItems (\s a -> s { _aItems = a }) . _List++-- | The number of CNAMEs, if any, for this distribution.+aQuantity :: Lens' Aliases Int+aQuantity = lens _aQuantity (\s a -> s { _aQuantity = a })++instance FromXML Aliases where+    parseXML x = Aliases+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML Aliases where+    toXML Aliases{..} = nodes "Aliases"+        [ "Quantity" =@ _aQuantity+        , "Items"    =@ _aItems+        ]++data InvalidationBatch = InvalidationBatch+    { _ibCallerReference :: Text+    , _ibPaths           :: Paths+    } deriving (Eq, Show)++-- | 'InvalidationBatch' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ibCallerReference' @::@ 'Text'+--+-- * 'ibPaths' @::@ 'Paths'+--+invalidationBatch :: Paths -- ^ 'ibPaths'+                  -> Text -- ^ 'ibCallerReference'+                  -> InvalidationBatch+invalidationBatch p1 p2 = InvalidationBatch+    { _ibPaths           = p1+    , _ibCallerReference = p2+    }++-- | A unique name that ensures the request can't be replayed. If the+-- CallerReference is new (no matter the content of the Path object), a new+-- distribution is created. If the CallerReference is a value you already+-- sent in a previous request to create an invalidation batch, and the+-- content of each Path element is identical to the original request, the+-- response includes the same information returned to the original request.+-- If the CallerReference is a value you already sent in a previous request+-- to create a distribution but the content of any Path is different from+-- the original request, CloudFront returns an+-- InvalidationBatchAlreadyExists error.+ibCallerReference :: Lens' InvalidationBatch Text+ibCallerReference =+    lens _ibCallerReference (\s a -> s { _ibCallerReference = a })++-- | The path of the object to invalidate. The path is relative to the+-- distribution and must begin with a slash (/). You must enclose each+-- invalidation object with the Path element tags. If the path includes+-- non-ASCII characters or unsafe characters as defined in RFC 1783+-- (http://www.ietf.org/rfc/rfc1738.txt), URL encode those characters. Do+-- not URL encode any other characters in the path, or CloudFront will not+-- invalidate the old version of the updated object.+ibPaths :: Lens' InvalidationBatch Paths+ibPaths = lens _ibPaths (\s a -> s { _ibPaths = a })++instance FromXML InvalidationBatch where+    parseXML x = InvalidationBatch+        <$> x .@  "CallerReference"+        <*> x .@  "Paths"++instance ToXML InvalidationBatch where+    toXML InvalidationBatch{..} = nodes "InvalidationBatch"+        [ "Paths"           =@ _ibPaths+        , "CallerReference" =@ _ibCallerReference+        ]++data InvalidationSummary = InvalidationSummary+    { _isCreateTime :: RFC822+    , _isId         :: Text+    , _isStatus     :: Text+    } deriving (Eq, Ord, Show)++-- | 'InvalidationSummary' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'isCreateTime' @::@ 'UTCTime'+--+-- * 'isId' @::@ 'Text'+--+-- * 'isStatus' @::@ 'Text'+--+invalidationSummary :: Text -- ^ 'isId'+                    -> UTCTime -- ^ 'isCreateTime'+                    -> Text -- ^ 'isStatus'+                    -> InvalidationSummary+invalidationSummary p1 p2 p3 = InvalidationSummary+    { _isId         = p1+    , _isCreateTime = withIso _Time (const id) p2+    , _isStatus     = p3+    }++isCreateTime :: Lens' InvalidationSummary UTCTime+isCreateTime = lens _isCreateTime (\s a -> s { _isCreateTime = a }) . _Time++-- | The unique ID for an invalidation request.+isId :: Lens' InvalidationSummary Text+isId = lens _isId (\s a -> s { _isId = a })++-- | The status of an invalidation request.+isStatus :: Lens' InvalidationSummary Text+isStatus = lens _isStatus (\s a -> s { _isStatus = a })++instance FromXML InvalidationSummary where+    parseXML x = InvalidationSummary+        <$> x .@  "CreateTime"+        <*> x .@  "Id"+        <*> x .@  "Status"++instance ToXML InvalidationSummary where+    toXML InvalidationSummary{..} = nodes "InvalidationSummary"+        [ "Id"         =@ _isId+        , "CreateTime" =@ _isCreateTime+        , "Status"     =@ _isStatus+        ]++data DistributionConfig = DistributionConfig+    { _dcAliases              :: Aliases+    , _dcCacheBehaviors       :: CacheBehaviors+    , _dcCallerReference      :: Text+    , _dcComment              :: Text+    , _dcCustomErrorResponses :: Maybe CustomErrorResponses+    , _dcDefaultCacheBehavior :: DefaultCacheBehavior+    , _dcDefaultRootObject    :: Text+    , _dcEnabled              :: Bool+    , _dcLogging              :: LoggingConfig+    , _dcOrigins              :: Origins+    , _dcPriceClass           :: Text+    , _dcRestrictions         :: Maybe Restrictions+    , _dcViewerCertificate    :: Maybe ViewerCertificate+    } deriving (Eq, Show)++-- | 'DistributionConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcAliases' @::@ 'Aliases'+--+-- * 'dcCacheBehaviors' @::@ 'CacheBehaviors'+--+-- * 'dcCallerReference' @::@ 'Text'+--+-- * 'dcComment' @::@ 'Text'+--+-- * 'dcCustomErrorResponses' @::@ 'Maybe' 'CustomErrorResponses'+--+-- * 'dcDefaultCacheBehavior' @::@ 'DefaultCacheBehavior'+--+-- * 'dcDefaultRootObject' @::@ 'Text'+--+-- * 'dcEnabled' @::@ 'Bool'+--+-- * 'dcLogging' @::@ 'LoggingConfig'+--+-- * 'dcOrigins' @::@ 'Origins'+--+-- * 'dcPriceClass' @::@ 'Text'+--+-- * 'dcRestrictions' @::@ 'Maybe' 'Restrictions'+--+-- * 'dcViewerCertificate' @::@ 'Maybe' 'ViewerCertificate'+--+distributionConfig :: Text -- ^ 'dcCallerReference'+                   -> Aliases -- ^ 'dcAliases'+                   -> Text -- ^ 'dcDefaultRootObject'+                   -> Origins -- ^ 'dcOrigins'+                   -> DefaultCacheBehavior -- ^ 'dcDefaultCacheBehavior'+                   -> CacheBehaviors -- ^ 'dcCacheBehaviors'+                   -> Text -- ^ 'dcComment'+                   -> LoggingConfig -- ^ 'dcLogging'+                   -> Text -- ^ 'dcPriceClass'+                   -> Bool -- ^ 'dcEnabled'+                   -> DistributionConfig+distributionConfig p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 = DistributionConfig+    { _dcCallerReference      = p1+    , _dcAliases              = p2+    , _dcDefaultRootObject    = p3+    , _dcOrigins              = p4+    , _dcDefaultCacheBehavior = p5+    , _dcCacheBehaviors       = p6+    , _dcComment              = p7+    , _dcLogging              = p8+    , _dcPriceClass           = p9+    , _dcEnabled              = p10+    , _dcCustomErrorResponses = Nothing+    , _dcViewerCertificate    = Nothing+    , _dcRestrictions         = Nothing+    }++-- | A complex type that contains information about CNAMEs (alternate domain+-- names), if any, for this distribution.+dcAliases :: Lens' DistributionConfig Aliases+dcAliases = lens _dcAliases (\s a -> s { _dcAliases = a })++-- | A complex type that contains zero or more CacheBehavior elements.+dcCacheBehaviors :: Lens' DistributionConfig CacheBehaviors+dcCacheBehaviors = lens _dcCacheBehaviors (\s a -> s { _dcCacheBehaviors = a })++-- | A unique number that ensures the request can't be replayed. If the+-- CallerReference is new (no matter the content of the DistributionConfig+-- object), a new distribution is created. If the CallerReference is a value+-- you already sent in a previous request to create a distribution, and the+-- content of the DistributionConfig is identical to the original request+-- (ignoring white space), the response includes the same information+-- returned to the original request. If the CallerReference is a value you+-- already sent in a previous request to create a distribution but the+-- content of the DistributionConfig is different from the original request,+-- CloudFront returns a DistributionAlreadyExists error.+dcCallerReference :: Lens' DistributionConfig Text+dcCallerReference =+    lens _dcCallerReference (\s a -> s { _dcCallerReference = a })++-- | Any comments you want to include about the distribution.+dcComment :: Lens' DistributionConfig Text+dcComment = lens _dcComment (\s a -> s { _dcComment = a })++-- | A complex type that contains zero or more CustomErrorResponse elements.+dcCustomErrorResponses :: Lens' DistributionConfig (Maybe CustomErrorResponses)+dcCustomErrorResponses =+    lens _dcCustomErrorResponses (\s a -> s { _dcCustomErrorResponses = a })++-- | A complex type that describes the default cache behavior if you do not+-- specify a CacheBehavior element or if files don't match any of the values+-- of PathPattern in CacheBehavior elements.You must create exactly one+-- default cache behavior.+dcDefaultCacheBehavior :: Lens' DistributionConfig DefaultCacheBehavior+dcDefaultCacheBehavior =+    lens _dcDefaultCacheBehavior (\s a -> s { _dcDefaultCacheBehavior = a })++-- | The object that you want CloudFront to return (for example, index.html)+-- when an end user requests the root URL for your distribution+-- (http://www.example.com) instead of an object in your distribution+-- (http://www.example.com/index.html). Specifying a default root object+-- avoids exposing the contents of your distribution. If you don't want to+-- specify a default root object when you create a distribution, include an+-- empty DefaultRootObject element. To delete the default root object from+-- an existing distribution, update the distribution configuration and+-- include an empty DefaultRootObject element. To replace the default root+-- object, update the distribution configuration and specify the new object.+dcDefaultRootObject :: Lens' DistributionConfig Text+dcDefaultRootObject =+    lens _dcDefaultRootObject (\s a -> s { _dcDefaultRootObject = a })++-- | Whether the distribution is enabled to accept end user requests for+-- content.+dcEnabled :: Lens' DistributionConfig Bool+dcEnabled = lens _dcEnabled (\s a -> s { _dcEnabled = a })++-- | A complex type that controls whether access logs are written for the+-- distribution.+dcLogging :: Lens' DistributionConfig LoggingConfig+dcLogging = lens _dcLogging (\s a -> s { _dcLogging = a })++-- | A complex type that contains information about origins for this+-- distribution.+dcOrigins :: Lens' DistributionConfig Origins+dcOrigins = lens _dcOrigins (\s a -> s { _dcOrigins = a })++-- | A complex type that contains information about price class for this+-- distribution.+dcPriceClass :: Lens' DistributionConfig Text+dcPriceClass = lens _dcPriceClass (\s a -> s { _dcPriceClass = a })++dcRestrictions :: Lens' DistributionConfig (Maybe Restrictions)+dcRestrictions = lens _dcRestrictions (\s a -> s { _dcRestrictions = a })++dcViewerCertificate :: Lens' DistributionConfig (Maybe ViewerCertificate)+dcViewerCertificate =+    lens _dcViewerCertificate (\s a -> s { _dcViewerCertificate = a })++instance FromXML DistributionConfig where+    parseXML x = DistributionConfig+        <$> x .@  "Aliases"+        <*> x .@  "CacheBehaviors"+        <*> x .@  "CallerReference"+        <*> x .@  "Comment"+        <*> x .@? "CustomErrorResponses"+        <*> x .@  "DefaultCacheBehavior"+        <*> x .@  "DefaultRootObject"+        <*> x .@  "Enabled"+        <*> x .@  "Logging"+        <*> x .@  "Origins"+        <*> x .@  "PriceClass"+        <*> x .@? "Restrictions"+        <*> x .@? "ViewerCertificate"++instance ToXML DistributionConfig where+    toXML DistributionConfig{..} = nodes "DistributionConfig"+        [ "CallerReference"      =@ _dcCallerReference+        , "Aliases"              =@ _dcAliases+        , "DefaultRootObject"    =@ _dcDefaultRootObject+        , "Origins"              =@ _dcOrigins+        , "DefaultCacheBehavior" =@ _dcDefaultCacheBehavior+        , "CacheBehaviors"       =@ _dcCacheBehaviors+        , "CustomErrorResponses" =@ _dcCustomErrorResponses+        , "Comment"              =@ _dcComment+        , "Logging"              =@ _dcLogging+        , "PriceClass"           =@ _dcPriceClass+        , "Enabled"              =@ _dcEnabled+        , "ViewerCertificate"    =@ _dcViewerCertificate+        , "Restrictions"         =@ _dcRestrictions+        ]++data CacheBehavior = CacheBehavior+    { _cbAllowedMethods       :: Maybe AllowedMethods+    , _cbForwardedValues      :: ForwardedValues+    , _cbMinTTL               :: Integer+    , _cbPathPattern          :: Text+    , _cbSmoothStreaming      :: Maybe Bool+    , _cbTargetOriginId       :: Text+    , _cbTrustedSigners       :: TrustedSigners+    , _cbViewerProtocolPolicy :: Text+    } deriving (Eq, Show)++-- | 'CacheBehavior' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cbAllowedMethods' @::@ 'Maybe' 'AllowedMethods'+--+-- * 'cbForwardedValues' @::@ 'ForwardedValues'+--+-- * 'cbMinTTL' @::@ 'Integer'+--+-- * 'cbPathPattern' @::@ 'Text'+--+-- * 'cbSmoothStreaming' @::@ 'Maybe' 'Bool'+--+-- * 'cbTargetOriginId' @::@ 'Text'+--+-- * 'cbTrustedSigners' @::@ 'TrustedSigners'+--+-- * 'cbViewerProtocolPolicy' @::@ 'Text'+--+cacheBehavior :: Text -- ^ 'cbPathPattern'+              -> Text -- ^ 'cbTargetOriginId'+              -> ForwardedValues -- ^ 'cbForwardedValues'+              -> TrustedSigners -- ^ 'cbTrustedSigners'+              -> Text -- ^ 'cbViewerProtocolPolicy'+              -> Integer -- ^ 'cbMinTTL'+              -> CacheBehavior+cacheBehavior p1 p2 p3 p4 p5 p6 = CacheBehavior+    { _cbPathPattern          = p1+    , _cbTargetOriginId       = p2+    , _cbForwardedValues      = p3+    , _cbTrustedSigners       = p4+    , _cbViewerProtocolPolicy = p5+    , _cbMinTTL               = p6+    , _cbAllowedMethods       = Nothing+    , _cbSmoothStreaming      = Nothing+    }++cbAllowedMethods :: Lens' CacheBehavior (Maybe AllowedMethods)+cbAllowedMethods = lens _cbAllowedMethods (\s a -> s { _cbAllowedMethods = a })++-- | A complex type that specifies how CloudFront handles query strings,+-- cookies and headers.+cbForwardedValues :: Lens' CacheBehavior ForwardedValues+cbForwardedValues =+    lens _cbForwardedValues (\s a -> s { _cbForwardedValues = a })++-- | The minimum amount of time that you want objects to stay in CloudFront+-- caches before CloudFront queries your origin to see whether the object+-- has been updated.You can specify a value from 0 to 3,153,600,000 seconds+-- (100 years).+cbMinTTL :: Lens' CacheBehavior Integer+cbMinTTL = lens _cbMinTTL (\s a -> s { _cbMinTTL = a })++-- | The pattern (for example, images/*.jpg) that specifies which requests you+-- want this cache behavior to apply to. When CloudFront receives an+-- end-user request, the requested path is compared with path patterns in+-- the order in which cache behaviors are listed in the distribution. The+-- path pattern for the default cache behavior is * and cannot be changed.+-- If the request for an object does not match the path pattern for any+-- cache behaviors, CloudFront applies the behavior in the default cache+-- behavior.+cbPathPattern :: Lens' CacheBehavior Text+cbPathPattern = lens _cbPathPattern (\s a -> s { _cbPathPattern = a })++-- | Indicates whether you want to distribute media files in Microsoft Smooth+-- Streaming format using the origin that is associated with this cache+-- behavior. If so, specify true; if not, specify false.+cbSmoothStreaming :: Lens' CacheBehavior (Maybe Bool)+cbSmoothStreaming =+    lens _cbSmoothStreaming (\s a -> s { _cbSmoothStreaming = a })++-- | The value of ID for the origin that you want CloudFront to route requests+-- to when a request matches the path pattern either for a cache behavior or+-- for the default cache behavior.+cbTargetOriginId :: Lens' CacheBehavior Text+cbTargetOriginId = lens _cbTargetOriginId (\s a -> s { _cbTargetOriginId = a })++-- | A complex type that specifies the AWS accounts, if any, that you want to+-- allow to create signed URLs for private content. If you want to require+-- signed URLs in requests for objects in the target origin that match the+-- PathPattern for this cache behavior, specify true for Enabled, and+-- specify the applicable values for Quantity and Items. For more+-- information, go to Using a Signed URL to Serve Private Content in the+-- Amazon CloudFront Developer Guide. If you don't want to require signed+-- URLs in requests for objects that match PathPattern, specify false for+-- Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or+-- more trusted signers, change Enabled to true (if it's currently false),+-- change Quantity as applicable, and specify all of the trusted signers+-- that you want to include in the updated distribution.+cbTrustedSigners :: Lens' CacheBehavior TrustedSigners+cbTrustedSigners = lens _cbTrustedSigners (\s a -> s { _cbTrustedSigners = a })++-- | Use this element to specify the protocol that users can use to access the+-- files in the origin specified by TargetOriginId when a request matches+-- the path pattern in PathPattern. If you want CloudFront to allow end+-- users to use any available protocol, specify allow-all. If you want+-- CloudFront to require HTTPS, specify https. If you want CloudFront to+-- respond to an HTTP request with an HTTP status code of 301 (Moved+-- Permanently) and the HTTPS URL, specify redirect-to-https. The viewer+-- then resubmits the request using the HTTPS URL.+cbViewerProtocolPolicy :: Lens' CacheBehavior Text+cbViewerProtocolPolicy =+    lens _cbViewerProtocolPolicy (\s a -> s { _cbViewerProtocolPolicy = a })++instance FromXML CacheBehavior where+    parseXML x = CacheBehavior+        <$> x .@? "AllowedMethods"+        <*> x .@  "ForwardedValues"+        <*> x .@  "MinTTL"+        <*> x .@  "PathPattern"+        <*> x .@? "SmoothStreaming"+        <*> x .@  "TargetOriginId"+        <*> x .@  "TrustedSigners"+        <*> x .@  "ViewerProtocolPolicy"++instance ToXML CacheBehavior where+    toXML CacheBehavior{..} = nodes "CacheBehavior"+        [ "PathPattern"          =@ _cbPathPattern+        , "TargetOriginId"       =@ _cbTargetOriginId+        , "ForwardedValues"      =@ _cbForwardedValues+        , "TrustedSigners"       =@ _cbTrustedSigners+        , "ViewerProtocolPolicy" =@ _cbViewerProtocolPolicy+        , "MinTTL"               =@ _cbMinTTL+        , "AllowedMethods"       =@ _cbAllowedMethods+        , "SmoothStreaming"      =@ _cbSmoothStreaming+        ]++data DistributionList = DistributionList+    { _dlIsTruncated :: Bool+    , _dlItems       :: List "DistributionSummary" DistributionSummary+    , _dlMarker      :: Text+    , _dlMaxItems    :: Int+    , _dlNextMarker  :: Maybe Text+    , _dlQuantity    :: Int+    } deriving (Eq, Show)++-- | 'DistributionList' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dlIsTruncated' @::@ 'Bool'+--+-- * 'dlItems' @::@ ['DistributionSummary']+--+-- * 'dlMarker' @::@ 'Text'+--+-- * 'dlMaxItems' @::@ 'Int'+--+-- * 'dlNextMarker' @::@ 'Maybe' 'Text'+--+-- * 'dlQuantity' @::@ 'Int'+--+distributionList :: Text -- ^ 'dlMarker'+                 -> Int -- ^ 'dlMaxItems'+                 -> Bool -- ^ 'dlIsTruncated'+                 -> Int -- ^ 'dlQuantity'+                 -> DistributionList+distributionList p1 p2 p3 p4 = DistributionList+    { _dlMarker      = p1+    , _dlMaxItems    = p2+    , _dlIsTruncated = p3+    , _dlQuantity    = p4+    , _dlNextMarker  = Nothing+    , _dlItems       = mempty+    }++-- | A flag that indicates whether more distributions remain to be listed. If+-- your results were truncated, you can make a follow-up pagination request+-- using the Marker request parameter to retrieve more distributions in the+-- list.+dlIsTruncated :: Lens' DistributionList Bool+dlIsTruncated = lens _dlIsTruncated (\s a -> s { _dlIsTruncated = a })++-- | A complex type that contains one DistributionSummary element for each+-- distribution that was created by the current AWS account.+dlItems :: Lens' DistributionList [DistributionSummary]+dlItems = lens _dlItems (\s a -> s { _dlItems = a }) . _List++-- | The value you provided for the Marker request parameter.+dlMarker :: Lens' DistributionList Text+dlMarker = lens _dlMarker (\s a -> s { _dlMarker = a })++-- | The value you provided for the MaxItems request parameter.+dlMaxItems :: Lens' DistributionList Int+dlMaxItems = lens _dlMaxItems (\s a -> s { _dlMaxItems = a })++-- | If IsTruncated is true, this element is present and contains the value+-- you can use for the Marker request parameter to continue listing your+-- distributions where they left off.+dlNextMarker :: Lens' DistributionList (Maybe Text)+dlNextMarker = lens _dlNextMarker (\s a -> s { _dlNextMarker = a })++-- | The number of distributions that were created by the current AWS account.+dlQuantity :: Lens' DistributionList Int+dlQuantity = lens _dlQuantity (\s a -> s { _dlQuantity = a })++instance FromXML DistributionList where+    parseXML x = DistributionList+        <$> x .@  "IsTruncated"+        <*> x .@  "Items"+        <*> x .@  "Marker"+        <*> x .@  "MaxItems"+        <*> x .@? "NextMarker"+        <*> x .@  "Quantity"++instance ToXML DistributionList where+    toXML DistributionList{..} = nodes "DistributionList"+        [ "Marker"      =@ _dlMarker+        , "NextMarker"  =@ _dlNextMarker+        , "MaxItems"    =@ _dlMaxItems+        , "IsTruncated" =@ _dlIsTruncated+        , "Quantity"    =@ _dlQuantity+        , "Items"       =@ _dlItems+        ]++data KeyPairIds = KeyPairIds+    { _kpiItems    :: List "KeyPairId" Text+    , _kpiQuantity :: Int+    } deriving (Eq, Ord, Show)++-- | 'KeyPairIds' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'kpiItems' @::@ ['Text']+--+-- * 'kpiQuantity' @::@ 'Int'+--+keyPairIds :: Int -- ^ 'kpiQuantity'+           -> KeyPairIds+keyPairIds p1 = KeyPairIds+    { _kpiQuantity = p1+    , _kpiItems    = mempty+    }++-- | A complex type that lists the active CloudFront key pairs, if any, that+-- are associated with AwsAccountNumber.+kpiItems :: Lens' KeyPairIds [Text]+kpiItems = lens _kpiItems (\s a -> s { _kpiItems = a }) . _List++-- | The number of active CloudFront key pairs for AwsAccountNumber.+kpiQuantity :: Lens' KeyPairIds Int+kpiQuantity = lens _kpiQuantity (\s a -> s { _kpiQuantity = a })++instance FromXML KeyPairIds where+    parseXML x = KeyPairIds+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML KeyPairIds where+    toXML KeyPairIds{..} = nodes "KeyPairIds"+        [ "Quantity" =@ _kpiQuantity+        , "Items"    =@ _kpiItems+        ]++data PriceClass+    = PriceClass100 -- ^ PriceClass_100+    | PriceClass200 -- ^ PriceClass_200+    | PriceClassAll -- ^ PriceClass_All+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable PriceClass++instance FromText PriceClass where+    parser = match "PriceClass_100" PriceClass100+         <|> match "PriceClass_200" PriceClass200+         <|> match "PriceClass_All" PriceClassAll++instance ToText PriceClass where+    toText = \case+        PriceClass100 -> "PriceClass_100"+        PriceClass200 -> "PriceClass_200"+        PriceClassAll -> "PriceClass_All"++instance FromXML PriceClass where+    parseXML = parseXMLText "PriceClass"++instance ToXML PriceClass where+    toXML = toXMLText++data CustomErrorResponses = CustomErrorResponses+    { _cerItems    :: List "CustomErrorResponse" CustomErrorResponse+    , _cerQuantity :: Int+    } deriving (Eq, Show)++-- | 'CustomErrorResponses' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cerItems' @::@ ['CustomErrorResponse']+--+-- * 'cerQuantity' @::@ 'Int'+--+customErrorResponses :: Int -- ^ 'cerQuantity'+                     -> CustomErrorResponses+customErrorResponses p1 = CustomErrorResponses+    { _cerQuantity = p1+    , _cerItems    = mempty+    }++-- | Optional: A complex type that contains custom error responses for this+-- distribution. If Quantity is 0, you can omit Items.+cerItems :: Lens' CustomErrorResponses [CustomErrorResponse]+cerItems = lens _cerItems (\s a -> s { _cerItems = a }) . _List++-- | The number of custom error responses for this distribution.+cerQuantity :: Lens' CustomErrorResponses Int+cerQuantity = lens _cerQuantity (\s a -> s { _cerQuantity = a })++instance FromXML CustomErrorResponses where+    parseXML x = CustomErrorResponses+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML CustomErrorResponses where+    toXML CustomErrorResponses{..} = nodes "CustomErrorResponses"+        [ "Quantity" =@ _cerQuantity+        , "Items"    =@ _cerItems+        ]++newtype S3OriginConfig = S3OriginConfig+    { _socOriginAccessIdentity :: Text+    } deriving (Eq, Ord, Show, Monoid, IsString)++-- | 'S3OriginConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'socOriginAccessIdentity' @::@ 'Text'+--+s3OriginConfig :: Text -- ^ 'socOriginAccessIdentity'+               -> S3OriginConfig+s3OriginConfig p1 = S3OriginConfig+    { _socOriginAccessIdentity = p1+    }++-- | The CloudFront origin access identity to associate with the origin. Use+-- an origin access identity to configure the origin so that end users can+-- only access objects in an Amazon S3 bucket through CloudFront. If you+-- want end users to be able to access objects using either the CloudFront+-- URL or the Amazon S3 URL, specify an empty OriginAccessIdentity element.+-- To delete the origin access identity from an existing distribution,+-- update the distribution configuration and include an empty+-- OriginAccessIdentity element. To replace the origin access identity,+-- update the distribution configuration and specify the new origin access+-- identity. Use the format origin-access-identity/cloudfront/Id where Id is+-- the value that CloudFront returned in the Id element when you created the+-- origin access identity.+socOriginAccessIdentity :: Lens' S3OriginConfig Text+socOriginAccessIdentity =+    lens _socOriginAccessIdentity (\s a -> s { _socOriginAccessIdentity = a })++instance FromXML S3OriginConfig where+    parseXML x = S3OriginConfig+        <$> x .@  "OriginAccessIdentity"++instance ToXML S3OriginConfig where+    toXML S3OriginConfig{..} = nodes "S3OriginConfig"+        [ "OriginAccessIdentity" =@ _socOriginAccessIdentity+        ]++data GeoRestriction = GeoRestriction+    { _grItems           :: List "Location" Text+    , _grQuantity        :: Int+    , _grRestrictionType :: Text+    } deriving (Eq, Ord, Show)++-- | 'GeoRestriction' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'grItems' @::@ ['Text']+--+-- * 'grQuantity' @::@ 'Int'+--+-- * 'grRestrictionType' @::@ 'Text'+--+geoRestriction :: Text -- ^ 'grRestrictionType'+               -> Int -- ^ 'grQuantity'+               -> GeoRestriction+geoRestriction p1 p2 = GeoRestriction+    { _grRestrictionType = p1+    , _grQuantity        = p2+    , _grItems           = mempty+    }++-- | A complex type that contains a Location element for each country in which+-- you want CloudFront either to distribute your content (whitelist) or not+-- distribute your content (blacklist). The Location element is a+-- two-letter, uppercase country code for a country that you want to include+-- in your blacklist or whitelist. Include one Location element for each+-- country. CloudFront and MaxMind both use ISO 3166 country codes. For the+-- current list of countries and the corresponding codes, see ISO+-- 3166-1-alpha-2 code on the International Organization for Standardization+-- website. You can also refer to the country list in the CloudFront+-- console, which includes both country names and codes.+grItems :: Lens' GeoRestriction [Text]+grItems = lens _grItems (\s a -> s { _grItems = a }) . _List++-- | When geo restriction is enabled, this is the number of countries in your+-- whitelist or blacklist. Otherwise, when it is not enabled, Quantity is 0,+-- and you can omit Items.+grQuantity :: Lens' GeoRestriction Int+grQuantity = lens _grQuantity (\s a -> s { _grQuantity = a })++-- | The method that you want to use to restrict distribution of your content+-- by country: - none: No geo restriction is enabled, meaning access to+-- content is not restricted by client geo location. - blacklist: The+-- Location elements specify the countries in which you do not want+-- CloudFront to distribute your content. - whitelist: The Location elements+-- specify the countries in which you want CloudFront to distribute your+-- content.+grRestrictionType :: Lens' GeoRestriction Text+grRestrictionType =+    lens _grRestrictionType (\s a -> s { _grRestrictionType = a })++instance FromXML GeoRestriction where+    parseXML x = GeoRestriction+        <$> x .@  "Items"+        <*> x .@  "Quantity"+        <*> x .@  "RestrictionType"++instance ToXML GeoRestriction where+    toXML GeoRestriction{..} = nodes "GeoRestriction"+        [ "RestrictionType" =@ _grRestrictionType+        , "Quantity"        =@ _grQuantity+        , "Items"           =@ _grItems+        ]++data S3Origin = S3Origin+    { _soDomainName           :: Text+    , _soOriginAccessIdentity :: Text+    } deriving (Eq, Ord, Show)++-- | 'S3Origin' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'soDomainName' @::@ 'Text'+--+-- * 'soOriginAccessIdentity' @::@ 'Text'+--+s3Origin :: Text -- ^ 'soDomainName'+         -> Text -- ^ 'soOriginAccessIdentity'+         -> S3Origin+s3Origin p1 p2 = S3Origin+    { _soDomainName           = p1+    , _soOriginAccessIdentity = p2+    }++-- | The DNS name of the S3 origin.+soDomainName :: Lens' S3Origin Text+soDomainName = lens _soDomainName (\s a -> s { _soDomainName = a })++-- | Your S3 origin's origin access identity.+soOriginAccessIdentity :: Lens' S3Origin Text+soOriginAccessIdentity =+    lens _soOriginAccessIdentity (\s a -> s { _soOriginAccessIdentity = a })++instance FromXML S3Origin where+    parseXML x = S3Origin+        <$> x .@  "DomainName"+        <*> x .@  "OriginAccessIdentity"++instance ToXML S3Origin where+    toXML S3Origin{..} = nodes "S3Origin"+        [ "DomainName"           =@ _soDomainName+        , "OriginAccessIdentity" =@ _soOriginAccessIdentity+        ]++data Headers = Headers+    { _hItems    :: List "Name" Text+    , _hQuantity :: Int+    } deriving (Eq, Ord, Show)++-- | 'Headers' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'hItems' @::@ ['Text']+--+-- * 'hQuantity' @::@ 'Int'+--+headers :: Int -- ^ 'hQuantity'+        -> Headers+headers p1 = Headers+    { _hQuantity = p1+    , _hItems    = mempty+    }++-- | Optional: A complex type that contains a Name element for each header+-- that you want CloudFront to forward to the origin and to vary on for this+-- cache behavior. If Quantity is 0, omit Items.+hItems :: Lens' Headers [Text]+hItems = lens _hItems (\s a -> s { _hItems = a }) . _List++-- | The number of different headers that you want CloudFront to forward to+-- the origin and to vary on for this cache behavior. The maximum number of+-- headers that you can specify by name is 10. If you want CloudFront to+-- forward all headers to the origin and vary on all of them, specify 1 for+-- Quantity and * for Name. If you don't want CloudFront to forward any+-- additional headers to the origin or to vary on any headers, specify 0 for+-- Quantity and omit Items.+hQuantity :: Lens' Headers Int+hQuantity = lens _hQuantity (\s a -> s { _hQuantity = a })++instance FromXML Headers where+    parseXML x = Headers+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML Headers where+    toXML Headers{..} = nodes "Headers"+        [ "Quantity" =@ _hQuantity+        , "Items"    =@ _hItems+        ]++data ViewerCertificate = ViewerCertificate+    { _vcCloudFrontDefaultCertificate :: Maybe Bool+    , _vcIAMCertificateId             :: Maybe Text+    , _vcSSLSupportMethod             :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'ViewerCertificate' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'vcCloudFrontDefaultCertificate' @::@ 'Maybe' 'Bool'+--+-- * 'vcIAMCertificateId' @::@ 'Maybe' 'Text'+--+-- * 'vcSSLSupportMethod' @::@ 'Maybe' 'Text'+--+viewerCertificate :: ViewerCertificate+viewerCertificate = ViewerCertificate+    { _vcIAMCertificateId             = Nothing+    , _vcCloudFrontDefaultCertificate = Nothing+    , _vcSSLSupportMethod             = Nothing+    }++-- | If you want viewers to use HTTPS to request your objects and you're using+-- the CloudFront domain name of your distribution in your object URLs (for+-- example, https://d111111abcdef8.cloudfront.net/logo.jpg), set to true.+-- Omit this value if you are setting an IAMCertificateId.+vcCloudFrontDefaultCertificate :: Lens' ViewerCertificate (Maybe Bool)+vcCloudFrontDefaultCertificate =+    lens _vcCloudFrontDefaultCertificate+        (\s a -> s { _vcCloudFrontDefaultCertificate = a })++-- | If you want viewers to use HTTPS to request your objects and you're using+-- an alternate domain name in your object URLs (for example,+-- https://example.com/logo.jpg), specify the IAM certificate identifier of+-- the custom viewer certificate for this distribution. Specify either this+-- value or CloudFrontDefaultCertificate.+vcIAMCertificateId :: Lens' ViewerCertificate (Maybe Text)+vcIAMCertificateId =+    lens _vcIAMCertificateId (\s a -> s { _vcIAMCertificateId = a })++-- | If you specify a value for IAMCertificateId, you must also specify how+-- you want CloudFront to serve HTTPS requests. Valid values are vip and+-- sni-only. If you specify vip, CloudFront uses dedicated IP addresses for+-- your content and can respond to HTTPS requests from any viewer. However,+-- you must request permission to use this feature, and you incur additional+-- monthly charges. If you specify sni-only, CloudFront can only respond to+-- HTTPS requests from viewers that support Server Name Indication (SNI).+-- All modern browsers support SNI, but some browsers still in use don't+-- support SNI. Do not specify a value for SSLSupportMethod if you specified+-- true for CloudFrontDefaultCertificate.+vcSSLSupportMethod :: Lens' ViewerCertificate (Maybe Text)+vcSSLSupportMethod =+    lens _vcSSLSupportMethod (\s a -> s { _vcSSLSupportMethod = a })++instance FromXML ViewerCertificate where+    parseXML x = ViewerCertificate+        <$> x .@? "CloudFrontDefaultCertificate"+        <*> x .@? "IAMCertificateId"+        <*> x .@? "SSLSupportMethod"++instance ToXML ViewerCertificate where+    toXML ViewerCertificate{..} = nodes "ViewerCertificate"+        [ "IAMCertificateId"             =@ _vcIAMCertificateId+        , "CloudFrontDefaultCertificate" =@ _vcCloudFrontDefaultCertificate+        , "SSLSupportMethod"             =@ _vcSSLSupportMethod+        ]++newtype Restrictions = Restrictions+    { _rGeoRestriction :: GeoRestriction+    } deriving (Eq, Show)++-- | 'Restrictions' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'rGeoRestriction' @::@ 'GeoRestriction'+--+restrictions :: GeoRestriction -- ^ 'rGeoRestriction'+             -> Restrictions+restrictions p1 = Restrictions+    { _rGeoRestriction = p1+    }++rGeoRestriction :: Lens' Restrictions GeoRestriction+rGeoRestriction = lens _rGeoRestriction (\s a -> s { _rGeoRestriction = a })++instance FromXML Restrictions where+    parseXML x = Restrictions+        <$> x .@  "GeoRestriction"++instance ToXML Restrictions where+    toXML Restrictions{..} = nodes "Restrictions"+        [ "GeoRestriction" =@ _rGeoRestriction+        ]++data Origins = Origins+    { _oItems    :: List1 "Origin" Origin+    , _oQuantity :: Int+    } deriving (Eq, Show)++-- | 'Origins' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'oItems' @::@ 'NonEmpty' 'Origin'+--+-- * 'oQuantity' @::@ 'Int'+--+origins :: Int -- ^ 'oQuantity'+        -> NonEmpty Origin -- ^ 'oItems'+        -> Origins+origins p1 p2 = Origins+    { _oQuantity = p1+    , _oItems    = withIso _List1 (const id) p2+    }++-- | A complex type that contains origins for this distribution.+oItems :: Lens' Origins (NonEmpty Origin)+oItems = lens _oItems (\s a -> s { _oItems = a }) . _List1++-- | The number of origins for this distribution.+oQuantity :: Lens' Origins Int+oQuantity = lens _oQuantity (\s a -> s { _oQuantity = a })++instance FromXML Origins where+    parseXML x = Origins+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML Origins where+    toXML Origins{..} = nodes "Origins"+        [ "Quantity" =@ _oQuantity+        , "Items"    =@ _oItems+        ]++data Method+    = Delete' -- ^ DELETE+    | Get     -- ^ GET+    | Head'   -- ^ HEAD+    | Options -- ^ OPTIONS+    | Patch   -- ^ PATCH+    | Post    -- ^ POST+    | Put     -- ^ PUT+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable Method++instance FromText Method where+    parser = match "DELETE"  Delete'+         <|> match "GET"     Get+         <|> match "HEAD"    Head'+         <|> match "OPTIONS" Options+         <|> match "PATCH"   Patch+         <|> match "POST"    Post+         <|> match "PUT"     Put++instance ToText Method where+    toText = \case+        Delete' -> "DELETE"+        Get     -> "GET"+        Head'   -> "HEAD"+        Options -> "OPTIONS"+        Patch   -> "PATCH"+        Post    -> "POST"+        Put     -> "PUT"++instance FromXML Method where+    parseXML = parseXMLText "Method"++instance ToXML Method where+    toXML = toXMLText++data ForwardedValues = ForwardedValues+    { _fvCookies     :: CookiePreference+    , _fvHeaders     :: Maybe Headers+    , _fvQueryString :: Bool+    } deriving (Eq, Show)++-- | 'ForwardedValues' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'fvCookies' @::@ 'CookiePreference'+--+-- * 'fvHeaders' @::@ 'Maybe' 'Headers'+--+-- * 'fvQueryString' @::@ 'Bool'+--+forwardedValues :: Bool -- ^ 'fvQueryString'+                -> CookiePreference -- ^ 'fvCookies'+                -> ForwardedValues+forwardedValues p1 p2 = ForwardedValues+    { _fvQueryString = p1+    , _fvCookies     = p2+    , _fvHeaders     = Nothing+    }++-- | A complex type that specifies how CloudFront handles cookies.+fvCookies :: Lens' ForwardedValues CookiePreference+fvCookies = lens _fvCookies (\s a -> s { _fvCookies = a })++-- | A complex type that specifies the Headers, if any, that you want+-- CloudFront to vary upon for this cache behavior.+fvHeaders :: Lens' ForwardedValues (Maybe Headers)+fvHeaders = lens _fvHeaders (\s a -> s { _fvHeaders = a })++-- | Indicates whether you want CloudFront to forward query strings to the+-- origin that is associated with this cache behavior. If so, specify true;+-- if not, specify false.+fvQueryString :: Lens' ForwardedValues Bool+fvQueryString = lens _fvQueryString (\s a -> s { _fvQueryString = a })++instance FromXML ForwardedValues where+    parseXML x = ForwardedValues+        <$> x .@  "Cookies"+        <*> x .@? "Headers"+        <*> x .@  "QueryString"++instance ToXML ForwardedValues where+    toXML ForwardedValues{..} = nodes "ForwardedValues"+        [ "QueryString" =@ _fvQueryString+        , "Cookies"     =@ _fvCookies+        , "Headers"     =@ _fvHeaders+        ]++data TrustedSigners = TrustedSigners+    { _tsEnabled  :: Bool+    , _tsItems    :: List "AwsAccountNumber" Text+    , _tsQuantity :: Int+    } deriving (Eq, Ord, Show)++-- | 'TrustedSigners' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'tsEnabled' @::@ 'Bool'+--+-- * 'tsItems' @::@ ['Text']+--+-- * 'tsQuantity' @::@ 'Int'+--+trustedSigners :: Bool -- ^ 'tsEnabled'+               -> Int -- ^ 'tsQuantity'+               -> TrustedSigners+trustedSigners p1 p2 = TrustedSigners+    { _tsEnabled  = p1+    , _tsQuantity = p2+    , _tsItems    = mempty+    }++-- | Specifies whether you want to require end users to use signed URLs to+-- access the files specified by PathPattern and TargetOriginId.+tsEnabled :: Lens' TrustedSigners Bool+tsEnabled = lens _tsEnabled (\s a -> s { _tsEnabled = a })++-- | Optional: A complex type that contains trusted signers for this cache+-- behavior. If Quantity is 0, you can omit Items.+tsItems :: Lens' TrustedSigners [Text]+tsItems = lens _tsItems (\s a -> s { _tsItems = a }) . _List++-- | The number of trusted signers for this cache behavior.+tsQuantity :: Lens' TrustedSigners Int+tsQuantity = lens _tsQuantity (\s a -> s { _tsQuantity = a })++instance FromXML TrustedSigners where+    parseXML x = TrustedSigners+        <$> x .@  "Enabled"+        <*> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML TrustedSigners where+    toXML TrustedSigners{..} = nodes "TrustedSigners"+        [ "Enabled"  =@ _tsEnabled+        , "Quantity" =@ _tsQuantity+        , "Items"    =@ _tsItems+        ]++data ItemSelection+    = All       -- ^ all+    | None      -- ^ none+    | Whitelist -- ^ whitelist+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable ItemSelection++instance FromText ItemSelection where+    parser = match "all"       All+         <|> match "none"      None+         <|> match "whitelist" Whitelist++instance ToText ItemSelection where+    toText = \case+        All       -> "all"+        None      -> "none"+        Whitelist -> "whitelist"++instance FromXML ItemSelection where+    parseXML = parseXMLText "ItemSelection"++instance ToXML ItemSelection where+    toXML = toXMLText++data StreamingLoggingConfig = StreamingLoggingConfig+    { _slcBucket  :: Text+    , _slcEnabled :: Bool+    , _slcPrefix  :: Text+    } deriving (Eq, Ord, Show)++-- | 'StreamingLoggingConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'slcBucket' @::@ 'Text'+--+-- * 'slcEnabled' @::@ 'Bool'+--+-- * 'slcPrefix' @::@ 'Text'+--+streamingLoggingConfig :: Bool -- ^ 'slcEnabled'+                       -> Text -- ^ 'slcBucket'+                       -> Text -- ^ 'slcPrefix'+                       -> StreamingLoggingConfig+streamingLoggingConfig p1 p2 p3 = StreamingLoggingConfig+    { _slcEnabled = p1+    , _slcBucket  = p2+    , _slcPrefix  = p3+    }++-- | The Amazon S3 bucket to store the access logs in, for example,+-- myawslogbucket.s3.amazonaws.com.+slcBucket :: Lens' StreamingLoggingConfig Text+slcBucket = lens _slcBucket (\s a -> s { _slcBucket = a })++-- | Specifies whether you want CloudFront to save access logs to an Amazon S3+-- bucket. If you do not want to enable logging when you create a streaming+-- distribution or if you want to disable logging for an existing streaming+-- distribution, specify false for Enabled, and specify empty Bucket and+-- Prefix elements. If you specify false for Enabled but you specify values+-- for Bucket and Prefix, the values are automatically deleted.+slcEnabled :: Lens' StreamingLoggingConfig Bool+slcEnabled = lens _slcEnabled (\s a -> s { _slcEnabled = a })++-- | An optional string that you want CloudFront to prefix to the access log+-- filenames for this streaming distribution, for example, myprefix/. If you+-- want to enable logging, but you do not want to specify a prefix, you+-- still must include an empty Prefix element in the Logging element.+slcPrefix :: Lens' StreamingLoggingConfig Text+slcPrefix = lens _slcPrefix (\s a -> s { _slcPrefix = a })++instance FromXML StreamingLoggingConfig where+    parseXML x = StreamingLoggingConfig+        <$> x .@  "Bucket"+        <*> x .@  "Enabled"+        <*> x .@  "Prefix"++instance ToXML StreamingLoggingConfig where+    toXML StreamingLoggingConfig{..} = nodes "StreamingLoggingConfig"+        [ "Enabled" =@ _slcEnabled+        , "Bucket"  =@ _slcBucket+        , "Prefix"  =@ _slcPrefix+        ]++data CookieNames = CookieNames+    { _cnItems    :: List "Name" Text+    , _cnQuantity :: Int+    } deriving (Eq, Ord, Show)++-- | 'CookieNames' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cnItems' @::@ ['Text']+--+-- * 'cnQuantity' @::@ 'Int'+--+cookieNames :: Int -- ^ 'cnQuantity'+            -> CookieNames+cookieNames p1 = CookieNames+    { _cnQuantity = p1+    , _cnItems    = mempty+    }++-- | Optional: A complex type that contains whitelisted cookies for this cache+-- behavior. If Quantity is 0, you can omit Items.+cnItems :: Lens' CookieNames [Text]+cnItems = lens _cnItems (\s a -> s { _cnItems = a }) . _List++-- | The number of whitelisted cookies for this cache behavior.+cnQuantity :: Lens' CookieNames Int+cnQuantity = lens _cnQuantity (\s a -> s { _cnQuantity = a })++instance FromXML CookieNames where+    parseXML x = CookieNames+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML CookieNames where+    toXML CookieNames{..} = nodes "CookieNames"+        [ "Quantity" =@ _cnQuantity+        , "Items"    =@ _cnItems+        ]++data CustomErrorResponse = CustomErrorResponse+    { _cerErrorCachingMinTTL :: Maybe Integer+    , _cerErrorCode          :: Int+    , _cerResponseCode       :: Maybe Text+    , _cerResponsePagePath   :: Maybe Text+    } deriving (Eq, Ord, Show)++-- | 'CustomErrorResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cerErrorCachingMinTTL' @::@ 'Maybe' 'Integer'+--+-- * 'cerErrorCode' @::@ 'Int'+--+-- * 'cerResponseCode' @::@ 'Maybe' 'Text'+--+-- * 'cerResponsePagePath' @::@ 'Maybe' 'Text'+--+customErrorResponse :: Int -- ^ 'cerErrorCode'+                    -> CustomErrorResponse+customErrorResponse p1 = CustomErrorResponse+    { _cerErrorCode          = p1+    , _cerResponsePagePath   = Nothing+    , _cerResponseCode       = Nothing+    , _cerErrorCachingMinTTL = Nothing+    }++-- | The minimum amount of time you want HTTP error codes to stay in+-- CloudFront caches before CloudFront queries your origin to see whether+-- the object has been updated. You can specify a value from 0 to+-- 31,536,000.+cerErrorCachingMinTTL :: Lens' CustomErrorResponse (Maybe Integer)+cerErrorCachingMinTTL =+    lens _cerErrorCachingMinTTL (\s a -> s { _cerErrorCachingMinTTL = a })++-- | The 4xx or 5xx HTTP status code that you want to customize. For a list of+-- HTTP status codes that you can customize, see CloudFront documentation.+cerErrorCode :: Lens' CustomErrorResponse Int+cerErrorCode = lens _cerErrorCode (\s a -> s { _cerErrorCode = a })++-- | The HTTP status code that you want CloudFront to return with the custom+-- error page to the viewer. For a list of HTTP status codes that you can+-- replace, see CloudFront Documentation.+cerResponseCode :: Lens' CustomErrorResponse (Maybe Text)+cerResponseCode = lens _cerResponseCode (\s a -> s { _cerResponseCode = a })++-- | The path of the custom error page (for example, /custom_404.html). The+-- path is relative to the distribution and must begin with a slash (/). If+-- the path includes any non-ASCII characters or unsafe characters as+-- defined in RFC 1783 (http://www.ietf.org/rfc/rfc1738.txt), URL encode+-- those characters. Do not URL encode any other characters in the path, or+-- CloudFront will not return the custom error page to the viewer.+cerResponsePagePath :: Lens' CustomErrorResponse (Maybe Text)+cerResponsePagePath =+    lens _cerResponsePagePath (\s a -> s { _cerResponsePagePath = a })++instance FromXML CustomErrorResponse where+    parseXML x = CustomErrorResponse+        <$> x .@? "ErrorCachingMinTTL"+        <*> x .@  "ErrorCode"+        <*> x .@? "ResponseCode"+        <*> x .@? "ResponsePagePath"++instance ToXML CustomErrorResponse where+    toXML CustomErrorResponse{..} = nodes "CustomErrorResponse"+        [ "ErrorCode"          =@ _cerErrorCode+        , "ResponsePagePath"   =@ _cerResponsePagePath+        , "ResponseCode"       =@ _cerResponseCode+        , "ErrorCachingMinTTL" =@ _cerErrorCachingMinTTL+        ]++data CacheBehaviors = CacheBehaviors+    { _cbItems    :: List "CacheBehavior" CacheBehavior+    , _cbQuantity :: Int+    } deriving (Eq, Show)++-- | 'CacheBehaviors' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cbItems' @::@ ['CacheBehavior']+--+-- * 'cbQuantity' @::@ 'Int'+--+cacheBehaviors :: Int -- ^ 'cbQuantity'+               -> CacheBehaviors+cacheBehaviors p1 = CacheBehaviors+    { _cbQuantity = p1+    , _cbItems    = mempty+    }++-- | Optional: A complex type that contains cache behaviors for this+-- distribution. If Quantity is 0, you can omit Items.+cbItems :: Lens' CacheBehaviors [CacheBehavior]+cbItems = lens _cbItems (\s a -> s { _cbItems = a }) . _List++-- | The number of cache behaviors for this distribution.+cbQuantity :: Lens' CacheBehaviors Int+cbQuantity = lens _cbQuantity (\s a -> s { _cbQuantity = a })++instance FromXML CacheBehaviors where+    parseXML x = CacheBehaviors+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML CacheBehaviors where+    toXML CacheBehaviors{..} = nodes "CacheBehaviors"+        [ "Quantity" =@ _cbQuantity+        , "Items"    =@ _cbItems+        ]++data DefaultCacheBehavior = DefaultCacheBehavior+    { _dcbAllowedMethods       :: Maybe AllowedMethods+    , _dcbForwardedValues      :: ForwardedValues+    , _dcbMinTTL               :: Integer+    , _dcbSmoothStreaming      :: Maybe Bool+    , _dcbTargetOriginId       :: Text+    , _dcbTrustedSigners       :: TrustedSigners+    , _dcbViewerProtocolPolicy :: Text+    } deriving (Eq, Show)++-- | 'DefaultCacheBehavior' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dcbAllowedMethods' @::@ 'Maybe' 'AllowedMethods'+--+-- * 'dcbForwardedValues' @::@ 'ForwardedValues'+--+-- * 'dcbMinTTL' @::@ 'Integer'+--+-- * 'dcbSmoothStreaming' @::@ 'Maybe' 'Bool'+--+-- * 'dcbTargetOriginId' @::@ 'Text'+--+-- * 'dcbTrustedSigners' @::@ 'TrustedSigners'+--+-- * 'dcbViewerProtocolPolicy' @::@ 'Text'+--+defaultCacheBehavior :: Text -- ^ 'dcbTargetOriginId'+                     -> ForwardedValues -- ^ 'dcbForwardedValues'+                     -> TrustedSigners -- ^ 'dcbTrustedSigners'+                     -> Text -- ^ 'dcbViewerProtocolPolicy'+                     -> Integer -- ^ 'dcbMinTTL'+                     -> DefaultCacheBehavior+defaultCacheBehavior p1 p2 p3 p4 p5 = DefaultCacheBehavior+    { _dcbTargetOriginId       = p1+    , _dcbForwardedValues      = p2+    , _dcbTrustedSigners       = p3+    , _dcbViewerProtocolPolicy = p4+    , _dcbMinTTL               = p5+    , _dcbAllowedMethods       = Nothing+    , _dcbSmoothStreaming      = Nothing+    }++dcbAllowedMethods :: Lens' DefaultCacheBehavior (Maybe AllowedMethods)+dcbAllowedMethods =+    lens _dcbAllowedMethods (\s a -> s { _dcbAllowedMethods = a })++-- | A complex type that specifies how CloudFront handles query strings,+-- cookies and headers.+dcbForwardedValues :: Lens' DefaultCacheBehavior ForwardedValues+dcbForwardedValues =+    lens _dcbForwardedValues (\s a -> s { _dcbForwardedValues = a })++-- | The minimum amount of time that you want objects to stay in CloudFront+-- caches before CloudFront queries your origin to see whether the object+-- has been updated.You can specify a value from 0 to 3,153,600,000 seconds+-- (100 years).+dcbMinTTL :: Lens' DefaultCacheBehavior Integer+dcbMinTTL = lens _dcbMinTTL (\s a -> s { _dcbMinTTL = a })++-- | Indicates whether you want to distribute media files in Microsoft Smooth+-- Streaming format using the origin that is associated with this cache+-- behavior. If so, specify true; if not, specify false.+dcbSmoothStreaming :: Lens' DefaultCacheBehavior (Maybe Bool)+dcbSmoothStreaming =+    lens _dcbSmoothStreaming (\s a -> s { _dcbSmoothStreaming = a })++-- | The value of ID for the origin that you want CloudFront to route requests+-- to when a request matches the path pattern either for a cache behavior or+-- for the default cache behavior.+dcbTargetOriginId :: Lens' DefaultCacheBehavior Text+dcbTargetOriginId =+    lens _dcbTargetOriginId (\s a -> s { _dcbTargetOriginId = a })++-- | A complex type that specifies the AWS accounts, if any, that you want to+-- allow to create signed URLs for private content. If you want to require+-- signed URLs in requests for objects in the target origin that match the+-- PathPattern for this cache behavior, specify true for Enabled, and+-- specify the applicable values for Quantity and Items. For more+-- information, go to Using a Signed URL to Serve Private Content in the+-- Amazon CloudFront Developer Guide. If you don't want to require signed+-- URLs in requests for objects that match PathPattern, specify false for+-- Enabled and 0 for Quantity. Omit Items. To add, change, or remove one or+-- more trusted signers, change Enabled to true (if it's currently false),+-- change Quantity as applicable, and specify all of the trusted signers+-- that you want to include in the updated distribution.+dcbTrustedSigners :: Lens' DefaultCacheBehavior TrustedSigners+dcbTrustedSigners =+    lens _dcbTrustedSigners (\s a -> s { _dcbTrustedSigners = a })++-- | Use this element to specify the protocol that users can use to access the+-- files in the origin specified by TargetOriginId when a request matches+-- the path pattern in PathPattern. If you want CloudFront to allow end+-- users to use any available protocol, specify allow-all. If you want+-- CloudFront to require HTTPS, specify https. If you want CloudFront to+-- respond to an HTTP request with an HTTP status code of 301 (Moved+-- Permanently) and the HTTPS URL, specify redirect-to-https. The viewer+-- then resubmits the request using the HTTPS URL.+dcbViewerProtocolPolicy :: Lens' DefaultCacheBehavior Text+dcbViewerProtocolPolicy =+    lens _dcbViewerProtocolPolicy (\s a -> s { _dcbViewerProtocolPolicy = a })++instance FromXML DefaultCacheBehavior where+    parseXML x = DefaultCacheBehavior+        <$> x .@? "AllowedMethods"+        <*> x .@  "ForwardedValues"+        <*> x .@  "MinTTL"+        <*> x .@? "SmoothStreaming"+        <*> x .@  "TargetOriginId"+        <*> x .@  "TrustedSigners"+        <*> x .@  "ViewerProtocolPolicy"++instance ToXML DefaultCacheBehavior where+    toXML DefaultCacheBehavior{..} = nodes "DefaultCacheBehavior"+        [ "TargetOriginId"       =@ _dcbTargetOriginId+        , "ForwardedValues"      =@ _dcbForwardedValues+        , "TrustedSigners"       =@ _dcbTrustedSigners+        , "ViewerProtocolPolicy" =@ _dcbViewerProtocolPolicy+        , "MinTTL"               =@ _dcbMinTTL+        , "AllowedMethods"       =@ _dcbAllowedMethods+        , "SmoothStreaming"      =@ _dcbSmoothStreaming+        ]++data InvalidationList = InvalidationList+    { _ilIsTruncated :: Bool+    , _ilItems       :: List "InvalidationSummary" InvalidationSummary+    , _ilMarker      :: Text+    , _ilMaxItems    :: Int+    , _ilNextMarker  :: Maybe Text+    , _ilQuantity    :: Int+    } deriving (Eq, Show)++-- | 'InvalidationList' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ilIsTruncated' @::@ 'Bool'+--+-- * 'ilItems' @::@ ['InvalidationSummary']+--+-- * 'ilMarker' @::@ 'Text'+--+-- * 'ilMaxItems' @::@ 'Int'+--+-- * 'ilNextMarker' @::@ 'Maybe' 'Text'+--+-- * 'ilQuantity' @::@ 'Int'+--+invalidationList :: Text -- ^ 'ilMarker'+                 -> Int -- ^ 'ilMaxItems'+                 -> Bool -- ^ 'ilIsTruncated'+                 -> Int -- ^ 'ilQuantity'+                 -> InvalidationList+invalidationList p1 p2 p3 p4 = InvalidationList+    { _ilMarker      = p1+    , _ilMaxItems    = p2+    , _ilIsTruncated = p3+    , _ilQuantity    = p4+    , _ilNextMarker  = Nothing+    , _ilItems       = mempty+    }++-- | A flag that indicates whether more invalidation batch requests remain to+-- be listed. If your results were truncated, you can make a follow-up+-- pagination request using the Marker request parameter to retrieve more+-- invalidation batches in the list.+ilIsTruncated :: Lens' InvalidationList Bool+ilIsTruncated = lens _ilIsTruncated (\s a -> s { _ilIsTruncated = a })++-- | A complex type that contains one InvalidationSummary element for each+-- invalidation batch that was created by the current AWS account.+ilItems :: Lens' InvalidationList [InvalidationSummary]+ilItems = lens _ilItems (\s a -> s { _ilItems = a }) . _List++-- | The value you provided for the Marker request parameter.+ilMarker :: Lens' InvalidationList Text+ilMarker = lens _ilMarker (\s a -> s { _ilMarker = a })++-- | The value you provided for the MaxItems request parameter.+ilMaxItems :: Lens' InvalidationList Int+ilMaxItems = lens _ilMaxItems (\s a -> s { _ilMaxItems = a })++-- | If IsTruncated is true, this element is present and contains the value+-- you can use for the Marker request parameter to continue listing your+-- invalidation batches where they left off.+ilNextMarker :: Lens' InvalidationList (Maybe Text)+ilNextMarker = lens _ilNextMarker (\s a -> s { _ilNextMarker = a })++-- | The number of invalidation batches that were created by the current AWS+-- account.+ilQuantity :: Lens' InvalidationList Int+ilQuantity = lens _ilQuantity (\s a -> s { _ilQuantity = a })++instance FromXML InvalidationList where+    parseXML x = InvalidationList+        <$> x .@  "IsTruncated"+        <*> x .@  "Items"+        <*> x .@  "Marker"+        <*> x .@  "MaxItems"+        <*> x .@? "NextMarker"+        <*> x .@  "Quantity"++instance ToXML InvalidationList where+    toXML InvalidationList{..} = nodes "InvalidationList"+        [ "Marker"      =@ _ilMarker+        , "NextMarker"  =@ _ilNextMarker+        , "MaxItems"    =@ _ilMaxItems+        , "IsTruncated" =@ _ilIsTruncated+        , "Quantity"    =@ _ilQuantity+        , "Items"       =@ _ilItems+        ]++data StreamingDistribution = StreamingDistribution+    { _sdActiveTrustedSigners        :: ActiveTrustedSigners+    , _sdDomainName                  :: Text+    , _sdId                          :: Text+    , _sdLastModifiedTime            :: Maybe RFC822+    , _sdStatus                      :: Text+    , _sdStreamingDistributionConfig :: StreamingDistributionConfig+    } deriving (Eq, Show)++-- | 'StreamingDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'sdActiveTrustedSigners' @::@ 'ActiveTrustedSigners'+--+-- * 'sdDomainName' @::@ 'Text'+--+-- * 'sdId' @::@ 'Text'+--+-- * 'sdLastModifiedTime' @::@ 'Maybe' 'UTCTime'+--+-- * 'sdStatus' @::@ 'Text'+--+-- * 'sdStreamingDistributionConfig' @::@ 'StreamingDistributionConfig'+--+streamingDistribution :: Text -- ^ 'sdId'+                      -> Text -- ^ 'sdStatus'+                      -> Text -- ^ 'sdDomainName'+                      -> ActiveTrustedSigners -- ^ 'sdActiveTrustedSigners'+                      -> StreamingDistributionConfig -- ^ 'sdStreamingDistributionConfig'+                      -> StreamingDistribution+streamingDistribution p1 p2 p3 p4 p5 = StreamingDistribution+    { _sdId                          = p1+    , _sdStatus                      = p2+    , _sdDomainName                  = p3+    , _sdActiveTrustedSigners        = p4+    , _sdStreamingDistributionConfig = p5+    , _sdLastModifiedTime            = Nothing+    }++-- | CloudFront automatically adds this element to the response only if you've+-- set up the distribution to serve private content with signed URLs. The+-- element lists the key pair IDs that CloudFront is aware of for each+-- trusted signer. The Signer child element lists the AWS account number of+-- the trusted signer (or an empty Self element if the signer is you). The+-- Signer element also includes the IDs of any active key pairs associated+-- with the trusted signer's AWS account. If no KeyPairId element appears+-- for a Signer, that signer can't create working signed URLs.+sdActiveTrustedSigners :: Lens' StreamingDistribution ActiveTrustedSigners+sdActiveTrustedSigners =+    lens _sdActiveTrustedSigners (\s a -> s { _sdActiveTrustedSigners = a })++-- | The domain name corresponding to the streaming distribution. For example:+-- s5c39gqb8ow64r.cloudfront.net.+sdDomainName :: Lens' StreamingDistribution Text+sdDomainName = lens _sdDomainName (\s a -> s { _sdDomainName = a })++-- | The identifier for the streaming distribution. For example:+-- EGTXBD79H29TRA8.+sdId :: Lens' StreamingDistribution Text+sdId = lens _sdId (\s a -> s { _sdId = a })++-- | The date and time the distribution was last modified.+sdLastModifiedTime :: Lens' StreamingDistribution (Maybe UTCTime)+sdLastModifiedTime =+    lens _sdLastModifiedTime (\s a -> s { _sdLastModifiedTime = a })+        . mapping _Time++-- | The current status of the streaming distribution. When the status is+-- Deployed, the distribution's information is fully propagated throughout+-- the Amazon CloudFront system.+sdStatus :: Lens' StreamingDistribution Text+sdStatus = lens _sdStatus (\s a -> s { _sdStatus = a })++-- | The current configuration information for the streaming distribution.+sdStreamingDistributionConfig :: Lens' StreamingDistribution StreamingDistributionConfig+sdStreamingDistributionConfig =+    lens _sdStreamingDistributionConfig+        (\s a -> s { _sdStreamingDistributionConfig = a })++instance FromXML StreamingDistribution where+    parseXML x = StreamingDistribution+        <$> x .@  "ActiveTrustedSigners"+        <*> x .@  "DomainName"+        <*> x .@  "Id"+        <*> x .@? "LastModifiedTime"+        <*> x .@  "Status"+        <*> x .@  "StreamingDistributionConfig"++instance ToXMLRoot StreamingDistribution where+    toXMLRoot StreamingDistribution{..} = namespaced ns "StreamingDistribution"+        [ "Id"                          =@ _sdId+        , "Status"                      =@ _sdStatus+        , "LastModifiedTime"            =@ _sdLastModifiedTime+        , "DomainName"                  =@ _sdDomainName+        , "ActiveTrustedSigners"        =@ _sdActiveTrustedSigners+        , "StreamingDistributionConfig" =@ _sdStreamingDistributionConfig+        ]++instance ToXML StreamingDistribution++data Paths = Paths+    { _pItems    :: List "Path" Text+    , _pQuantity :: Int+    } deriving (Eq, Ord, Show)++-- | 'Paths' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'pItems' @::@ ['Text']+--+-- * 'pQuantity' @::@ 'Int'+--+paths :: Int -- ^ 'pQuantity'+      -> Paths+paths p1 = Paths+    { _pQuantity = p1+    , _pItems    = mempty+    }++-- | A complex type that contains a list of the objects that you want to+-- invalidate.+pItems :: Lens' Paths [Text]+pItems = lens _pItems (\s a -> s { _pItems = a }) . _List++-- | The number of objects that you want to invalidate.+pQuantity :: Lens' Paths Int+pQuantity = lens _pQuantity (\s a -> s { _pQuantity = a })++instance FromXML Paths where+    parseXML x = Paths+        <$> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML Paths where+    toXML Paths{..} = nodes "Paths"+        [ "Quantity" =@ _pQuantity+        , "Items"    =@ _pItems+        ]++data CloudFrontOriginAccessIdentity = CloudFrontOriginAccessIdentity+    { _cfoaiCloudFrontOriginAccessIdentityConfig :: Maybe CloudFrontOriginAccessIdentityConfig+    , _cfoaiId                                   :: Text+    , _cfoaiS3CanonicalUserId                    :: Text+    } deriving (Eq, Show)++-- | 'CloudFrontOriginAccessIdentity' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'cfoaiCloudFrontOriginAccessIdentityConfig' @::@ 'Maybe' 'CloudFrontOriginAccessIdentityConfig'+--+-- * 'cfoaiId' @::@ 'Text'+--+-- * 'cfoaiS3CanonicalUserId' @::@ 'Text'+--+cloudFrontOriginAccessIdentity :: Text -- ^ 'cfoaiId'+                               -> Text -- ^ 'cfoaiS3CanonicalUserId'+                               -> CloudFrontOriginAccessIdentity+cloudFrontOriginAccessIdentity p1 p2 = CloudFrontOriginAccessIdentity+    { _cfoaiId                                   = p1+    , _cfoaiS3CanonicalUserId                    = p2+    , _cfoaiCloudFrontOriginAccessIdentityConfig = Nothing+    }++-- | The current configuration information for the identity.+cfoaiCloudFrontOriginAccessIdentityConfig :: Lens' CloudFrontOriginAccessIdentity (Maybe CloudFrontOriginAccessIdentityConfig)+cfoaiCloudFrontOriginAccessIdentityConfig =+    lens _cfoaiCloudFrontOriginAccessIdentityConfig+        (\s a -> s { _cfoaiCloudFrontOriginAccessIdentityConfig = a })++-- | The ID for the origin access identity. For example: E74FTE3AJFJ256A.+cfoaiId :: Lens' CloudFrontOriginAccessIdentity Text+cfoaiId = lens _cfoaiId (\s a -> s { _cfoaiId = a })++-- | The Amazon S3 canonical user ID for the origin access identity, which you+-- use when giving the origin access identity read permission to an object+-- in Amazon S3.+cfoaiS3CanonicalUserId :: Lens' CloudFrontOriginAccessIdentity Text+cfoaiS3CanonicalUserId =+    lens _cfoaiS3CanonicalUserId (\s a -> s { _cfoaiS3CanonicalUserId = a })++instance FromXML CloudFrontOriginAccessIdentity where+    parseXML x = CloudFrontOriginAccessIdentity+        <$> x .@? "CloudFrontOriginAccessIdentityConfig"+        <*> x .@  "Id"+        <*> x .@  "S3CanonicalUserId"++instance ToXMLRoot CloudFrontOriginAccessIdentity where+    toXMLRoot CloudFrontOriginAccessIdentity{..} = namespaced ns "CloudFrontOriginAccessIdentity"+        [ "Id"                                   =@ _cfoaiId+        , "S3CanonicalUserId"                    =@ _cfoaiS3CanonicalUserId+        , "CloudFrontOriginAccessIdentityConfig" =@ _cfoaiCloudFrontOriginAccessIdentityConfig+        ]++instance ToXML CloudFrontOriginAccessIdentity++data ActiveTrustedSigners = ActiveTrustedSigners+    { _atsEnabled  :: Bool+    , _atsItems    :: List "Signer" Signer+    , _atsQuantity :: Int+    } deriving (Eq, Show)++-- | 'ActiveTrustedSigners' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'atsEnabled' @::@ 'Bool'+--+-- * 'atsItems' @::@ ['Signer']+--+-- * 'atsQuantity' @::@ 'Int'+--+activeTrustedSigners :: Bool -- ^ 'atsEnabled'+                     -> Int -- ^ 'atsQuantity'+                     -> ActiveTrustedSigners+activeTrustedSigners p1 p2 = ActiveTrustedSigners+    { _atsEnabled  = p1+    , _atsQuantity = p2+    , _atsItems    = mempty+    }++-- | Each active trusted signer.+atsEnabled :: Lens' ActiveTrustedSigners Bool+atsEnabled = lens _atsEnabled (\s a -> s { _atsEnabled = a })++-- | A complex type that contains one Signer complex type for each unique+-- trusted signer that is specified in the TrustedSigners complex type,+-- including trusted signers in the default cache behavior and in all of the+-- other cache behaviors.+atsItems :: Lens' ActiveTrustedSigners [Signer]+atsItems = lens _atsItems (\s a -> s { _atsItems = a }) . _List++-- | The number of unique trusted signers included in all cache behaviors. For+-- example, if three cache behaviors all list the same three AWS accounts,+-- the value of Quantity for ActiveTrustedSigners will be 3.+atsQuantity :: Lens' ActiveTrustedSigners Int+atsQuantity = lens _atsQuantity (\s a -> s { _atsQuantity = a })++instance FromXML ActiveTrustedSigners where+    parseXML x = ActiveTrustedSigners+        <$> x .@  "Enabled"+        <*> x .@  "Items"+        <*> x .@  "Quantity"++instance ToXML ActiveTrustedSigners where+    toXML ActiveTrustedSigners{..} = nodes "ActiveTrustedSigners"+        [ "Enabled"  =@ _atsEnabled+        , "Quantity" =@ _atsQuantity+        , "Items"    =@ _atsItems+        ]++data DistributionSummary = DistributionSummary+    { _dsAliases              :: Aliases+    , _dsCacheBehaviors       :: CacheBehaviors+    , _dsComment              :: Text+    , _dsCustomErrorResponses :: CustomErrorResponses+    , _dsDefaultCacheBehavior :: DefaultCacheBehavior+    , _dsDomainName           :: Text+    , _dsEnabled              :: Bool+    , _dsId                   :: Text+    , _dsLastModifiedTime     :: RFC822+    , _dsOrigins              :: Origins+    , _dsPriceClass           :: Text+    , _dsRestrictions         :: Restrictions+    , _dsStatus               :: Text+    , _dsViewerCertificate    :: ViewerCertificate+    } deriving (Eq, Show)++-- | 'DistributionSummary' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'dsAliases' @::@ 'Aliases'+--+-- * 'dsCacheBehaviors' @::@ 'CacheBehaviors'+--+-- * 'dsComment' @::@ 'Text'+--+-- * 'dsCustomErrorResponses' @::@ 'CustomErrorResponses'+--+-- * 'dsDefaultCacheBehavior' @::@ 'DefaultCacheBehavior'+--+-- * 'dsDomainName' @::@ 'Text'+--+-- * 'dsEnabled' @::@ 'Bool'+--+-- * 'dsId' @::@ 'Text'+--+-- * 'dsLastModifiedTime' @::@ 'UTCTime'+--+-- * 'dsOrigins' @::@ 'Origins'+--+-- * 'dsPriceClass' @::@ 'Text'+--+-- * 'dsRestrictions' @::@ 'Restrictions'+--+-- * 'dsStatus' @::@ 'Text'+--+-- * 'dsViewerCertificate' @::@ 'ViewerCertificate'+--+distributionSummary :: Text -- ^ 'dsId'+                    -> Text -- ^ 'dsStatus'+                    -> UTCTime -- ^ 'dsLastModifiedTime'+                    -> Text -- ^ 'dsDomainName'+                    -> Aliases -- ^ 'dsAliases'+                    -> Origins -- ^ 'dsOrigins'+                    -> DefaultCacheBehavior -- ^ 'dsDefaultCacheBehavior'+                    -> CacheBehaviors -- ^ 'dsCacheBehaviors'+                    -> CustomErrorResponses -- ^ 'dsCustomErrorResponses'+                    -> Text -- ^ 'dsComment'+                    -> Text -- ^ 'dsPriceClass'+                    -> Bool -- ^ 'dsEnabled'+                    -> ViewerCertificate -- ^ 'dsViewerCertificate'+                    -> Restrictions -- ^ 'dsRestrictions'+                    -> DistributionSummary+distributionSummary p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 = DistributionSummary+    { _dsId                   = p1+    , _dsStatus               = p2+    , _dsLastModifiedTime     = withIso _Time (const id) p3+    , _dsDomainName           = p4+    , _dsAliases              = p5+    , _dsOrigins              = p6+    , _dsDefaultCacheBehavior = p7+    , _dsCacheBehaviors       = p8+    , _dsCustomErrorResponses = p9+    , _dsComment              = p10+    , _dsPriceClass           = p11+    , _dsEnabled              = p12+    , _dsViewerCertificate    = p13+    , _dsRestrictions         = p14+    }++-- | A complex type that contains information about CNAMEs (alternate domain+-- names), if any, for this distribution.+dsAliases :: Lens' DistributionSummary Aliases+dsAliases = lens _dsAliases (\s a -> s { _dsAliases = a })++-- | A complex type that contains zero or more CacheBehavior elements.+dsCacheBehaviors :: Lens' DistributionSummary CacheBehaviors+dsCacheBehaviors = lens _dsCacheBehaviors (\s a -> s { _dsCacheBehaviors = a })++-- | The comment originally specified when this distribution was created.+dsComment :: Lens' DistributionSummary Text+dsComment = lens _dsComment (\s a -> s { _dsComment = a })++-- | A complex type that contains zero or more CustomErrorResponses elements.+dsCustomErrorResponses :: Lens' DistributionSummary CustomErrorResponses+dsCustomErrorResponses =+    lens _dsCustomErrorResponses (\s a -> s { _dsCustomErrorResponses = a })++-- | A complex type that describes the default cache behavior if you do not+-- specify a CacheBehavior element or if files don't match any of the values+-- of PathPattern in CacheBehavior elements.You must create exactly one+-- default cache behavior.+dsDefaultCacheBehavior :: Lens' DistributionSummary DefaultCacheBehavior+dsDefaultCacheBehavior =+    lens _dsDefaultCacheBehavior (\s a -> s { _dsDefaultCacheBehavior = a })++-- | The domain name corresponding to the distribution. For example:+-- d604721fxaaqy9.cloudfront.net.+dsDomainName :: Lens' DistributionSummary Text+dsDomainName = lens _dsDomainName (\s a -> s { _dsDomainName = a })++-- | Whether the distribution is enabled to accept end user requests for+-- content.+dsEnabled :: Lens' DistributionSummary Bool+dsEnabled = lens _dsEnabled (\s a -> s { _dsEnabled = a })++-- | The identifier for the distribution. For example: EDFDVBD632BHDS5.+dsId :: Lens' DistributionSummary Text+dsId = lens _dsId (\s a -> s { _dsId = a })++-- | The date and time the distribution was last modified.+dsLastModifiedTime :: Lens' DistributionSummary UTCTime+dsLastModifiedTime =+    lens _dsLastModifiedTime (\s a -> s { _dsLastModifiedTime = a })+        . _Time++-- | A complex type that contains information about origins for this+-- distribution.+dsOrigins :: Lens' DistributionSummary Origins+dsOrigins = lens _dsOrigins (\s a -> s { _dsOrigins = a })++dsPriceClass :: Lens' DistributionSummary Text+dsPriceClass = lens _dsPriceClass (\s a -> s { _dsPriceClass = a })++dsRestrictions :: Lens' DistributionSummary Restrictions+dsRestrictions = lens _dsRestrictions (\s a -> s { _dsRestrictions = a })++-- | This response element indicates the current status of the distribution.+-- When the status is Deployed, the distribution's information is fully+-- propagated throughout the Amazon CloudFront system.+dsStatus :: Lens' DistributionSummary Text+dsStatus = lens _dsStatus (\s a -> s { _dsStatus = a })++dsViewerCertificate :: Lens' DistributionSummary ViewerCertificate+dsViewerCertificate =+    lens _dsViewerCertificate (\s a -> s { _dsViewerCertificate = a })++instance FromXML DistributionSummary where+    parseXML x = DistributionSummary+        <$> x .@  "Aliases"+        <*> x .@  "CacheBehaviors"+        <*> x .@  "Comment"+        <*> x .@  "CustomErrorResponses"+        <*> x .@  "DefaultCacheBehavior"+        <*> x .@  "DomainName"+        <*> x .@  "Enabled"+        <*> x .@  "Id"+        <*> x .@  "LastModifiedTime"+        <*> x .@  "Origins"+        <*> x .@  "PriceClass"+        <*> x .@  "Restrictions"+        <*> x .@  "Status"+        <*> x .@  "ViewerCertificate"++instance ToXML DistributionSummary where+    toXML DistributionSummary{..} = nodes "DistributionSummary"+        [ "Id"                   =@ _dsId+        , "Status"               =@ _dsStatus+        , "LastModifiedTime"     =@ _dsLastModifiedTime+        , "DomainName"           =@ _dsDomainName+        , "Aliases"              =@ _dsAliases+        , "Origins"              =@ _dsOrigins+        , "DefaultCacheBehavior" =@ _dsDefaultCacheBehavior+        , "CacheBehaviors"       =@ _dsCacheBehaviors+        , "CustomErrorResponses" =@ _dsCustomErrorResponses+        , "Comment"              =@ _dsComment+        , "PriceClass"           =@ _dsPriceClass+        , "Enabled"              =@ _dsEnabled+        , "ViewerCertificate"    =@ _dsViewerCertificate+        , "Restrictions"         =@ _dsRestrictions+        ]++data GeoRestrictionType+    = GRTBlacklist -- ^ blacklist+    | GRTNone      -- ^ none+    | GRTWhitelist -- ^ whitelist+      deriving (Eq, Ord, Show, Generic, Enum)++instance Hashable GeoRestrictionType++instance FromText GeoRestrictionType where+    parser = match "blacklist" GRTBlacklist+         <|> match "none"      GRTNone+         <|> match "whitelist" GRTWhitelist++instance ToText GeoRestrictionType where+    toText = \case+        GRTBlacklist -> "blacklist"+        GRTNone      -> "none"+        GRTWhitelist -> "whitelist"++instance FromXML GeoRestrictionType where+    parseXML = parseXMLText "GeoRestrictionType"++instance ToXML GeoRestrictionType where+    toXML = toXMLText++data LoggingConfig = LoggingConfig+    { _lcBucket         :: Text+    , _lcEnabled        :: Bool+    , _lcIncludeCookies :: Bool+    , _lcPrefix         :: Text+    } deriving (Eq, Ord, Show)++-- | 'LoggingConfig' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'lcBucket' @::@ 'Text'+--+-- * 'lcEnabled' @::@ 'Bool'+--+-- * 'lcIncludeCookies' @::@ 'Bool'+--+-- * 'lcPrefix' @::@ 'Text'+--+loggingConfig :: Bool -- ^ 'lcEnabled'+              -> Bool -- ^ 'lcIncludeCookies'+              -> Text -- ^ 'lcBucket'+              -> Text -- ^ 'lcPrefix'+              -> LoggingConfig+loggingConfig p1 p2 p3 p4 = LoggingConfig+    { _lcEnabled        = p1+    , _lcIncludeCookies = p2+    , _lcBucket         = p3+    , _lcPrefix         = p4+    }++-- | The Amazon S3 bucket to store the access logs in, for example,+-- myawslogbucket.s3.amazonaws.com.+lcBucket :: Lens' LoggingConfig Text+lcBucket = lens _lcBucket (\s a -> s { _lcBucket = a })++-- | Specifies whether you want CloudFront to save access logs to an Amazon S3+-- bucket. If you do not want to enable logging when you create a+-- distribution or if you want to disable logging for an existing+-- distribution, specify false for Enabled, and specify empty Bucket and+-- Prefix elements. If you specify false for Enabled but you specify values+-- for Bucket, prefix and IncludeCookies, the values are automatically+-- deleted.+lcEnabled :: Lens' LoggingConfig Bool+lcEnabled = lens _lcEnabled (\s a -> s { _lcEnabled = a })++-- | Specifies whether you want CloudFront to include cookies in access logs,+-- specify true for IncludeCookies. If you choose to include cookies in+-- logs, CloudFront logs all cookies regardless of how you configure the+-- cache behaviors for this distribution. If you do not want to include+-- cookies when you create a distribution or if you want to disable include+-- cookies for an existing distribution, specify false for IncludeCookies.+lcIncludeCookies :: Lens' LoggingConfig Bool+lcIncludeCookies = lens _lcIncludeCookies (\s a -> s { _lcIncludeCookies = a })++-- | An optional string that you want CloudFront to prefix to the access log+-- filenames for this distribution, for example, myprefix/. If you want to+-- enable logging, but you do not want to specify a prefix, you still must+-- include an empty Prefix element in the Logging element.+lcPrefix :: Lens' LoggingConfig Text+lcPrefix = lens _lcPrefix (\s a -> s { _lcPrefix = a })++instance FromXML LoggingConfig where+    parseXML x = LoggingConfig+        <$> x .@  "Bucket"+        <*> x .@  "Enabled"+        <*> x .@  "IncludeCookies"+        <*> x .@  "Prefix"++instance ToXML LoggingConfig where+    toXML LoggingConfig{..} = nodes "LoggingConfig"+        [ "Enabled"        =@ _lcEnabled+        , "IncludeCookies" =@ _lcIncludeCookies+        , "Bucket"         =@ _lcBucket+        , "Prefix"         =@ _lcPrefix+        ]
+ gen/Network/AWS/CloudFront/UpdateCloudFrontOriginAccessIdentity.hs view
@@ -0,0 +1,149 @@+{-# 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.CloudFront.UpdateCloudFrontOriginAccessIdentity+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Update an origin access identity.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/UpdateCloudFrontOriginAccessIdentity.html>+module Network.AWS.CloudFront.UpdateCloudFrontOriginAccessIdentity+    (+    -- * Request+      UpdateCloudFrontOriginAccessIdentity+    -- ** Request constructor+    , updateCloudFrontOriginAccessIdentity+    -- ** Request lenses+    , ucfoaiCloudFrontOriginAccessIdentityConfig+    , ucfoaiId+    , ucfoaiIfMatch++    -- * Response+    , UpdateCloudFrontOriginAccessIdentityResponse+    -- ** Response constructor+    , updateCloudFrontOriginAccessIdentityResponse+    -- ** Response lenses+    , ucfoairCloudFrontOriginAccessIdentity+    , ucfoairETag+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data UpdateCloudFrontOriginAccessIdentity = UpdateCloudFrontOriginAccessIdentity+    { _ucfoaiCloudFrontOriginAccessIdentityConfig :: CloudFrontOriginAccessIdentityConfig+    , _ucfoaiId                                   :: Text+    , _ucfoaiIfMatch                              :: Maybe Text+    } deriving (Eq, Show)++-- | 'UpdateCloudFrontOriginAccessIdentity' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ucfoaiCloudFrontOriginAccessIdentityConfig' @::@ 'CloudFrontOriginAccessIdentityConfig'+--+-- * 'ucfoaiId' @::@ 'Text'+--+-- * 'ucfoaiIfMatch' @::@ 'Maybe' 'Text'+--+updateCloudFrontOriginAccessIdentity :: CloudFrontOriginAccessIdentityConfig -- ^ 'ucfoaiCloudFrontOriginAccessIdentityConfig'+                                     -> Text -- ^ 'ucfoaiId'+                                     -> UpdateCloudFrontOriginAccessIdentity+updateCloudFrontOriginAccessIdentity p1 p2 = UpdateCloudFrontOriginAccessIdentity+    { _ucfoaiCloudFrontOriginAccessIdentityConfig = p1+    , _ucfoaiId                                   = p2+    , _ucfoaiIfMatch                              = Nothing+    }++-- | The identity's configuration information.+ucfoaiCloudFrontOriginAccessIdentityConfig :: Lens' UpdateCloudFrontOriginAccessIdentity CloudFrontOriginAccessIdentityConfig+ucfoaiCloudFrontOriginAccessIdentityConfig =+    lens _ucfoaiCloudFrontOriginAccessIdentityConfig+        (\s a -> s { _ucfoaiCloudFrontOriginAccessIdentityConfig = a })++-- | The identity's id.+ucfoaiId :: Lens' UpdateCloudFrontOriginAccessIdentity Text+ucfoaiId = lens _ucfoaiId (\s a -> s { _ucfoaiId = a })++-- | The value of the ETag header you received when retrieving the identity's+-- configuration. For example: E2QWRUHAPOMQZL.+ucfoaiIfMatch :: Lens' UpdateCloudFrontOriginAccessIdentity (Maybe Text)+ucfoaiIfMatch = lens _ucfoaiIfMatch (\s a -> s { _ucfoaiIfMatch = a })++data UpdateCloudFrontOriginAccessIdentityResponse = UpdateCloudFrontOriginAccessIdentityResponse+    { _ucfoairCloudFrontOriginAccessIdentity :: Maybe CloudFrontOriginAccessIdentity+    , _ucfoairETag                           :: Maybe Text+    } deriving (Eq, Show)++-- | 'UpdateCloudFrontOriginAccessIdentityResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'ucfoairCloudFrontOriginAccessIdentity' @::@ 'Maybe' 'CloudFrontOriginAccessIdentity'+--+-- * 'ucfoairETag' @::@ 'Maybe' 'Text'+--+updateCloudFrontOriginAccessIdentityResponse :: UpdateCloudFrontOriginAccessIdentityResponse+updateCloudFrontOriginAccessIdentityResponse = UpdateCloudFrontOriginAccessIdentityResponse+    { _ucfoairCloudFrontOriginAccessIdentity = Nothing+    , _ucfoairETag                           = Nothing+    }++-- | The origin access identity's information.+ucfoairCloudFrontOriginAccessIdentity :: Lens' UpdateCloudFrontOriginAccessIdentityResponse (Maybe CloudFrontOriginAccessIdentity)+ucfoairCloudFrontOriginAccessIdentity =+    lens _ucfoairCloudFrontOriginAccessIdentity+        (\s a -> s { _ucfoairCloudFrontOriginAccessIdentity = a })++-- | The current version of the configuration. For example: E2QWRUHAPOMQZL.+ucfoairETag :: Lens' UpdateCloudFrontOriginAccessIdentityResponse (Maybe Text)+ucfoairETag = lens _ucfoairETag (\s a -> s { _ucfoairETag = a })++instance ToPath UpdateCloudFrontOriginAccessIdentity where+    toPath UpdateCloudFrontOriginAccessIdentity{..} = mconcat+        [ "/2014-05-31/origin-access-identity/cloudfront/"+        , toText _ucfoaiId+        , "/config"+        ]++instance ToQuery UpdateCloudFrontOriginAccessIdentity where+    toQuery = const mempty++instance ToHeaders UpdateCloudFrontOriginAccessIdentity where+    toHeaders UpdateCloudFrontOriginAccessIdentity{..} = mconcat+        [ "If-Match" =: _ucfoaiIfMatch+        ]++instance ToXMLRoot UpdateCloudFrontOriginAccessIdentity where+    toXMLRoot UpdateCloudFrontOriginAccessIdentity{..} = namespaced ns "UpdateCloudFrontOriginAccessIdentity"+        [ "CloudFrontOriginAccessIdentityConfig" =@ _ucfoaiCloudFrontOriginAccessIdentityConfig+        ]++instance ToXML UpdateCloudFrontOriginAccessIdentity++instance AWSRequest UpdateCloudFrontOriginAccessIdentity where+    type Sv UpdateCloudFrontOriginAccessIdentity = CloudFront+    type Rs UpdateCloudFrontOriginAccessIdentity = UpdateCloudFrontOriginAccessIdentityResponse++    request  = put+    response = xmlHeaderResponse $ \h x -> UpdateCloudFrontOriginAccessIdentityResponse+        <$> x .@? "CloudFrontOriginAccessIdentity"+        <*> h ~:? "ETag"
+ gen/Network/AWS/CloudFront/UpdateDistribution.hs view
@@ -0,0 +1,146 @@+{-# 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.CloudFront.UpdateDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Update a distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/UpdateDistribution.html>+module Network.AWS.CloudFront.UpdateDistribution+    (+    -- * Request+      UpdateDistribution+    -- ** Request constructor+    , updateDistribution+    -- ** Request lenses+    , udDistributionConfig+    , udId+    , udIfMatch++    -- * Response+    , UpdateDistributionResponse+    -- ** Response constructor+    , updateDistributionResponse+    -- ** Response lenses+    , udrDistribution+    , udrETag+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data UpdateDistribution = UpdateDistribution+    { _udDistributionConfig :: DistributionConfig+    , _udId                 :: Text+    , _udIfMatch            :: Maybe Text+    } deriving (Eq, Show)++-- | 'UpdateDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'udDistributionConfig' @::@ 'DistributionConfig'+--+-- * 'udId' @::@ 'Text'+--+-- * 'udIfMatch' @::@ 'Maybe' 'Text'+--+updateDistribution :: DistributionConfig -- ^ 'udDistributionConfig'+                   -> Text -- ^ 'udId'+                   -> UpdateDistribution+updateDistribution p1 p2 = UpdateDistribution+    { _udDistributionConfig = p1+    , _udId                 = p2+    , _udIfMatch            = Nothing+    }++-- | The distribution's configuration information.+udDistributionConfig :: Lens' UpdateDistribution DistributionConfig+udDistributionConfig =+    lens _udDistributionConfig (\s a -> s { _udDistributionConfig = a })++-- | The distribution's id.+udId :: Lens' UpdateDistribution Text+udId = lens _udId (\s a -> s { _udId = a })++-- | The value of the ETag header you received when retrieving the+-- distribution's configuration. For example: E2QWRUHAPOMQZL.+udIfMatch :: Lens' UpdateDistribution (Maybe Text)+udIfMatch = lens _udIfMatch (\s a -> s { _udIfMatch = a })++data UpdateDistributionResponse = UpdateDistributionResponse+    { _udrDistribution :: Maybe Distribution+    , _udrETag         :: Maybe Text+    } deriving (Eq, Show)++-- | 'UpdateDistributionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'udrDistribution' @::@ 'Maybe' 'Distribution'+--+-- * 'udrETag' @::@ 'Maybe' 'Text'+--+updateDistributionResponse :: UpdateDistributionResponse+updateDistributionResponse = UpdateDistributionResponse+    { _udrDistribution = Nothing+    , _udrETag         = Nothing+    }++-- | The distribution's information.+udrDistribution :: Lens' UpdateDistributionResponse (Maybe Distribution)+udrDistribution = lens _udrDistribution (\s a -> s { _udrDistribution = a })++-- | The current version of the configuration. For example: E2QWRUHAPOMQZL.+udrETag :: Lens' UpdateDistributionResponse (Maybe Text)+udrETag = lens _udrETag (\s a -> s { _udrETag = a })++instance ToPath UpdateDistribution where+    toPath UpdateDistribution{..} = mconcat+        [ "/2014-05-31/distribution/"+        , toText _udId+        , "/config"+        ]++instance ToQuery UpdateDistribution where+    toQuery = const mempty++instance ToHeaders UpdateDistribution where+    toHeaders UpdateDistribution{..} = mconcat+        [ "If-Match" =: _udIfMatch+        ]++instance ToXMLRoot UpdateDistribution where+    toXMLRoot UpdateDistribution{..} = namespaced ns "UpdateDistribution"+        [ "DistributionConfig" =@ _udDistributionConfig+        ]++instance ToXML UpdateDistribution++instance AWSRequest UpdateDistribution where+    type Sv UpdateDistribution = CloudFront+    type Rs UpdateDistribution = UpdateDistributionResponse++    request  = put+    response = xmlHeaderResponse $ \h x -> UpdateDistributionResponse+        <$> x .@? "Distribution"+        <*> h ~:? "ETag"
+ gen/Network/AWS/CloudFront/UpdateStreamingDistribution.hs view
@@ -0,0 +1,149 @@+{-# 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.CloudFront.UpdateStreamingDistribution+-- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>+-- 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 <brendan.g.hay@gmail.com>+-- Stability   : experimental+-- Portability : non-portable (GHC extensions)++-- | Update a streaming distribution.+--+-- <http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/UpdateStreamingDistribution.html>+module Network.AWS.CloudFront.UpdateStreamingDistribution+    (+    -- * Request+      UpdateStreamingDistribution+    -- ** Request constructor+    , updateStreamingDistribution+    -- ** Request lenses+    , usdId+    , usdIfMatch+    , usdStreamingDistributionConfig++    -- * Response+    , UpdateStreamingDistributionResponse+    -- ** Response constructor+    , updateStreamingDistributionResponse+    -- ** Response lenses+    , usdrETag+    , usdrStreamingDistribution+    ) where++import Network.AWS.Prelude+import Network.AWS.Request.RestXML+import Network.AWS.CloudFront.Types+import qualified GHC.Exts++data UpdateStreamingDistribution = UpdateStreamingDistribution+    { _usdId                          :: Text+    , _usdIfMatch                     :: Maybe Text+    , _usdStreamingDistributionConfig :: StreamingDistributionConfig+    } deriving (Eq, Show)++-- | 'UpdateStreamingDistribution' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'usdId' @::@ 'Text'+--+-- * 'usdIfMatch' @::@ 'Maybe' 'Text'+--+-- * 'usdStreamingDistributionConfig' @::@ 'StreamingDistributionConfig'+--+updateStreamingDistribution :: StreamingDistributionConfig -- ^ 'usdStreamingDistributionConfig'+                            -> Text -- ^ 'usdId'+                            -> UpdateStreamingDistribution+updateStreamingDistribution p1 p2 = UpdateStreamingDistribution+    { _usdStreamingDistributionConfig = p1+    , _usdId                          = p2+    , _usdIfMatch                     = Nothing+    }++-- | The streaming distribution's id.+usdId :: Lens' UpdateStreamingDistribution Text+usdId = lens _usdId (\s a -> s { _usdId = a })++-- | The value of the ETag header you received when retrieving the streaming+-- distribution's configuration. For example: E2QWRUHAPOMQZL.+usdIfMatch :: Lens' UpdateStreamingDistribution (Maybe Text)+usdIfMatch = lens _usdIfMatch (\s a -> s { _usdIfMatch = a })++-- | The streaming distribution's configuration information.+usdStreamingDistributionConfig :: Lens' UpdateStreamingDistribution StreamingDistributionConfig+usdStreamingDistributionConfig =+    lens _usdStreamingDistributionConfig+        (\s a -> s { _usdStreamingDistributionConfig = a })++data UpdateStreamingDistributionResponse = UpdateStreamingDistributionResponse+    { _usdrETag                  :: Maybe Text+    , _usdrStreamingDistribution :: Maybe StreamingDistribution+    } deriving (Eq, Show)++-- | 'UpdateStreamingDistributionResponse' constructor.+--+-- The fields accessible through corresponding lenses are:+--+-- * 'usdrETag' @::@ 'Maybe' 'Text'+--+-- * 'usdrStreamingDistribution' @::@ 'Maybe' 'StreamingDistribution'+--+updateStreamingDistributionResponse :: UpdateStreamingDistributionResponse+updateStreamingDistributionResponse = UpdateStreamingDistributionResponse+    { _usdrStreamingDistribution = Nothing+    , _usdrETag                  = Nothing+    }++-- | The current version of the configuration. For example: E2QWRUHAPOMQZL.+usdrETag :: Lens' UpdateStreamingDistributionResponse (Maybe Text)+usdrETag = lens _usdrETag (\s a -> s { _usdrETag = a })++-- | The streaming distribution's information.+usdrStreamingDistribution :: Lens' UpdateStreamingDistributionResponse (Maybe StreamingDistribution)+usdrStreamingDistribution =+    lens _usdrStreamingDistribution+        (\s a -> s { _usdrStreamingDistribution = a })++instance ToPath UpdateStreamingDistribution where+    toPath UpdateStreamingDistribution{..} = mconcat+        [ "/2014-05-31/streaming-distribution/"+        , toText _usdId+        , "/config"+        ]++instance ToQuery UpdateStreamingDistribution where+    toQuery = const mempty++instance ToHeaders UpdateStreamingDistribution where+    toHeaders UpdateStreamingDistribution{..} = mconcat+        [ "If-Match" =: _usdIfMatch+        ]++instance ToXMLRoot UpdateStreamingDistribution where+    toXMLRoot UpdateStreamingDistribution{..} = namespaced ns "UpdateStreamingDistribution"+        [ "StreamingDistributionConfig" =@ _usdStreamingDistributionConfig+        ]++instance ToXML UpdateStreamingDistribution++instance AWSRequest UpdateStreamingDistribution where+    type Sv UpdateStreamingDistribution = CloudFront+    type Rs UpdateStreamingDistribution = UpdateStreamingDistributionResponse++    request  = put+    response = xmlHeaderResponse $ \h x -> UpdateStreamingDistributionResponse+        <$> h ~:? "ETag"+        <*> x .@? "StreamingDistribution"