module Azure.BlobDataTypes where
import qualified Data.ByteString as B
import Data.Text (Text)
import Data.Default
import System.FilePath (FilePath)
data AccessControl = ContainerPublic
| BlobPublic
| Private
data CommonBlobSettings = BlobSettings {
blobSettingsContentType :: Maybe B.ByteString
, blobSettingsContentEncoding :: Maybe B.ByteString
, blobSettingsContentLanguage :: Maybe B.ByteString
, blobSettingsContentMD5 :: Maybe B.ByteString
, blobSettingsCacheControl :: Maybe B.ByteString
, blobSettingsMetaData :: [(Text, Text)]
} deriving Show
instance Default CommonBlobSettings where
def = BlobSettings Nothing Nothing Nothing Nothing Nothing []
data BlobSettings =
BlockBlobSettings { blockBlobName :: B.ByteString
, blockBlobContents :: B.ByteString
, blockBlobSettings :: CommonBlobSettings
}
| FileBlobSettings { blockBlobName :: B.ByteString
, blockBlobFile :: FilePath
, blockBlobSettings :: CommonBlobSettings
}
| PageBlobSettings { pageBlobName :: B.ByteString
, pageBlobContentLength :: Integer
, pageBlobSettings :: CommonBlobSettings
}
deriving Show
data BlobType = PageBlob | BlockBlob deriving (Show)
data Blob = Blob { blobName :: B.ByteString
, blobUrl :: B.ByteString
, blobLastModified :: B.ByteString
, blobETag :: B.ByteString
, blobContentLength :: Integer
, blobContentType :: B.ByteString
, blobContentEncoding :: B.ByteString
, blobContentLanguage :: B.ByteString
, blobContentMD5 :: B.ByteString
, blobCacheControl :: B.ByteString
, blobType :: BlobType
} deriving (Show)