amazonka-iam-policy 0.0.1 → 0.0.2
raw patch · 2 files changed
+15/−21 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Amazonka.IAM.Policy: instance (Data.Semigroup.Semigroup a, GHC.Base.Monoid a) => GHC.Base.Monoid (Amazonka.IAM.Policy.Match a)
- Amazonka.IAM.Policy: instance Data.Semigroup.Semigroup (Amazonka.IAM.Policy.Policy a)
- Amazonka.IAM.Policy: instance Data.Semigroup.Semigroup Amazonka.IAM.Policy.Version
- Amazonka.IAM.Policy: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Amazonka.IAM.Policy.Match a)
+ Amazonka.IAM.Policy: instance (GHC.Base.Semigroup a, GHC.Base.Monoid a) => GHC.Base.Monoid (Amazonka.IAM.Policy.Match a)
+ Amazonka.IAM.Policy: instance GHC.Base.Semigroup (Amazonka.IAM.Policy.Policy a)
+ Amazonka.IAM.Policy: instance GHC.Base.Semigroup Amazonka.IAM.Policy.Version
+ Amazonka.IAM.Policy: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Amazonka.IAM.Policy.Match a)
+ Amazonka.IAM.Policy: type Document = Policy Statement
Files
- amazonka-iam-policy.cabal +1/−2
- src/Amazonka/IAM/Policy.hs +14/−19
amazonka-iam-policy.cabal view
@@ -1,5 +1,5 @@ name: amazonka-iam-policy-version: 0.0.1+version: 0.0.2 synopsis: Amazon IAM Policy Document DSL and Combinators. homepage: https://github.com/brendanhay/amazonka-iam-policy bug-reports: https://github.com/brendanhay/amazonka-iam-policy/issues@@ -35,7 +35,6 @@ source-repository head type: git location: git://github.com/brendanhay/amazonka-iam-policy.git- subdir: amazonka-iam-policy library default-language: Haskell2010
src/Amazonka/IAM/Policy.hs view
@@ -28,7 +28,8 @@ -- $usage -- * Policy Documents- Policy (..)+ Document+ , Policy (..) -- ** Constructing Policies , document@@ -104,6 +105,7 @@ import qualified Data.Aeson.Types as JSON import qualified Data.ByteString.Base64 as Base64 import qualified Data.ByteString.Lazy as LBS+import qualified Data.List.NonEmpty as NE import qualified Data.Text.Encoding as Text import qualified Data.Time.Clock.POSIX as POSIX import qualified Data.Time.Format as Time@@ -277,28 +279,24 @@ "Action": [ "foo", "bar"- ],- "Resource": []+ ] ... >>> encode' $ singleton (allow { action = not ["baz"] }) ... "Effect": "Allow",- "Resource": [], "NotAction": "baz" ... >>> encode' $ singleton (allow { action = any }) ... "Effect": "Allow",- "Action": "*",- "Resource": []+ "Action": "*" ... >>> encode' $ singleton (allow { action = none }) ... "Effect": "Allow",- "Resource": [], "NotAction": "*" ... @@ -446,6 +444,8 @@ > } -}+type Document = Policy Statement+ data Policy a = Policy { version :: !(Maybe Version) , id :: !(Maybe Id)@@ -488,13 +488,11 @@ "Statement": [ { "Effect": "Allow",- "Action": [],- "Resource": []+ "Action": [] }, { "Effect": "Deny",- "Action": [],- "Resource": []+ "Action": [] } ], "Version": "2012-10-17"@@ -536,7 +534,7 @@ ==== Example >>> encode $ singleton allow-"{\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[],\"Resource\":[]}],\"Version\":\"2012-10-17\"}"+"{\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[]}],\"Version\":\"2012-10-17\"}" -} encode :: Policy Statement -> LBS.ByteString@@ -648,7 +646,8 @@ , fmap (blockToJSON "Principal") principal , Just ("Effect" .= effect) , Just (blockToJSON "Action" $ oneOrMany action)- , Just (blockToJSON "Resource" $ oneOrMany resource)+ , fmap (blockToJSON "Resource" . oneOrMany . fmap NE.toList)+ (sequence (fmap NE.nonEmpty resource)) , fmap ("Condition" .=) condition ] {-# INLINEABLE toJSON #-}@@ -711,7 +710,6 @@ { "Effect": "Allow", "Action": [],- "Resource": [], "Sid": "cd3ad3d9-2776-4ef1-a904-4c229d1642ee" } ],@@ -795,8 +793,7 @@ { "Effect": "Allow", "NotPrincipal": "*",- "Action": [],- "Resource": []+ "Action": [] } ], "Version": "2012-10-17"@@ -812,8 +809,7 @@ "AWS": [ "arn:foo:::bar" ]- },- "Resource": []+ } } ], "Version": "2012-10-17"@@ -992,7 +988,6 @@ { "Effect": "Allow", "Action": [],- "Resource": [], "Condition": { "Bool": { "aws:MultiFactorAuthPresent": true