{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module Network.AWS.ARN.S3
(
Object (..),
parseObject,
renderObject,
Bucket (..),
parseBucket,
renderBucket,
_Object,
_Bucket,
)
where
import Data.Hashable (Hashable)
import Data.Text (Text)
import qualified Data.Text as T
import GHC.Generics (Generic)
import Network.AWS.ARN.Internal.Lens (Prism', prism')
data Object = Object
{ Object -> Bucket
bucket :: Bucket,
Object -> Text
objectKey :: Text
}
deriving (Object -> Object -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Object -> Object -> Bool
$c/= :: Object -> Object -> Bool
== :: Object -> Object -> Bool
$c== :: Object -> Object -> Bool
Eq, Eq Object
Object -> Object -> Bool
Object -> Object -> Ordering
Object -> Object -> Object
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Object -> Object -> Object
$cmin :: Object -> Object -> Object
max :: Object -> Object -> Object
$cmax :: Object -> Object -> Object
>= :: Object -> Object -> Bool
$c>= :: Object -> Object -> Bool
> :: Object -> Object -> Bool
$c> :: Object -> Object -> Bool
<= :: Object -> Object -> Bool
$c<= :: Object -> Object -> Bool
< :: Object -> Object -> Bool
$c< :: Object -> Object -> Bool
compare :: Object -> Object -> Ordering
$ccompare :: Object -> Object -> Ordering
Ord, Eq Object
Int -> Object -> Int
Object -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Object -> Int
$chash :: Object -> Int
hashWithSalt :: Int -> Object -> Int
$chashWithSalt :: Int -> Object -> Int
Hashable, Int -> Object -> ShowS
[Object] -> ShowS
Object -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Object] -> ShowS
$cshowList :: [Object] -> ShowS
show :: Object -> String
$cshow :: Object -> String
showsPrec :: Int -> Object -> ShowS
$cshowsPrec :: Int -> Object -> ShowS
Show, forall x. Rep Object x -> Object
forall x. Object -> Rep Object x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Object x -> Object
$cfrom :: forall x. Object -> Rep Object x
Generic)
parseObject :: Text -> Maybe Object
parseObject :: Text -> Maybe Object
parseObject Text
t = case Text -> Text -> (Text, Text)
T.breakOn Text
"/" Text
t of
(Text
"", Text
_) -> forall a. Maybe a
Nothing
(Text
_, Text
"") -> forall a. Maybe a
Nothing
(Text
bucketName, Text
object) -> forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Bucket -> Text -> Object
Object (Text -> Bucket
Bucket Text
bucketName) (Int -> Text -> Text
T.drop Int
1 Text
object)
renderObject :: Object -> Text
renderObject :: Object -> Text
renderObject Object {Bucket
bucket :: Bucket
$sel:bucket:Object :: Object -> Bucket
bucket, Text
objectKey :: Text
$sel:objectKey:Object :: Object -> Text
objectKey} =
Bucket -> Text
renderBucket Bucket
bucket forall a. Semigroup a => a -> a -> a
<> Text
"/" forall a. Semigroup a => a -> a -> a
<> Text
objectKey
_Object :: Prism' Text Object
_Object :: Prism' Text Object
_Object = forall s a. (a -> s) -> (s -> Maybe a) -> Prism' s a
prism' Object -> Text
renderObject Text -> Maybe Object
parseObject
newtype Bucket = Bucket {Bucket -> Text
bucketName :: Text}
deriving stock (Bucket -> Bucket -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Bucket -> Bucket -> Bool
$c/= :: Bucket -> Bucket -> Bool
== :: Bucket -> Bucket -> Bool
$c== :: Bucket -> Bucket -> Bool
Eq, Eq Bucket
Bucket -> Bucket -> Bool
Bucket -> Bucket -> Ordering
Bucket -> Bucket -> Bucket
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Bucket -> Bucket -> Bucket
$cmin :: Bucket -> Bucket -> Bucket
max :: Bucket -> Bucket -> Bucket
$cmax :: Bucket -> Bucket -> Bucket
>= :: Bucket -> Bucket -> Bool
$c>= :: Bucket -> Bucket -> Bool
> :: Bucket -> Bucket -> Bool
$c> :: Bucket -> Bucket -> Bool
<= :: Bucket -> Bucket -> Bool
$c<= :: Bucket -> Bucket -> Bool
< :: Bucket -> Bucket -> Bool
$c< :: Bucket -> Bucket -> Bool
compare :: Bucket -> Bucket -> Ordering
$ccompare :: Bucket -> Bucket -> Ordering
Ord, Int -> Bucket -> ShowS
[Bucket] -> ShowS
Bucket -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Bucket] -> ShowS
$cshowList :: [Bucket] -> ShowS
show :: Bucket -> String
$cshow :: Bucket -> String
showsPrec :: Int -> Bucket -> ShowS
$cshowsPrec :: Int -> Bucket -> ShowS
Show, forall x. Rep Bucket x -> Bucket
forall x. Bucket -> Rep Bucket x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Bucket x -> Bucket
$cfrom :: forall x. Bucket -> Rep Bucket x
Generic)
deriving anyclass (Eq Bucket
Int -> Bucket -> Int
Bucket -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Bucket -> Int
$chash :: Bucket -> Int
hashWithSalt :: Int -> Bucket -> Int
$chashWithSalt :: Int -> Bucket -> Int
Hashable)
parseBucket :: Text -> Maybe Bucket
parseBucket :: Text -> Maybe Bucket
parseBucket Text
t = case Text -> Text -> (Text, Text)
T.breakOn Text
"/" Text
t of
(Text
bucket, Text
"") -> forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ Text -> Bucket
Bucket Text
bucket
(Text, Text)
_ -> forall a. Maybe a
Nothing
renderBucket :: Bucket -> Text
renderBucket :: Bucket -> Text
renderBucket Bucket {Text
bucketName :: Text
$sel:bucketName:Bucket :: Bucket -> Text
bucketName} = Text
bucketName
_Bucket :: Prism' Text Bucket
_Bucket :: Prism' Text Bucket
_Bucket = forall s a. (a -> s) -> (s -> Maybe a) -> Prism' s a
prism' Bucket -> Text
renderBucket Text -> Maybe Bucket
parseBucket