{-# LANGUAGE OverloadedStrings #-} module Aws.S3.Info where import Aws.Http import Aws.S3.Model import Data.Time import qualified Data.Ascii as A data S3Authorization = S3AuthorizationHeader | S3AuthorizationQuery deriving (Show) data Endpoint = Endpoint { endpointHost :: A.Ascii , endpointDefaultLocationConstraint :: LocationConstraint , endpointAllowedLocationConstraints :: [LocationConstraint] } deriving (Show) data S3Info = S3Info { s3Protocol :: Protocol , s3Endpoint :: Endpoint , s3Port :: Int , s3UseUri :: Bool , s3DefaultExpiry :: NominalDiffTime } deriving (Show) s3EndpointUsClassic :: Endpoint s3EndpointUsClassic = Endpoint { endpointHost = "s3.amazonaws.com" , endpointDefaultLocationConstraint = locationUsClassic , endpointAllowedLocationConstraints = [locationUsClassic , locationUsWest , locationEu , locationApSouthEast , locationApNorthEast] } s3EndpointUsWest :: Endpoint s3EndpointUsWest = Endpoint { endpointHost = "s3-us-west-1.amazonaws.com" , endpointDefaultLocationConstraint = locationUsWest , endpointAllowedLocationConstraints = [locationUsWest] } s3EndpointEu :: Endpoint s3EndpointEu = Endpoint { endpointHost = "s3-eu-west-1.amazonaws.com" , endpointDefaultLocationConstraint = locationEu , endpointAllowedLocationConstraints = [locationEu] } s3EndpointApSouthEast :: Endpoint s3EndpointApSouthEast = Endpoint { endpointHost = "s3-ap-southeast-1.amazonaws.com" , endpointDefaultLocationConstraint = locationApSouthEast , endpointAllowedLocationConstraints = [locationApSouthEast] } s3EndpointApNorthEast :: Endpoint s3EndpointApNorthEast = Endpoint { endpointHost = "s3-ap-northeast-1.amazonaws.com" , endpointDefaultLocationConstraint = locationApNorthEast , endpointAllowedLocationConstraints = [locationApNorthEast] } s3 :: Protocol -> Endpoint -> Bool -> S3Info s3 protocol endpoint uri = S3Info { s3Protocol = protocol , s3Endpoint = endpoint , s3Port = defaultPort protocol , s3UseUri = uri , s3DefaultExpiry = 15*60 }