{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.CloudFront.Types.Product -- Copyright : (c) 2013-2015 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- module Network.AWS.CloudFront.Types.Product where import Network.AWS.CloudFront.Types.Sum import Network.AWS.Prelude -- | A complex type that lists the AWS accounts, if any, that you included in -- the TrustedSigners complex type for the default cache behavior or for -- any of the other cache behaviors for this distribution. These are -- accounts that you want to allow to create signed URLs for private -- content. -- -- /See:/ 'activeTrustedSigners' smart constructor. data ActiveTrustedSigners = ActiveTrustedSigners' { _atsItems :: !(Maybe [Signer]) , _atsEnabled :: !Bool , _atsQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ActiveTrustedSigners' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'atsItems' -- -- * 'atsEnabled' -- -- * 'atsQuantity' activeTrustedSigners :: Bool -- ^ 'atsEnabled' -> Int -- ^ 'atsQuantity' -> ActiveTrustedSigners activeTrustedSigners pEnabled_ pQuantity_ = ActiveTrustedSigners' { _atsItems = Nothing , _atsEnabled = pEnabled_ , _atsQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | Each active trusted signer. atsEnabled :: Lens' ActiveTrustedSigners Bool atsEnabled = lens _atsEnabled (\ s a -> s{_atsEnabled = a}); -- | 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 .@? "Items" .!@ mempty >>= may (parseXMLList "Signer")) <*> (x .@ "Enabled") <*> (x .@ "Quantity") -- | A complex type that contains information about CNAMEs (alternate domain -- names), if any, for this distribution. -- -- /See:/ 'aliases' smart constructor. data Aliases = Aliases' { _aItems :: !(Maybe [Text]) , _aQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Aliases' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'aItems' -- -- * 'aQuantity' aliases :: Int -- ^ 'aQuantity' -> Aliases aliases pQuantity_ = Aliases' { _aItems = Nothing , _aQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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" .!@ mempty >>= may (parseXMLList "CNAME")) <*> (x .@ "Quantity") instance ToXML Aliases where toXML Aliases'{..} = mconcat ["Items" @= toXML (toXMLList "CNAME" <$> _aItems), "Quantity" @= _aQuantity] -- | A complex type that controls which HTTP methods CloudFront processes and -- forwards to your Amazon S3 bucket or your custom origin. There are three -- choices: - CloudFront forwards only GET and HEAD requests. - CloudFront -- forwards only GET, HEAD and OPTIONS requests. - CloudFront forwards GET, -- HEAD, OPTIONS, PUT, PATCH, POST, and DELETE requests. If you pick the -- third choice, you may need to restrict access to your Amazon S3 bucket -- or to your custom origin so users can\'t perform operations that you -- don\'t want them to. For example, you may not want users to have -- permission to delete objects from your origin. -- -- /See:/ 'allowedMethods' smart constructor. data AllowedMethods = AllowedMethods' { _amCachedMethods :: !(Maybe CachedMethods) , _amQuantity :: !Int , _amItems :: ![Method] } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'AllowedMethods' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'amCachedMethods' -- -- * 'amQuantity' -- -- * 'amItems' allowedMethods :: Int -- ^ 'amQuantity' -> AllowedMethods allowedMethods pQuantity_ = AllowedMethods' { _amCachedMethods = Nothing , _amQuantity = pQuantity_ , _amItems = mempty } -- | Undocumented member. amCachedMethods :: Lens' AllowedMethods (Maybe CachedMethods) amCachedMethods = lens _amCachedMethods (\ s a -> s{_amCachedMethods = a}); -- | The number of HTTP methods that you want CloudFront to forward to your -- origin. Valid values are 2 (for GET and HEAD requests), 3 (for GET, HEAD -- and OPTIONS requests) and 7 (for GET, HEAD, OPTIONS, PUT, PATCH, POST, -- and DELETE requests). amQuantity :: Lens' AllowedMethods Int amQuantity = lens _amQuantity (\ s a -> s{_amQuantity = a}); -- | A complex type that contains the HTTP methods that you want CloudFront -- to process and forward to your origin. amItems :: Lens' AllowedMethods [Method] amItems = lens _amItems (\ s a -> s{_amItems = a}) . _Coerce; instance FromXML AllowedMethods where parseXML x = AllowedMethods' <$> (x .@? "CachedMethods") <*> (x .@ "Quantity") <*> (x .@? "Items" .!@ mempty >>= parseXMLList "Method") instance ToXML AllowedMethods where toXML AllowedMethods'{..} = mconcat ["CachedMethods" @= _amCachedMethods, "Quantity" @= _amQuantity, "Items" @= toXMLList "Method" _amItems] -- | A complex type that describes how CloudFront processes requests. You can -- create up to 10 cache behaviors.You must create at least as many cache -- behaviors (including the default cache behavior) as you have origins if -- you want CloudFront to distribute objects from all of the origins. Each -- cache behavior specifies the one origin from which you want CloudFront -- to get objects. If you have two origins and only the default cache -- behavior, the default cache behavior will cause CloudFront to get -- objects from one of the origins, but the other origin will never be -- used. If you don\'t want to specify any cache behaviors, include only an -- empty CacheBehaviors element. Don\'t include an empty CacheBehavior -- element, or CloudFront returns a MalformedXML error. To delete all cache -- behaviors in an existing distribution, update the distribution -- configuration and include only an empty CacheBehaviors element. To add, -- change, or remove one or more cache behaviors, update the distribution -- configuration and specify all of the cache behaviors that you want to -- include in the updated distribution. -- -- /See:/ 'cacheBehavior' smart constructor. data CacheBehavior = CacheBehavior' { _cbAllowedMethods :: !(Maybe AllowedMethods) , _cbMaxTTL :: !(Maybe Integer) , _cbSmoothStreaming :: !(Maybe Bool) , _cbDefaultTTL :: !(Maybe Integer) , _cbPathPattern :: !Text , _cbTargetOriginId :: !Text , _cbForwardedValues :: !ForwardedValues , _cbTrustedSigners :: !TrustedSigners , _cbViewerProtocolPolicy :: !ViewerProtocolPolicy , _cbMinTTL :: !Integer } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CacheBehavior' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cbAllowedMethods' -- -- * 'cbMaxTTL' -- -- * 'cbSmoothStreaming' -- -- * 'cbDefaultTTL' -- -- * 'cbPathPattern' -- -- * 'cbTargetOriginId' -- -- * 'cbForwardedValues' -- -- * 'cbTrustedSigners' -- -- * 'cbViewerProtocolPolicy' -- -- * 'cbMinTTL' cacheBehavior :: Text -- ^ 'cbPathPattern' -> Text -- ^ 'cbTargetOriginId' -> ForwardedValues -- ^ 'cbForwardedValues' -> TrustedSigners -- ^ 'cbTrustedSigners' -> ViewerProtocolPolicy -- ^ 'cbViewerProtocolPolicy' -> Integer -- ^ 'cbMinTTL' -> CacheBehavior cacheBehavior pPathPattern_ pTargetOriginId_ pForwardedValues_ pTrustedSigners_ pViewerProtocolPolicy_ pMinTTL_ = CacheBehavior' { _cbAllowedMethods = Nothing , _cbMaxTTL = Nothing , _cbSmoothStreaming = Nothing , _cbDefaultTTL = Nothing , _cbPathPattern = pPathPattern_ , _cbTargetOriginId = pTargetOriginId_ , _cbForwardedValues = pForwardedValues_ , _cbTrustedSigners = pTrustedSigners_ , _cbViewerProtocolPolicy = pViewerProtocolPolicy_ , _cbMinTTL = pMinTTL_ } -- | Undocumented member. cbAllowedMethods :: Lens' CacheBehavior (Maybe AllowedMethods) cbAllowedMethods = lens _cbAllowedMethods (\ s a -> s{_cbAllowedMethods = a}); -- | The maximum amount of time (in seconds) that an object is in a -- CloudFront cache before CloudFront forwards another request to your -- origin to determine whether the object has been updated. The value that -- you specify applies only when your origin adds HTTP headers such as -- Cache-Control max-age, Cache-Control s-maxage, and Expires to objects. -- You can specify a value from 0 to 3,153,600,000 seconds (100 years). cbMaxTTL :: Lens' CacheBehavior (Maybe Integer) cbMaxTTL = lens _cbMaxTTL (\ s a -> s{_cbMaxTTL = 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}); -- | If you don\'t configure your origin to add a Cache-Control max-age -- directive or an Expires header, DefaultTTL is the default amount of time -- (in seconds) that an object is in a CloudFront cache before CloudFront -- forwards another request to your origin to determine whether the object -- has been updated. The value that you specify applies only when your -- origin does not add HTTP headers such as Cache-Control max-age, -- Cache-Control s-maxage, and Expires to objects. You can specify a value -- from 0 to 3,153,600,000 seconds (100 years). cbDefaultTTL :: Lens' CacheBehavior (Maybe Integer) cbDefaultTTL = lens _cbDefaultTTL (\ s a -> s{_cbDefaultTTL = 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}); -- | 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 how CloudFront handles query strings, -- cookies and headers. cbForwardedValues :: Lens' CacheBehavior ForwardedValues cbForwardedValues = lens _cbForwardedValues (\ s a -> s{_cbForwardedValues = 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 ViewerProtocolPolicy cbViewerProtocolPolicy = lens _cbViewerProtocolPolicy (\ s a -> s{_cbViewerProtocolPolicy = 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}); instance FromXML CacheBehavior where parseXML x = CacheBehavior' <$> (x .@? "AllowedMethods") <*> (x .@? "MaxTTL") <*> (x .@? "SmoothStreaming") <*> (x .@? "DefaultTTL") <*> (x .@ "PathPattern") <*> (x .@ "TargetOriginId") <*> (x .@ "ForwardedValues") <*> (x .@ "TrustedSigners") <*> (x .@ "ViewerProtocolPolicy") <*> (x .@ "MinTTL") instance ToXML CacheBehavior where toXML CacheBehavior'{..} = mconcat ["AllowedMethods" @= _cbAllowedMethods, "MaxTTL" @= _cbMaxTTL, "SmoothStreaming" @= _cbSmoothStreaming, "DefaultTTL" @= _cbDefaultTTL, "PathPattern" @= _cbPathPattern, "TargetOriginId" @= _cbTargetOriginId, "ForwardedValues" @= _cbForwardedValues, "TrustedSigners" @= _cbTrustedSigners, "ViewerProtocolPolicy" @= _cbViewerProtocolPolicy, "MinTTL" @= _cbMinTTL] -- | A complex type that contains zero or more CacheBehavior elements. -- -- /See:/ 'cacheBehaviors' smart constructor. data CacheBehaviors = CacheBehaviors' { _cbItems :: !(Maybe [CacheBehavior]) , _cbQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CacheBehaviors' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cbItems' -- -- * 'cbQuantity' cacheBehaviors :: Int -- ^ 'cbQuantity' -> CacheBehaviors cacheBehaviors pQuantity_ = CacheBehaviors' { _cbItems = Nothing , _cbQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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" .!@ mempty >>= may (parseXMLList "CacheBehavior")) <*> (x .@ "Quantity") instance ToXML CacheBehaviors where toXML CacheBehaviors'{..} = mconcat ["Items" @= toXML (toXMLList "CacheBehavior" <$> _cbItems), "Quantity" @= _cbQuantity] -- | A complex type that controls whether CloudFront caches the response to -- requests using the specified HTTP methods. There are two choices: - -- CloudFront caches responses to GET and HEAD requests. - CloudFront -- caches responses to GET, HEAD, and OPTIONS requests. If you pick the -- second choice for your S3 Origin, you may need to forward -- Access-Control-Request-Method, Access-Control-Request-Headers and Origin -- headers for the responses to be cached correctly. -- -- /See:/ 'cachedMethods' smart constructor. data CachedMethods = CachedMethods' { _cmQuantity :: !Int , _cmItems :: ![Method] } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CachedMethods' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cmQuantity' -- -- * 'cmItems' cachedMethods :: Int -- ^ 'cmQuantity' -> CachedMethods cachedMethods pQuantity_ = CachedMethods' { _cmQuantity = pQuantity_ , _cmItems = mempty } -- | The number of HTTP methods for which you want CloudFront to cache -- responses. Valid values are 2 (for caching responses to GET and HEAD -- requests) and 3 (for caching responses to GET, HEAD, and OPTIONS -- requests). cmQuantity :: Lens' CachedMethods Int cmQuantity = lens _cmQuantity (\ s a -> s{_cmQuantity = a}); -- | A complex type that contains the HTTP methods that you want CloudFront -- to cache responses to. cmItems :: Lens' CachedMethods [Method] cmItems = lens _cmItems (\ s a -> s{_cmItems = a}) . _Coerce; instance FromXML CachedMethods where parseXML x = CachedMethods' <$> (x .@ "Quantity") <*> (x .@? "Items" .!@ mempty >>= parseXMLList "Method") instance ToXML CachedMethods where toXML CachedMethods'{..} = mconcat ["Quantity" @= _cmQuantity, "Items" @= toXMLList "Method" _cmItems] -- | CloudFront origin access identity. -- -- /See:/ 'cloudFrontOriginAccessIdentity' smart constructor. data CloudFrontOriginAccessIdentity = CloudFrontOriginAccessIdentity' { _cfoaiCloudFrontOriginAccessIdentityConfig :: !(Maybe CloudFrontOriginAccessIdentityConfig) , _cfoaiId :: !Text , _cfoaiS3CanonicalUserId :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CloudFrontOriginAccessIdentity' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cfoaiCloudFrontOriginAccessIdentityConfig' -- -- * 'cfoaiId' -- -- * 'cfoaiS3CanonicalUserId' cloudFrontOriginAccessIdentity :: Text -- ^ 'cfoaiId' -> Text -- ^ 'cfoaiS3CanonicalUserId' -> CloudFrontOriginAccessIdentity cloudFrontOriginAccessIdentity pId_ pS3CanonicalUserId_ = CloudFrontOriginAccessIdentity' { _cfoaiCloudFrontOriginAccessIdentityConfig = Nothing , _cfoaiId = pId_ , _cfoaiS3CanonicalUserId = pS3CanonicalUserId_ } -- | 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") -- | Origin access identity configuration. -- -- /See:/ 'cloudFrontOriginAccessIdentityConfig' smart constructor. data CloudFrontOriginAccessIdentityConfig = CloudFrontOriginAccessIdentityConfig' { _cfoaicCallerReference :: !Text , _cfoaicComment :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CloudFrontOriginAccessIdentityConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cfoaicCallerReference' -- -- * 'cfoaicComment' cloudFrontOriginAccessIdentityConfig :: Text -- ^ 'cfoaicCallerReference' -> Text -- ^ 'cfoaicComment' -> CloudFrontOriginAccessIdentityConfig cloudFrontOriginAccessIdentityConfig pCallerReference_ pComment_ = CloudFrontOriginAccessIdentityConfig' { _cfoaicCallerReference = pCallerReference_ , _cfoaicComment = pComment_ } -- | 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'{..} = mconcat ["CallerReference" @= _cfoaicCallerReference, "Comment" @= _cfoaicComment] -- | The CloudFrontOriginAccessIdentityList type. -- -- /See:/ 'cloudFrontOriginAccessIdentityList' smart constructor. data CloudFrontOriginAccessIdentityList = CloudFrontOriginAccessIdentityList' { _cfoailItems :: !(Maybe [CloudFrontOriginAccessIdentitySummary]) , _cfoailNextMarker :: !(Maybe Text) , _cfoailMarker :: !Text , _cfoailMaxItems :: !Int , _cfoailIsTruncated :: !Bool , _cfoailQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CloudFrontOriginAccessIdentityList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cfoailItems' -- -- * 'cfoailNextMarker' -- -- * 'cfoailMarker' -- -- * 'cfoailMaxItems' -- -- * 'cfoailIsTruncated' -- -- * 'cfoailQuantity' cloudFrontOriginAccessIdentityList :: Text -- ^ 'cfoailMarker' -> Int -- ^ 'cfoailMaxItems' -> Bool -- ^ 'cfoailIsTruncated' -> Int -- ^ 'cfoailQuantity' -> CloudFrontOriginAccessIdentityList cloudFrontOriginAccessIdentityList pMarker_ pMaxItems_ pIsTruncated_ pQuantity_ = CloudFrontOriginAccessIdentityList' { _cfoailItems = Nothing , _cfoailNextMarker = Nothing , _cfoailMarker = pMarker_ , _cfoailMaxItems = pMaxItems_ , _cfoailIsTruncated = pIsTruncated_ , _cfoailQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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 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}); -- | 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}); -- | 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 .@? "Items" .!@ mempty >>= may (parseXMLList "CloudFrontOriginAccessIdentitySummary")) <*> (x .@? "NextMarker") <*> (x .@ "Marker") <*> (x .@ "MaxItems") <*> (x .@ "IsTruncated") <*> (x .@ "Quantity") -- | Summary of the information about a CloudFront origin access identity. -- -- /See:/ 'cloudFrontOriginAccessIdentitySummary' smart constructor. data CloudFrontOriginAccessIdentitySummary = CloudFrontOriginAccessIdentitySummary' { _cfoaisId :: !Text , _cfoaisS3CanonicalUserId :: !Text , _cfoaisComment :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CloudFrontOriginAccessIdentitySummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cfoaisId' -- -- * 'cfoaisS3CanonicalUserId' -- -- * 'cfoaisComment' cloudFrontOriginAccessIdentitySummary :: Text -- ^ 'cfoaisId' -> Text -- ^ 'cfoaisS3CanonicalUserId' -> Text -- ^ 'cfoaisComment' -> CloudFrontOriginAccessIdentitySummary cloudFrontOriginAccessIdentitySummary pId_ pS3CanonicalUserId_ pComment_ = CloudFrontOriginAccessIdentitySummary' { _cfoaisId = pId_ , _cfoaisS3CanonicalUserId = pS3CanonicalUserId_ , _cfoaisComment = pComment_ } -- | 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}); -- | The comment for this origin access identity, as originally specified -- when created. cfoaisComment :: Lens' CloudFrontOriginAccessIdentitySummary Text cfoaisComment = lens _cfoaisComment (\ s a -> s{_cfoaisComment = a}); instance FromXML CloudFrontOriginAccessIdentitySummary where parseXML x = CloudFrontOriginAccessIdentitySummary' <$> (x .@ "Id") <*> (x .@ "S3CanonicalUserId") <*> (x .@ "Comment") -- | 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. -- -- /See:/ 'cookieNames' smart constructor. data CookieNames = CookieNames' { _cnItems :: !(Maybe [Text]) , _cnQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CookieNames' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cnItems' -- -- * 'cnQuantity' cookieNames :: Int -- ^ 'cnQuantity' -> CookieNames cookieNames pQuantity_ = CookieNames' { _cnItems = Nothing , _cnQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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" .!@ mempty >>= may (parseXMLList "Name")) <*> (x .@ "Quantity") instance ToXML CookieNames where toXML CookieNames'{..} = mconcat ["Items" @= toXML (toXMLList "Name" <$> _cnItems), "Quantity" @= _cnQuantity] -- | A complex type that specifies the cookie preferences associated with -- this cache behavior. -- -- /See:/ 'cookiePreference' smart constructor. data CookiePreference = CookiePreference' { _cpWhitelistedNames :: !(Maybe CookieNames) , _cpForward :: !ItemSelection } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CookiePreference' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cpWhitelistedNames' -- -- * 'cpForward' cookiePreference :: ItemSelection -- ^ 'cpForward' -> CookiePreference cookiePreference pForward_ = CookiePreference' { _cpWhitelistedNames = Nothing , _cpForward = pForward_ } -- | 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}); -- | 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 ItemSelection cpForward = lens _cpForward (\ s a -> s{_cpForward = a}); instance FromXML CookiePreference where parseXML x = CookiePreference' <$> (x .@? "WhitelistedNames") <*> (x .@ "Forward") instance ToXML CookiePreference where toXML CookiePreference'{..} = mconcat ["WhitelistedNames" @= _cpWhitelistedNames, "Forward" @= _cpForward] -- | A complex type that describes how you\'d prefer CloudFront to respond to -- requests that result in either a 4xx or 5xx response. You can control -- whether a custom error page should be displayed, what the desired -- response code should be for this error page and how long should the -- error response be cached by CloudFront. If you don\'t want to specify -- any custom error responses, include only an empty CustomErrorResponses -- element. To delete all custom error responses in an existing -- distribution, update the distribution configuration and include only an -- empty CustomErrorResponses element. To add, change, or remove one or -- more custom error responses, update the distribution configuration and -- specify all of the custom error responses that you want to include in -- the updated distribution. -- -- /See:/ 'customErrorResponse' smart constructor. data CustomErrorResponse = CustomErrorResponse' { _ceResponsePagePath :: !(Maybe Text) , _ceResponseCode :: !(Maybe Text) , _ceErrorCachingMinTTL :: !(Maybe Integer) , _ceErrorCode :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CustomErrorResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ceResponsePagePath' -- -- * 'ceResponseCode' -- -- * 'ceErrorCachingMinTTL' -- -- * 'ceErrorCode' customErrorResponse :: Int -- ^ 'ceErrorCode' -> CustomErrorResponse customErrorResponse pErrorCode_ = CustomErrorResponse' { _ceResponsePagePath = Nothing , _ceResponseCode = Nothing , _ceErrorCachingMinTTL = Nothing , _ceErrorCode = pErrorCode_ } -- | 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. ceResponsePagePath :: Lens' CustomErrorResponse (Maybe Text) ceResponsePagePath = lens _ceResponsePagePath (\ s a -> s{_ceResponsePagePath = 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. ceResponseCode :: Lens' CustomErrorResponse (Maybe Text) ceResponseCode = lens _ceResponseCode (\ s a -> s{_ceResponseCode = a}); -- | 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. ceErrorCachingMinTTL :: Lens' CustomErrorResponse (Maybe Integer) ceErrorCachingMinTTL = lens _ceErrorCachingMinTTL (\ s a -> s{_ceErrorCachingMinTTL = 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. ceErrorCode :: Lens' CustomErrorResponse Int ceErrorCode = lens _ceErrorCode (\ s a -> s{_ceErrorCode = a}); instance FromXML CustomErrorResponse where parseXML x = CustomErrorResponse' <$> (x .@? "ResponsePagePath") <*> (x .@? "ResponseCode") <*> (x .@? "ErrorCachingMinTTL") <*> (x .@ "ErrorCode") instance ToXML CustomErrorResponse where toXML CustomErrorResponse'{..} = mconcat ["ResponsePagePath" @= _ceResponsePagePath, "ResponseCode" @= _ceResponseCode, "ErrorCachingMinTTL" @= _ceErrorCachingMinTTL, "ErrorCode" @= _ceErrorCode] -- | A complex type that contains zero or more CustomErrorResponse elements. -- -- /See:/ 'customErrorResponses' smart constructor. data CustomErrorResponses = CustomErrorResponses' { _cerItems :: !(Maybe [CustomErrorResponse]) , _cerQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CustomErrorResponses' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cerItems' -- -- * 'cerQuantity' customErrorResponses :: Int -- ^ 'cerQuantity' -> CustomErrorResponses customErrorResponses pQuantity_ = CustomErrorResponses' { _cerItems = Nothing , _cerQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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" .!@ mempty >>= may (parseXMLList "CustomErrorResponse")) <*> (x .@ "Quantity") instance ToXML CustomErrorResponses where toXML CustomErrorResponses'{..} = mconcat ["Items" @= toXML (toXMLList "CustomErrorResponse" <$> _cerItems), "Quantity" @= _cerQuantity] -- | A customer origin. -- -- /See:/ 'customOriginConfig' smart constructor. data CustomOriginConfig = CustomOriginConfig' { _cocHTTPPort :: !Int , _cocHTTPSPort :: !Int , _cocOriginProtocolPolicy :: !OriginProtocolPolicy } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'CustomOriginConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cocHTTPPort' -- -- * 'cocHTTPSPort' -- -- * 'cocOriginProtocolPolicy' customOriginConfig :: Int -- ^ 'cocHTTPPort' -> Int -- ^ 'cocHTTPSPort' -> OriginProtocolPolicy -- ^ 'cocOriginProtocolPolicy' -> CustomOriginConfig customOriginConfig pHTTPPort_ pHTTPSPort_ pOriginProtocolPolicy_ = CustomOriginConfig' { _cocHTTPPort = pHTTPPort_ , _cocHTTPSPort = pHTTPSPort_ , _cocOriginProtocolPolicy = pOriginProtocolPolicy_ } -- | 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 OriginProtocolPolicy 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'{..} = mconcat ["HTTPPort" @= _cocHTTPPort, "HTTPSPort" @= _cocHTTPSPort, "OriginProtocolPolicy" @= _cocOriginProtocolPolicy] -- | 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. -- -- /See:/ 'defaultCacheBehavior' smart constructor. data DefaultCacheBehavior = DefaultCacheBehavior' { _dcbAllowedMethods :: !(Maybe AllowedMethods) , _dcbMaxTTL :: !(Maybe Integer) , _dcbSmoothStreaming :: !(Maybe Bool) , _dcbDefaultTTL :: !(Maybe Integer) , _dcbTargetOriginId :: !Text , _dcbForwardedValues :: !ForwardedValues , _dcbTrustedSigners :: !TrustedSigners , _dcbViewerProtocolPolicy :: !ViewerProtocolPolicy , _dcbMinTTL :: !Integer } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DefaultCacheBehavior' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dcbAllowedMethods' -- -- * 'dcbMaxTTL' -- -- * 'dcbSmoothStreaming' -- -- * 'dcbDefaultTTL' -- -- * 'dcbTargetOriginId' -- -- * 'dcbForwardedValues' -- -- * 'dcbTrustedSigners' -- -- * 'dcbViewerProtocolPolicy' -- -- * 'dcbMinTTL' defaultCacheBehavior :: Text -- ^ 'dcbTargetOriginId' -> ForwardedValues -- ^ 'dcbForwardedValues' -> TrustedSigners -- ^ 'dcbTrustedSigners' -> ViewerProtocolPolicy -- ^ 'dcbViewerProtocolPolicy' -> Integer -- ^ 'dcbMinTTL' -> DefaultCacheBehavior defaultCacheBehavior pTargetOriginId_ pForwardedValues_ pTrustedSigners_ pViewerProtocolPolicy_ pMinTTL_ = DefaultCacheBehavior' { _dcbAllowedMethods = Nothing , _dcbMaxTTL = Nothing , _dcbSmoothStreaming = Nothing , _dcbDefaultTTL = Nothing , _dcbTargetOriginId = pTargetOriginId_ , _dcbForwardedValues = pForwardedValues_ , _dcbTrustedSigners = pTrustedSigners_ , _dcbViewerProtocolPolicy = pViewerProtocolPolicy_ , _dcbMinTTL = pMinTTL_ } -- | Undocumented member. dcbAllowedMethods :: Lens' DefaultCacheBehavior (Maybe AllowedMethods) dcbAllowedMethods = lens _dcbAllowedMethods (\ s a -> s{_dcbAllowedMethods = a}); -- | The maximum amount of time (in seconds) that an object is in a -- CloudFront cache before CloudFront forwards another request to your -- origin to determine whether the object has been updated. The value that -- you specify applies only when your origin adds HTTP headers such as -- Cache-Control max-age, Cache-Control s-maxage, and Expires to objects. -- You can specify a value from 0 to 3,153,600,000 seconds (100 years). dcbMaxTTL :: Lens' DefaultCacheBehavior (Maybe Integer) dcbMaxTTL = lens _dcbMaxTTL (\ s a -> s{_dcbMaxTTL = 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}); -- | If you don\'t configure your origin to add a Cache-Control max-age -- directive or an Expires header, DefaultTTL is the default amount of time -- (in seconds) that an object is in a CloudFront cache before CloudFront -- forwards another request to your origin to determine whether the object -- has been updated. The value that you specify applies only when your -- origin does not add HTTP headers such as Cache-Control max-age, -- Cache-Control s-maxage, and Expires to objects. You can specify a value -- from 0 to 3,153,600,000 seconds (100 years). dcbDefaultTTL :: Lens' DefaultCacheBehavior (Maybe Integer) dcbDefaultTTL = lens _dcbDefaultTTL (\ s a -> s{_dcbDefaultTTL = 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 how CloudFront handles query strings, -- cookies and headers. dcbForwardedValues :: Lens' DefaultCacheBehavior ForwardedValues dcbForwardedValues = lens _dcbForwardedValues (\ s a -> s{_dcbForwardedValues = 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 ViewerProtocolPolicy dcbViewerProtocolPolicy = lens _dcbViewerProtocolPolicy (\ s a -> s{_dcbViewerProtocolPolicy = 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}); instance FromXML DefaultCacheBehavior where parseXML x = DefaultCacheBehavior' <$> (x .@? "AllowedMethods") <*> (x .@? "MaxTTL") <*> (x .@? "SmoothStreaming") <*> (x .@? "DefaultTTL") <*> (x .@ "TargetOriginId") <*> (x .@ "ForwardedValues") <*> (x .@ "TrustedSigners") <*> (x .@ "ViewerProtocolPolicy") <*> (x .@ "MinTTL") instance ToXML DefaultCacheBehavior where toXML DefaultCacheBehavior'{..} = mconcat ["AllowedMethods" @= _dcbAllowedMethods, "MaxTTL" @= _dcbMaxTTL, "SmoothStreaming" @= _dcbSmoothStreaming, "DefaultTTL" @= _dcbDefaultTTL, "TargetOriginId" @= _dcbTargetOriginId, "ForwardedValues" @= _dcbForwardedValues, "TrustedSigners" @= _dcbTrustedSigners, "ViewerProtocolPolicy" @= _dcbViewerProtocolPolicy, "MinTTL" @= _dcbMinTTL] -- | A distribution. -- -- /See:/ 'distribution' smart constructor. data Distribution = Distribution' { _dId :: !Text , _dStatus :: !Text , _dLastModifiedTime :: !ISO8601 , _dInProgressInvalidationBatches :: !Int , _dDomainName :: !Text , _dActiveTrustedSigners :: !ActiveTrustedSigners , _dDistributionConfig :: !DistributionConfig } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Distribution' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dId' -- -- * 'dStatus' -- -- * 'dLastModifiedTime' -- -- * 'dInProgressInvalidationBatches' -- -- * 'dDomainName' -- -- * 'dActiveTrustedSigners' -- -- * 'dDistributionConfig' distribution :: Text -- ^ 'dId' -> Text -- ^ 'dStatus' -> UTCTime -- ^ 'dLastModifiedTime' -> Int -- ^ 'dInProgressInvalidationBatches' -> Text -- ^ 'dDomainName' -> ActiveTrustedSigners -- ^ 'dActiveTrustedSigners' -> DistributionConfig -- ^ 'dDistributionConfig' -> Distribution distribution pId_ pStatus_ pLastModifiedTime_ pInProgressInvalidationBatches_ pDomainName_ pActiveTrustedSigners_ pDistributionConfig_ = Distribution' { _dId = pId_ , _dStatus = pStatus_ , _dLastModifiedTime = _Time # pLastModifiedTime_ , _dInProgressInvalidationBatches = pInProgressInvalidationBatches_ , _dDomainName = pDomainName_ , _dActiveTrustedSigners = pActiveTrustedSigners_ , _dDistributionConfig = pDistributionConfig_ } -- | The identifier for the distribution. For example: EDFDVBD632BHDS5. dId :: Lens' Distribution Text dId = lens _dId (\ s a -> s{_dId = 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. dStatus :: Lens' Distribution Text dStatus = lens _dStatus (\ s a -> s{_dStatus = a}); -- | The date and time the distribution was last modified. dLastModifiedTime :: Lens' Distribution UTCTime dLastModifiedTime = lens _dLastModifiedTime (\ s a -> s{_dLastModifiedTime = a}) . _Time; -- | The number of invalidation batches currently in progress. dInProgressInvalidationBatches :: Lens' Distribution Int dInProgressInvalidationBatches = lens _dInProgressInvalidationBatches (\ s a -> s{_dInProgressInvalidationBatches = 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}); -- | 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}); instance FromXML Distribution where parseXML x = Distribution' <$> (x .@ "Id") <*> (x .@ "Status") <*> (x .@ "LastModifiedTime") <*> (x .@ "InProgressInvalidationBatches") <*> (x .@ "DomainName") <*> (x .@ "ActiveTrustedSigners") <*> (x .@ "DistributionConfig") -- | A distribution Configuration. -- -- /See:/ 'distributionConfig' smart constructor. data DistributionConfig = DistributionConfig' { _dcAliases :: !(Maybe Aliases) , _dcDefaultRootObject :: !(Maybe Text) , _dcPriceClass :: !(Maybe PriceClass) , _dcCustomErrorResponses :: !(Maybe CustomErrorResponses) , _dcViewerCertificate :: !(Maybe ViewerCertificate) , _dcRestrictions :: !(Maybe Restrictions) , _dcLogging :: !(Maybe LoggingConfig) , _dcCacheBehaviors :: !(Maybe CacheBehaviors) , _dcCallerReference :: !Text , _dcOrigins :: !Origins , _dcDefaultCacheBehavior :: !DefaultCacheBehavior , _dcComment :: !Text , _dcEnabled :: !Bool } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DistributionConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dcAliases' -- -- * 'dcDefaultRootObject' -- -- * 'dcPriceClass' -- -- * 'dcCustomErrorResponses' -- -- * 'dcViewerCertificate' -- -- * 'dcRestrictions' -- -- * 'dcLogging' -- -- * 'dcCacheBehaviors' -- -- * 'dcCallerReference' -- -- * 'dcOrigins' -- -- * 'dcDefaultCacheBehavior' -- -- * 'dcComment' -- -- * 'dcEnabled' distributionConfig :: Text -- ^ 'dcCallerReference' -> Origins -- ^ 'dcOrigins' -> DefaultCacheBehavior -- ^ 'dcDefaultCacheBehavior' -> Text -- ^ 'dcComment' -> Bool -- ^ 'dcEnabled' -> DistributionConfig distributionConfig pCallerReference_ pOrigins_ pDefaultCacheBehavior_ pComment_ pEnabled_ = DistributionConfig' { _dcAliases = Nothing , _dcDefaultRootObject = Nothing , _dcPriceClass = Nothing , _dcCustomErrorResponses = Nothing , _dcViewerCertificate = Nothing , _dcRestrictions = Nothing , _dcLogging = Nothing , _dcCacheBehaviors = Nothing , _dcCallerReference = pCallerReference_ , _dcOrigins = pOrigins_ , _dcDefaultCacheBehavior = pDefaultCacheBehavior_ , _dcComment = pComment_ , _dcEnabled = pEnabled_ } -- | A complex type that contains information about CNAMEs (alternate domain -- names), if any, for this distribution. dcAliases :: Lens' DistributionConfig (Maybe Aliases) dcAliases = lens _dcAliases (\ s a -> s{_dcAliases = 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 (Maybe Text) dcDefaultRootObject = lens _dcDefaultRootObject (\ s a -> s{_dcDefaultRootObject = a}); -- | A complex type that contains information about price class for this -- distribution. dcPriceClass :: Lens' DistributionConfig (Maybe PriceClass) dcPriceClass = lens _dcPriceClass (\ s a -> s{_dcPriceClass = a}); -- | A complex type that contains zero or more CustomErrorResponse elements. dcCustomErrorResponses :: Lens' DistributionConfig (Maybe CustomErrorResponses) dcCustomErrorResponses = lens _dcCustomErrorResponses (\ s a -> s{_dcCustomErrorResponses = a}); -- | Undocumented member. dcViewerCertificate :: Lens' DistributionConfig (Maybe ViewerCertificate) dcViewerCertificate = lens _dcViewerCertificate (\ s a -> s{_dcViewerCertificate = a}); -- | Undocumented member. dcRestrictions :: Lens' DistributionConfig (Maybe Restrictions) dcRestrictions = lens _dcRestrictions (\ s a -> s{_dcRestrictions = a}); -- | A complex type that controls whether access logs are written for the -- distribution. dcLogging :: Lens' DistributionConfig (Maybe LoggingConfig) dcLogging = lens _dcLogging (\ s a -> s{_dcLogging = a}); -- | A complex type that contains zero or more CacheBehavior elements. dcCacheBehaviors :: Lens' DistributionConfig (Maybe 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}); -- | 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 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}); -- | Any comments you want to include about the distribution. dcComment :: Lens' DistributionConfig Text dcComment = lens _dcComment (\ s a -> s{_dcComment = 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}); instance FromXML DistributionConfig where parseXML x = DistributionConfig' <$> (x .@? "Aliases") <*> (x .@? "DefaultRootObject") <*> (x .@? "PriceClass") <*> (x .@? "CustomErrorResponses") <*> (x .@? "ViewerCertificate") <*> (x .@? "Restrictions") <*> (x .@? "Logging") <*> (x .@? "CacheBehaviors") <*> (x .@ "CallerReference") <*> (x .@ "Origins") <*> (x .@ "DefaultCacheBehavior") <*> (x .@ "Comment") <*> (x .@ "Enabled") instance ToXML DistributionConfig where toXML DistributionConfig'{..} = mconcat ["Aliases" @= _dcAliases, "DefaultRootObject" @= _dcDefaultRootObject, "PriceClass" @= _dcPriceClass, "CustomErrorResponses" @= _dcCustomErrorResponses, "ViewerCertificate" @= _dcViewerCertificate, "Restrictions" @= _dcRestrictions, "Logging" @= _dcLogging, "CacheBehaviors" @= _dcCacheBehaviors, "CallerReference" @= _dcCallerReference, "Origins" @= _dcOrigins, "DefaultCacheBehavior" @= _dcDefaultCacheBehavior, "Comment" @= _dcComment, "Enabled" @= _dcEnabled] -- | A distribution list. -- -- /See:/ 'distributionList' smart constructor. data DistributionList = DistributionList' { _dlItems :: !(Maybe [DistributionSummary]) , _dlNextMarker :: !(Maybe Text) , _dlMarker :: !Text , _dlMaxItems :: !Int , _dlIsTruncated :: !Bool , _dlQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DistributionList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dlItems' -- -- * 'dlNextMarker' -- -- * 'dlMarker' -- -- * 'dlMaxItems' -- -- * 'dlIsTruncated' -- -- * 'dlQuantity' distributionList :: Text -- ^ 'dlMarker' -> Int -- ^ 'dlMaxItems' -> Bool -- ^ 'dlIsTruncated' -> Int -- ^ 'dlQuantity' -> DistributionList distributionList pMarker_ pMaxItems_ pIsTruncated_ pQuantity_ = DistributionList' { _dlItems = Nothing , _dlNextMarker = Nothing , _dlMarker = pMarker_ , _dlMaxItems = pMaxItems_ , _dlIsTruncated = pIsTruncated_ , _dlQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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 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}); -- | 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}); -- | 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 .@? "Items" .!@ mempty >>= may (parseXMLList "DistributionSummary")) <*> (x .@? "NextMarker") <*> (x .@ "Marker") <*> (x .@ "MaxItems") <*> (x .@ "IsTruncated") <*> (x .@ "Quantity") -- | A summary of the information for an Amazon CloudFront distribution. -- -- /See:/ 'distributionSummary' smart constructor. data DistributionSummary = DistributionSummary' { _dsId :: !Text , _dsStatus :: !Text , _dsLastModifiedTime :: !ISO8601 , _dsDomainName :: !Text , _dsAliases :: !Aliases , _dsOrigins :: !Origins , _dsDefaultCacheBehavior :: !DefaultCacheBehavior , _dsCacheBehaviors :: !CacheBehaviors , _dsCustomErrorResponses :: !CustomErrorResponses , _dsComment :: !Text , _dsPriceClass :: !PriceClass , _dsEnabled :: !Bool , _dsViewerCertificate :: !ViewerCertificate , _dsRestrictions :: !Restrictions } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'DistributionSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'dsId' -- -- * 'dsStatus' -- -- * 'dsLastModifiedTime' -- -- * 'dsDomainName' -- -- * 'dsAliases' -- -- * 'dsOrigins' -- -- * 'dsDefaultCacheBehavior' -- -- * 'dsCacheBehaviors' -- -- * 'dsCustomErrorResponses' -- -- * 'dsComment' -- -- * 'dsPriceClass' -- -- * 'dsEnabled' -- -- * 'dsViewerCertificate' -- -- * 'dsRestrictions' distributionSummary :: Text -- ^ 'dsId' -> Text -- ^ 'dsStatus' -> UTCTime -- ^ 'dsLastModifiedTime' -> Text -- ^ 'dsDomainName' -> Aliases -- ^ 'dsAliases' -> Origins -- ^ 'dsOrigins' -> DefaultCacheBehavior -- ^ 'dsDefaultCacheBehavior' -> CacheBehaviors -- ^ 'dsCacheBehaviors' -> CustomErrorResponses -- ^ 'dsCustomErrorResponses' -> Text -- ^ 'dsComment' -> PriceClass -- ^ 'dsPriceClass' -> Bool -- ^ 'dsEnabled' -> ViewerCertificate -- ^ 'dsViewerCertificate' -> Restrictions -- ^ 'dsRestrictions' -> DistributionSummary distributionSummary pId_ pStatus_ pLastModifiedTime_ pDomainName_ pAliases_ pOrigins_ pDefaultCacheBehavior_ pCacheBehaviors_ pCustomErrorResponses_ pComment_ pPriceClass_ pEnabled_ pViewerCertificate_ pRestrictions_ = DistributionSummary' { _dsId = pId_ , _dsStatus = pStatus_ , _dsLastModifiedTime = _Time # pLastModifiedTime_ , _dsDomainName = pDomainName_ , _dsAliases = pAliases_ , _dsOrigins = pOrigins_ , _dsDefaultCacheBehavior = pDefaultCacheBehavior_ , _dsCacheBehaviors = pCacheBehaviors_ , _dsCustomErrorResponses = pCustomErrorResponses_ , _dsComment = pComment_ , _dsPriceClass = pPriceClass_ , _dsEnabled = pEnabled_ , _dsViewerCertificate = pViewerCertificate_ , _dsRestrictions = pRestrictions_ } -- | The identifier for the distribution. For example: EDFDVBD632BHDS5. dsId :: Lens' DistributionSummary Text dsId = lens _dsId (\ s a -> s{_dsId = 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}); -- | The date and time the distribution was last modified. dsLastModifiedTime :: Lens' DistributionSummary UTCTime dsLastModifiedTime = lens _dsLastModifiedTime (\ s a -> s{_dsLastModifiedTime = a}) . _Time; -- | The domain name corresponding to the distribution. For example: -- d604721fxaaqy9.cloudfront.net. dsDomainName :: Lens' DistributionSummary Text dsDomainName = lens _dsDomainName (\ s a -> s{_dsDomainName = a}); -- | 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 information about origins for this -- distribution. dsOrigins :: Lens' DistributionSummary Origins dsOrigins = lens _dsOrigins (\ s a -> s{_dsOrigins = 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}); -- | A complex type that contains zero or more CacheBehavior elements. dsCacheBehaviors :: Lens' DistributionSummary CacheBehaviors dsCacheBehaviors = lens _dsCacheBehaviors (\ s a -> s{_dsCacheBehaviors = a}); -- | A complex type that contains zero or more CustomErrorResponses elements. dsCustomErrorResponses :: Lens' DistributionSummary CustomErrorResponses dsCustomErrorResponses = lens _dsCustomErrorResponses (\ s a -> s{_dsCustomErrorResponses = a}); -- | The comment originally specified when this distribution was created. dsComment :: Lens' DistributionSummary Text dsComment = lens _dsComment (\ s a -> s{_dsComment = a}); -- | Undocumented member. dsPriceClass :: Lens' DistributionSummary PriceClass dsPriceClass = lens _dsPriceClass (\ s a -> s{_dsPriceClass = 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}); -- | Undocumented member. dsViewerCertificate :: Lens' DistributionSummary ViewerCertificate dsViewerCertificate = lens _dsViewerCertificate (\ s a -> s{_dsViewerCertificate = a}); -- | Undocumented member. dsRestrictions :: Lens' DistributionSummary Restrictions dsRestrictions = lens _dsRestrictions (\ s a -> s{_dsRestrictions = a}); instance FromXML DistributionSummary where parseXML x = DistributionSummary' <$> (x .@ "Id") <*> (x .@ "Status") <*> (x .@ "LastModifiedTime") <*> (x .@ "DomainName") <*> (x .@ "Aliases") <*> (x .@ "Origins") <*> (x .@ "DefaultCacheBehavior") <*> (x .@ "CacheBehaviors") <*> (x .@ "CustomErrorResponses") <*> (x .@ "Comment") <*> (x .@ "PriceClass") <*> (x .@ "Enabled") <*> (x .@ "ViewerCertificate") <*> (x .@ "Restrictions") -- | A complex type that specifies how CloudFront handles query strings, -- cookies and headers. -- -- /See:/ 'forwardedValues' smart constructor. data ForwardedValues = ForwardedValues' { _fvHeaders :: !(Maybe Headers) , _fvQueryString :: !Bool , _fvCookies :: !CookiePreference } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ForwardedValues' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'fvHeaders' -- -- * 'fvQueryString' -- -- * 'fvCookies' forwardedValues :: Bool -- ^ 'fvQueryString' -> CookiePreference -- ^ 'fvCookies' -> ForwardedValues forwardedValues pQueryString_ pCookies_ = ForwardedValues' { _fvHeaders = Nothing , _fvQueryString = pQueryString_ , _fvCookies = pCookies_ } -- | 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}); -- | A complex type that specifies how CloudFront handles cookies. fvCookies :: Lens' ForwardedValues CookiePreference fvCookies = lens _fvCookies (\ s a -> s{_fvCookies = a}); instance FromXML ForwardedValues where parseXML x = ForwardedValues' <$> (x .@? "Headers") <*> (x .@ "QueryString") <*> (x .@ "Cookies") instance ToXML ForwardedValues where toXML ForwardedValues'{..} = mconcat ["Headers" @= _fvHeaders, "QueryString" @= _fvQueryString, "Cookies" @= _fvCookies] -- | A complex type that controls the countries in which your content is -- distributed. For more information about geo restriction, go to -- Customizing Error Responses in the Amazon CloudFront Developer Guide. -- CloudFront determines the location of your users using MaxMind GeoIP -- databases. For information about the accuracy of these databases, see -- How accurate are your GeoIP databases? on the MaxMind website. -- -- /See:/ 'geoRestriction' smart constructor. data GeoRestriction = GeoRestriction' { _grItems :: !(Maybe [Text]) , _grRestrictionType :: !GeoRestrictionType , _grQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'GeoRestriction' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'grItems' -- -- * 'grRestrictionType' -- -- * 'grQuantity' geoRestriction :: GeoRestrictionType -- ^ 'grRestrictionType' -> Int -- ^ 'grQuantity' -> GeoRestriction geoRestriction pRestrictionType_ pQuantity_ = GeoRestriction' { _grItems = Nothing , _grRestrictionType = pRestrictionType_ , _grQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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 GeoRestrictionType grRestrictionType = lens _grRestrictionType (\ s a -> s{_grRestrictionType = a}); -- | 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}); instance FromXML GeoRestriction where parseXML x = GeoRestriction' <$> (x .@? "Items" .!@ mempty >>= may (parseXMLList "Location")) <*> (x .@ "RestrictionType") <*> (x .@ "Quantity") instance ToXML GeoRestriction where toXML GeoRestriction'{..} = mconcat ["Items" @= toXML (toXMLList "Location" <$> _grItems), "RestrictionType" @= _grRestrictionType, "Quantity" @= _grQuantity] -- | A complex type that specifies the headers that you want CloudFront to -- forward to the origin for this cache behavior. For the headers that you -- specify, CloudFront also caches separate versions of a given object -- based on the header values in viewer requests; this is known as varying -- on headers. For example, suppose viewer requests for logo.jpg contain a -- custom Product header that has a value of either Acme or Apex, and you -- configure CloudFront to vary on the Product header. CloudFront forwards -- the Product header to the origin and caches the response from the origin -- once for each header value. -- -- /See:/ 'headers' smart constructor. data Headers = Headers' { _hItems :: !(Maybe [Text]) , _hQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Headers' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'hItems' -- -- * 'hQuantity' headers :: Int -- ^ 'hQuantity' -> Headers headers pQuantity_ = Headers' { _hItems = Nothing , _hQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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" .!@ mempty >>= may (parseXMLList "Name")) <*> (x .@ "Quantity") instance ToXML Headers where toXML Headers'{..} = mconcat ["Items" @= toXML (toXMLList "Name" <$> _hItems), "Quantity" @= _hQuantity] -- | An invalidation. -- -- /See:/ 'invalidation' smart constructor. data Invalidation = Invalidation' { _iId :: !Text , _iStatus :: !Text , _iCreateTime :: !ISO8601 , _iInvalidationBatch :: !InvalidationBatch } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Invalidation' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'iId' -- -- * 'iStatus' -- -- * 'iCreateTime' -- -- * 'iInvalidationBatch' invalidation :: Text -- ^ 'iId' -> Text -- ^ 'iStatus' -> UTCTime -- ^ 'iCreateTime' -> InvalidationBatch -- ^ 'iInvalidationBatch' -> Invalidation invalidation pId_ pStatus_ pCreateTime_ pInvalidationBatch_ = Invalidation' { _iId = pId_ , _iStatus = pStatus_ , _iCreateTime = _Time # pCreateTime_ , _iInvalidationBatch = pInvalidationBatch_ } -- | The identifier for the invalidation request. For example: -- IDFDVBD632BHDS5. iId :: Lens' Invalidation Text iId = lens _iId (\ s a -> s{_iId = 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}); -- | The date and time the invalidation request was first made. iCreateTime :: Lens' Invalidation UTCTime iCreateTime = lens _iCreateTime (\ s a -> s{_iCreateTime = a}) . _Time; -- | The current invalidation information for the batch request. iInvalidationBatch :: Lens' Invalidation InvalidationBatch iInvalidationBatch = lens _iInvalidationBatch (\ s a -> s{_iInvalidationBatch = a}); instance FromXML Invalidation where parseXML x = Invalidation' <$> (x .@ "Id") <*> (x .@ "Status") <*> (x .@ "CreateTime") <*> (x .@ "InvalidationBatch") -- | An invalidation batch. -- -- /See:/ 'invalidationBatch' smart constructor. data InvalidationBatch = InvalidationBatch' { _ibPaths :: !Paths , _ibCallerReference :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'InvalidationBatch' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ibPaths' -- -- * 'ibCallerReference' invalidationBatch :: Paths -- ^ 'ibPaths' -> Text -- ^ 'ibCallerReference' -> InvalidationBatch invalidationBatch pPaths_ pCallerReference_ = InvalidationBatch' { _ibPaths = pPaths_ , _ibCallerReference = pCallerReference_ } -- | 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}); -- | 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}); instance FromXML InvalidationBatch where parseXML x = InvalidationBatch' <$> (x .@ "Paths") <*> (x .@ "CallerReference") instance ToXML InvalidationBatch where toXML InvalidationBatch'{..} = mconcat ["Paths" @= _ibPaths, "CallerReference" @= _ibCallerReference] -- | An invalidation list. -- -- /See:/ 'invalidationList' smart constructor. data InvalidationList = InvalidationList' { _ilItems :: !(Maybe [InvalidationSummary]) , _ilNextMarker :: !(Maybe Text) , _ilMarker :: !Text , _ilMaxItems :: !Int , _ilIsTruncated :: !Bool , _ilQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'InvalidationList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ilItems' -- -- * 'ilNextMarker' -- -- * 'ilMarker' -- -- * 'ilMaxItems' -- -- * 'ilIsTruncated' -- -- * 'ilQuantity' invalidationList :: Text -- ^ 'ilMarker' -> Int -- ^ 'ilMaxItems' -> Bool -- ^ 'ilIsTruncated' -> Int -- ^ 'ilQuantity' -> InvalidationList invalidationList pMarker_ pMaxItems_ pIsTruncated_ pQuantity_ = InvalidationList' { _ilItems = Nothing , _ilNextMarker = Nothing , _ilMarker = pMarker_ , _ilMaxItems = pMaxItems_ , _ilIsTruncated = pIsTruncated_ , _ilQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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 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}); -- | 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}); -- | 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 .@? "Items" .!@ mempty >>= may (parseXMLList "InvalidationSummary")) <*> (x .@? "NextMarker") <*> (x .@ "Marker") <*> (x .@ "MaxItems") <*> (x .@ "IsTruncated") <*> (x .@ "Quantity") -- | Summary of an invalidation request. -- -- /See:/ 'invalidationSummary' smart constructor. data InvalidationSummary = InvalidationSummary' { _isId :: !Text , _isCreateTime :: !ISO8601 , _isStatus :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'InvalidationSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'isId' -- -- * 'isCreateTime' -- -- * 'isStatus' invalidationSummary :: Text -- ^ 'isId' -> UTCTime -- ^ 'isCreateTime' -> Text -- ^ 'isStatus' -> InvalidationSummary invalidationSummary pId_ pCreateTime_ pStatus_ = InvalidationSummary' { _isId = pId_ , _isCreateTime = _Time # pCreateTime_ , _isStatus = pStatus_ } -- | The unique ID for an invalidation request. isId :: Lens' InvalidationSummary Text isId = lens _isId (\ s a -> s{_isId = a}); -- | Undocumented member. isCreateTime :: Lens' InvalidationSummary UTCTime isCreateTime = lens _isCreateTime (\ s a -> s{_isCreateTime = a}) . _Time; -- | 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 .@ "Id") <*> (x .@ "CreateTime") <*> (x .@ "Status") -- | A complex type that lists the active CloudFront key pairs, if any, that -- are associated with AwsAccountNumber. -- -- /See:/ 'keyPairIds' smart constructor. data KeyPairIds = KeyPairIds' { _kpiItems :: !(Maybe [Text]) , _kpiQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'KeyPairIds' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'kpiItems' -- -- * 'kpiQuantity' keyPairIds :: Int -- ^ 'kpiQuantity' -> KeyPairIds keyPairIds pQuantity_ = KeyPairIds' { _kpiItems = Nothing , _kpiQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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" .!@ mempty >>= may (parseXMLList "KeyPairId")) <*> (x .@ "Quantity") -- | A complex type that controls whether access logs are written for the -- distribution. -- -- /See:/ 'loggingConfig' smart constructor. data LoggingConfig = LoggingConfig' { _lcEnabled :: !Bool , _lcIncludeCookies :: !Bool , _lcBucket :: !Text , _lcPrefix :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'LoggingConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'lcEnabled' -- -- * 'lcIncludeCookies' -- -- * 'lcBucket' -- -- * 'lcPrefix' loggingConfig :: Bool -- ^ 'lcEnabled' -> Bool -- ^ 'lcIncludeCookies' -> Text -- ^ 'lcBucket' -> Text -- ^ 'lcPrefix' -> LoggingConfig loggingConfig pEnabled_ pIncludeCookies_ pBucket_ pPrefix_ = LoggingConfig' { _lcEnabled = pEnabled_ , _lcIncludeCookies = pIncludeCookies_ , _lcBucket = pBucket_ , _lcPrefix = pPrefix_ } -- | 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}); -- | 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}); -- | 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 .@ "Enabled") <*> (x .@ "IncludeCookies") <*> (x .@ "Bucket") <*> (x .@ "Prefix") instance ToXML LoggingConfig where toXML LoggingConfig'{..} = mconcat ["Enabled" @= _lcEnabled, "IncludeCookies" @= _lcIncludeCookies, "Bucket" @= _lcBucket, "Prefix" @= _lcPrefix] -- | A complex type that describes the Amazon S3 bucket or the HTTP server -- (for example, a web server) from which CloudFront gets your files.You -- must create at least one origin. -- -- /See:/ 'origin' smart constructor. data Origin = Origin' { _oCustomOriginConfig :: !(Maybe CustomOriginConfig) , _oS3OriginConfig :: !(Maybe S3OriginConfig) , _oOriginPath :: !(Maybe Text) , _oId :: !Text , _oDomainName :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Origin' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'oCustomOriginConfig' -- -- * 'oS3OriginConfig' -- -- * 'oOriginPath' -- -- * 'oId' -- -- * 'oDomainName' origin :: Text -- ^ 'oId' -> Text -- ^ 'oDomainName' -> Origin origin pId_ pDomainName_ = Origin' { _oCustomOriginConfig = Nothing , _oS3OriginConfig = Nothing , _oOriginPath = Nothing , _oId = pId_ , _oDomainName = pDomainName_ } -- | 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}); -- | 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}); -- | An optional element that causes CloudFront to request your content from -- a directory in your Amazon S3 bucket or your custom origin. When you -- include the OriginPath element, specify the directory name, beginning -- with a \/. CloudFront appends the directory name to the value of -- DomainName. oOriginPath :: Lens' Origin (Maybe Text) oOriginPath = lens _oOriginPath (\ s a -> s{_oOriginPath = 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}); -- | 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}); instance FromXML Origin where parseXML x = Origin' <$> (x .@? "CustomOriginConfig") <*> (x .@? "S3OriginConfig") <*> (x .@? "OriginPath") <*> (x .@ "Id") <*> (x .@ "DomainName") instance ToXML Origin where toXML Origin'{..} = mconcat ["CustomOriginConfig" @= _oCustomOriginConfig, "S3OriginConfig" @= _oS3OriginConfig, "OriginPath" @= _oOriginPath, "Id" @= _oId, "DomainName" @= _oDomainName] -- | A complex type that contains information about origins for this -- distribution. -- -- /See:/ 'origins' smart constructor. data Origins = Origins' { _oItems :: !(Maybe (List1 Origin)) , _oQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Origins' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'oItems' -- -- * 'oQuantity' origins :: Int -- ^ 'oQuantity' -> Origins origins pQuantity_ = Origins' { _oItems = Nothing , _oQuantity = pQuantity_ } -- | A complex type that contains origins for this distribution. oItems :: Lens' Origins (Maybe (NonEmpty Origin)) oItems = lens _oItems (\ s a -> s{_oItems = a}) . mapping _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" .!@ mempty >>= may (parseXMLList1 "Origin")) <*> (x .@ "Quantity") instance ToXML Origins where toXML Origins'{..} = mconcat ["Items" @= toXML (toXMLList "Origin" <$> _oItems), "Quantity" @= _oQuantity] -- | A complex type that contains information about the objects that you want -- to invalidate. -- -- /See:/ 'paths' smart constructor. data Paths = Paths' { _pItems :: !(Maybe [Text]) , _pQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Paths' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'pItems' -- -- * 'pQuantity' paths :: Int -- ^ 'pQuantity' -> Paths paths pQuantity_ = Paths' { _pItems = Nothing , _pQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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" .!@ mempty >>= may (parseXMLList "Path")) <*> (x .@ "Quantity") instance ToXML Paths where toXML Paths'{..} = mconcat ["Items" @= toXML (toXMLList "Path" <$> _pItems), "Quantity" @= _pQuantity] -- | A complex type that identifies ways in which you want to restrict -- distribution of your content. -- -- /See:/ 'restrictions' smart constructor. newtype Restrictions = Restrictions' { _rGeoRestriction :: GeoRestriction } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Restrictions' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rGeoRestriction' restrictions :: GeoRestriction -- ^ 'rGeoRestriction' -> Restrictions restrictions pGeoRestriction_ = Restrictions' { _rGeoRestriction = pGeoRestriction_ } -- | Undocumented member. 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'{..} = mconcat ["GeoRestriction" @= _rGeoRestriction] -- | A complex type that contains information about the Amazon S3 bucket from -- which you want CloudFront to get your media files for distribution. -- -- /See:/ 's3Origin' smart constructor. data S3Origin = S3Origin' { _soDomainName :: !Text , _soOriginAccessIdentity :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'S3Origin' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'soDomainName' -- -- * 'soOriginAccessIdentity' s3Origin :: Text -- ^ 'soDomainName' -> Text -- ^ 'soOriginAccessIdentity' -> S3Origin s3Origin pDomainName_ pOriginAccessIdentity_ = S3Origin' { _soDomainName = pDomainName_ , _soOriginAccessIdentity = pOriginAccessIdentity_ } -- | 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'{..} = mconcat ["DomainName" @= _soDomainName, "OriginAccessIdentity" @= _soOriginAccessIdentity] -- | A complex type that contains information about the Amazon S3 origin. If -- the origin is a custom origin, use the CustomOriginConfig element -- instead. -- -- /See:/ 's3OriginConfig' smart constructor. newtype S3OriginConfig = S3OriginConfig' { _socOriginAccessIdentity :: Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'S3OriginConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'socOriginAccessIdentity' s3OriginConfig :: Text -- ^ 'socOriginAccessIdentity' -> S3OriginConfig s3OriginConfig pOriginAccessIdentity_ = S3OriginConfig' { _socOriginAccessIdentity = pOriginAccessIdentity_ } -- | 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'{..} = mconcat ["OriginAccessIdentity" @= _socOriginAccessIdentity] -- | A complex type that lists the AWS accounts that were included in the -- TrustedSigners complex type, as well as their active CloudFront key pair -- IDs, if any. -- -- /See:/ 'signer' smart constructor. data Signer = Signer' { _sAWSAccountNumber :: !(Maybe Text) , _sKeyPairIds :: !(Maybe KeyPairIds) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'Signer' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sAWSAccountNumber' -- -- * 'sKeyPairIds' 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") -- | A streaming distribution. -- -- /See:/ 'streamingDistribution' smart constructor. data StreamingDistribution = StreamingDistribution' { _sdLastModifiedTime :: !(Maybe ISO8601) , _sdId :: !Text , _sdStatus :: !Text , _sdDomainName :: !Text , _sdActiveTrustedSigners :: !ActiveTrustedSigners , _sdStreamingDistributionConfig :: !StreamingDistributionConfig } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StreamingDistribution' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sdLastModifiedTime' -- -- * 'sdId' -- -- * 'sdStatus' -- -- * 'sdDomainName' -- -- * 'sdActiveTrustedSigners' -- -- * 'sdStreamingDistributionConfig' streamingDistribution :: Text -- ^ 'sdId' -> Text -- ^ 'sdStatus' -> Text -- ^ 'sdDomainName' -> ActiveTrustedSigners -- ^ 'sdActiveTrustedSigners' -> StreamingDistributionConfig -- ^ 'sdStreamingDistributionConfig' -> StreamingDistribution streamingDistribution pId_ pStatus_ pDomainName_ pActiveTrustedSigners_ pStreamingDistributionConfig_ = StreamingDistribution' { _sdLastModifiedTime = Nothing , _sdId = pId_ , _sdStatus = pStatus_ , _sdDomainName = pDomainName_ , _sdActiveTrustedSigners = pActiveTrustedSigners_ , _sdStreamingDistributionConfig = pStreamingDistributionConfig_ } -- | 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 identifier for the streaming distribution. For example: -- EGTXBD79H29TRA8. sdId :: Lens' StreamingDistribution Text sdId = lens _sdId (\ s a -> s{_sdId = a}); -- | 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 domain name corresponding to the streaming distribution. For -- example: s5c39gqb8ow64r.cloudfront.net. sdDomainName :: Lens' StreamingDistribution Text sdDomainName = lens _sdDomainName (\ s a -> s{_sdDomainName = a}); -- | 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 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 .@? "LastModifiedTime") <*> (x .@ "Id") <*> (x .@ "Status") <*> (x .@ "DomainName") <*> (x .@ "ActiveTrustedSigners") <*> (x .@ "StreamingDistributionConfig") -- | The configuration for the streaming distribution. -- -- /See:/ 'streamingDistributionConfig' smart constructor. data StreamingDistributionConfig = StreamingDistributionConfig' { _sdcAliases :: !(Maybe Aliases) , _sdcPriceClass :: !(Maybe PriceClass) , _sdcLogging :: !(Maybe StreamingLoggingConfig) , _sdcCallerReference :: !Text , _sdcS3Origin :: !S3Origin , _sdcComment :: !Text , _sdcTrustedSigners :: !TrustedSigners , _sdcEnabled :: !Bool } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StreamingDistributionConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sdcAliases' -- -- * 'sdcPriceClass' -- -- * 'sdcLogging' -- -- * 'sdcCallerReference' -- -- * 'sdcS3Origin' -- -- * 'sdcComment' -- -- * 'sdcTrustedSigners' -- -- * 'sdcEnabled' streamingDistributionConfig :: Text -- ^ 'sdcCallerReference' -> S3Origin -- ^ 'sdcS3Origin' -> Text -- ^ 'sdcComment' -> TrustedSigners -- ^ 'sdcTrustedSigners' -> Bool -- ^ 'sdcEnabled' -> StreamingDistributionConfig streamingDistributionConfig pCallerReference_ pS3Origin_ pComment_ pTrustedSigners_ pEnabled_ = StreamingDistributionConfig' { _sdcAliases = Nothing , _sdcPriceClass = Nothing , _sdcLogging = Nothing , _sdcCallerReference = pCallerReference_ , _sdcS3Origin = pS3Origin_ , _sdcComment = pComment_ , _sdcTrustedSigners = pTrustedSigners_ , _sdcEnabled = pEnabled_ } -- | A complex type that contains information about CNAMEs (alternate domain -- names), if any, for this streaming distribution. sdcAliases :: Lens' StreamingDistributionConfig (Maybe Aliases) sdcAliases = lens _sdcAliases (\ s a -> s{_sdcAliases = a}); -- | A complex type that contains information about price class for this -- streaming distribution. sdcPriceClass :: Lens' StreamingDistributionConfig (Maybe PriceClass) sdcPriceClass = lens _sdcPriceClass (\ s a -> s{_sdcPriceClass = a}); -- | A complex type that controls whether access logs are written for the -- streaming distribution. sdcLogging :: Lens' StreamingDistributionConfig (Maybe StreamingLoggingConfig) sdcLogging = lens _sdcLogging (\ s a -> s{_sdcLogging = 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}); -- | 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}); -- | Any comments you want to include about the streaming distribution. sdcComment :: Lens' StreamingDistributionConfig Text sdcComment = lens _sdcComment (\ s a -> s{_sdcComment = 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}); -- | 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}); instance FromXML StreamingDistributionConfig where parseXML x = StreamingDistributionConfig' <$> (x .@? "Aliases") <*> (x .@? "PriceClass") <*> (x .@? "Logging") <*> (x .@ "CallerReference") <*> (x .@ "S3Origin") <*> (x .@ "Comment") <*> (x .@ "TrustedSigners") <*> (x .@ "Enabled") instance ToXML StreamingDistributionConfig where toXML StreamingDistributionConfig'{..} = mconcat ["Aliases" @= _sdcAliases, "PriceClass" @= _sdcPriceClass, "Logging" @= _sdcLogging, "CallerReference" @= _sdcCallerReference, "S3Origin" @= _sdcS3Origin, "Comment" @= _sdcComment, "TrustedSigners" @= _sdcTrustedSigners, "Enabled" @= _sdcEnabled] -- | A streaming distribution list. -- -- /See:/ 'streamingDistributionList' smart constructor. data StreamingDistributionList = StreamingDistributionList' { _sdlItems :: !(Maybe [StreamingDistributionSummary]) , _sdlNextMarker :: !(Maybe Text) , _sdlMarker :: !Text , _sdlMaxItems :: !Int , _sdlIsTruncated :: !Bool , _sdlQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StreamingDistributionList' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sdlItems' -- -- * 'sdlNextMarker' -- -- * 'sdlMarker' -- -- * 'sdlMaxItems' -- -- * 'sdlIsTruncated' -- -- * 'sdlQuantity' streamingDistributionList :: Text -- ^ 'sdlMarker' -> Int -- ^ 'sdlMaxItems' -> Bool -- ^ 'sdlIsTruncated' -> Int -- ^ 'sdlQuantity' -> StreamingDistributionList streamingDistributionList pMarker_ pMaxItems_ pIsTruncated_ pQuantity_ = StreamingDistributionList' { _sdlItems = Nothing , _sdlNextMarker = Nothing , _sdlMarker = pMarker_ , _sdlMaxItems = pMaxItems_ , _sdlIsTruncated = pIsTruncated_ , _sdlQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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 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}); -- | 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}); -- | 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 .@? "Items" .!@ mempty >>= may (parseXMLList "StreamingDistributionSummary")) <*> (x .@? "NextMarker") <*> (x .@ "Marker") <*> (x .@ "MaxItems") <*> (x .@ "IsTruncated") <*> (x .@ "Quantity") -- | A summary of the information for an Amazon CloudFront streaming -- distribution. -- -- /See:/ 'streamingDistributionSummary' smart constructor. data StreamingDistributionSummary = StreamingDistributionSummary' { _sdsId :: !Text , _sdsStatus :: !Text , _sdsLastModifiedTime :: !ISO8601 , _sdsDomainName :: !Text , _sdsS3Origin :: !S3Origin , _sdsAliases :: !Aliases , _sdsTrustedSigners :: !TrustedSigners , _sdsComment :: !Text , _sdsPriceClass :: !PriceClass , _sdsEnabled :: !Bool } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StreamingDistributionSummary' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'sdsId' -- -- * 'sdsStatus' -- -- * 'sdsLastModifiedTime' -- -- * 'sdsDomainName' -- -- * 'sdsS3Origin' -- -- * 'sdsAliases' -- -- * 'sdsTrustedSigners' -- -- * 'sdsComment' -- -- * 'sdsPriceClass' -- -- * 'sdsEnabled' streamingDistributionSummary :: Text -- ^ 'sdsId' -> Text -- ^ 'sdsStatus' -> UTCTime -- ^ 'sdsLastModifiedTime' -> Text -- ^ 'sdsDomainName' -> S3Origin -- ^ 'sdsS3Origin' -> Aliases -- ^ 'sdsAliases' -> TrustedSigners -- ^ 'sdsTrustedSigners' -> Text -- ^ 'sdsComment' -> PriceClass -- ^ 'sdsPriceClass' -> Bool -- ^ 'sdsEnabled' -> StreamingDistributionSummary streamingDistributionSummary pId_ pStatus_ pLastModifiedTime_ pDomainName_ pS3Origin_ pAliases_ pTrustedSigners_ pComment_ pPriceClass_ pEnabled_ = StreamingDistributionSummary' { _sdsId = pId_ , _sdsStatus = pStatus_ , _sdsLastModifiedTime = _Time # pLastModifiedTime_ , _sdsDomainName = pDomainName_ , _sdsS3Origin = pS3Origin_ , _sdsAliases = pAliases_ , _sdsTrustedSigners = pTrustedSigners_ , _sdsComment = pComment_ , _sdsPriceClass = pPriceClass_ , _sdsEnabled = pEnabled_ } -- | The identifier for the distribution. For example: EDFDVBD632BHDS5. sdsId :: Lens' StreamingDistributionSummary Text sdsId = lens _sdsId (\ s a -> s{_sdsId = 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}); -- | The date and time the distribution was last modified. sdsLastModifiedTime :: Lens' StreamingDistributionSummary UTCTime sdsLastModifiedTime = lens _sdsLastModifiedTime (\ s a -> s{_sdsLastModifiedTime = a}) . _Time; -- | The domain name corresponding to the distribution. For example: -- d604721fxaaqy9.cloudfront.net. sdsDomainName :: Lens' StreamingDistributionSummary Text sdsDomainName = lens _sdsDomainName (\ s a -> s{_sdsDomainName = 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}); -- | 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}); -- | 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}); -- | The comment originally specified when this distribution was created. sdsComment :: Lens' StreamingDistributionSummary Text sdsComment = lens _sdsComment (\ s a -> s{_sdsComment = a}); -- | Undocumented member. sdsPriceClass :: Lens' StreamingDistributionSummary PriceClass sdsPriceClass = lens _sdsPriceClass (\ s a -> s{_sdsPriceClass = 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}); instance FromXML StreamingDistributionSummary where parseXML x = StreamingDistributionSummary' <$> (x .@ "Id") <*> (x .@ "Status") <*> (x .@ "LastModifiedTime") <*> (x .@ "DomainName") <*> (x .@ "S3Origin") <*> (x .@ "Aliases") <*> (x .@ "TrustedSigners") <*> (x .@ "Comment") <*> (x .@ "PriceClass") <*> (x .@ "Enabled") -- | A complex type that controls whether access logs are written for this -- streaming distribution. -- -- /See:/ 'streamingLoggingConfig' smart constructor. data StreamingLoggingConfig = StreamingLoggingConfig' { _slcEnabled :: !Bool , _slcBucket :: !Text , _slcPrefix :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'StreamingLoggingConfig' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'slcEnabled' -- -- * 'slcBucket' -- -- * 'slcPrefix' streamingLoggingConfig :: Bool -- ^ 'slcEnabled' -> Text -- ^ 'slcBucket' -> Text -- ^ 'slcPrefix' -> StreamingLoggingConfig streamingLoggingConfig pEnabled_ pBucket_ pPrefix_ = StreamingLoggingConfig' { _slcEnabled = pEnabled_ , _slcBucket = pBucket_ , _slcPrefix = pPrefix_ } -- | 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}); -- | 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}); -- | 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 .@ "Enabled") <*> (x .@ "Bucket") <*> (x .@ "Prefix") instance ToXML StreamingLoggingConfig where toXML StreamingLoggingConfig'{..} = mconcat ["Enabled" @= _slcEnabled, "Bucket" @= _slcBucket, "Prefix" @= _slcPrefix] -- | 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. -- -- /See:/ 'trustedSigners' smart constructor. data TrustedSigners = TrustedSigners' { _tsItems :: !(Maybe [Text]) , _tsEnabled :: !Bool , _tsQuantity :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'TrustedSigners' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'tsItems' -- -- * 'tsEnabled' -- -- * 'tsQuantity' trustedSigners :: Bool -- ^ 'tsEnabled' -> Int -- ^ 'tsQuantity' -> TrustedSigners trustedSigners pEnabled_ pQuantity_ = TrustedSigners' { _tsItems = Nothing , _tsEnabled = pEnabled_ , _tsQuantity = pQuantity_ } -- | 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}) . _Default . _Coerce; -- | 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}); -- | 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 .@? "Items" .!@ mempty >>= may (parseXMLList "AwsAccountNumber")) <*> (x .@ "Enabled") <*> (x .@ "Quantity") instance ToXML TrustedSigners where toXML TrustedSigners'{..} = mconcat ["Items" @= toXML (toXMLList "AwsAccountNumber" <$> _tsItems), "Enabled" @= _tsEnabled, "Quantity" @= _tsQuantity] -- | A complex type that contains information about viewer certificates for -- this distribution. -- -- /See:/ 'viewerCertificate' smart constructor. data ViewerCertificate = ViewerCertificate' { _vcSSLSupportMethod :: !(Maybe SSLSupportMethod) , _vcMinimumProtocolVersion :: !(Maybe MinimumProtocolVersion) , _vcIAMCertificateId :: !(Maybe Text) , _vcCloudFrontDefaultCertificate :: !(Maybe Bool) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ViewerCertificate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'vcSSLSupportMethod' -- -- * 'vcMinimumProtocolVersion' -- -- * 'vcIAMCertificateId' -- -- * 'vcCloudFrontDefaultCertificate' viewerCertificate :: ViewerCertificate viewerCertificate = ViewerCertificate' { _vcSSLSupportMethod = Nothing , _vcMinimumProtocolVersion = Nothing , _vcIAMCertificateId = Nothing , _vcCloudFrontDefaultCertificate = Nothing } -- | 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 SSLSupportMethod) vcSSLSupportMethod = lens _vcSSLSupportMethod (\ s a -> s{_vcSSLSupportMethod = a}); -- | Specify the minimum version of the SSL protocol that you want CloudFront -- to use, SSLv3 or TLSv1, for HTTPS connections. CloudFront will serve -- your objects only to browsers or devices that support at least the SSL -- version that you specify. The TLSv1 protocol is more secure, so we -- recommend that you specify SSLv3 only if your users are using browsers -- or devices that don\'t support TLSv1. If you\'re using a custom -- certificate (if you specify a value for IAMCertificateId) and if you\'re -- using dedicated IP (if you specify vip for SSLSupportMethod), you can -- choose SSLv3 or TLSv1 as the MinimumProtocolVersion. If you\'re using a -- custom certificate (if you specify a value for IAMCertificateId) and if -- you\'re using SNI (if you specify sni-only for SSLSupportMethod), you -- must specify TLSv1 for MinimumProtocolVersion. vcMinimumProtocolVersion :: Lens' ViewerCertificate (Maybe MinimumProtocolVersion) vcMinimumProtocolVersion = lens _vcMinimumProtocolVersion (\ s a -> s{_vcMinimumProtocolVersion = 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 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}); instance FromXML ViewerCertificate where parseXML x = ViewerCertificate' <$> (x .@? "SSLSupportMethod") <*> (x .@? "MinimumProtocolVersion") <*> (x .@? "IAMCertificateId") <*> (x .@? "CloudFrontDefaultCertificate") instance ToXML ViewerCertificate where toXML ViewerCertificate'{..} = mconcat ["SSLSupportMethod" @= _vcSSLSupportMethod, "MinimumProtocolVersion" @= _vcMinimumProtocolVersion, "IAMCertificateId" @= _vcIAMCertificateId, "CloudFrontDefaultCertificate" @= _vcCloudFrontDefaultCertificate]