packages feed

silvi-0.0.2: src/Silvi/Types.hs

module Silvi.Types
  ( HttpMethod(..)
  , HttpStatus(..)
  , HttpProtocol(..)
  , HttpProtocolVersion(..)
  , Url(..)
  , UserId(..)
  , ObjSize(..)
  , IPv4(..)
  , OffsetDatetime(..)
  ) where

import           Chronos.Types              (Offset (..), OffsetDatetime (..))
import           Data.Text                  (Text)
import           Net.Types                  (IPv4 (..))
import           Network.HTTP.Types.Method
import           Network.HTTP.Types.Status
import           Network.HTTP.Types.Version

-- | Type alias for Netowrk.HTTP.Types.Method, renamed
--   to be more explicit.
--
type HttpMethod = Method

-- | Type alias for Network.HTTP.Types.Status, renamed
--   to be more explicit.
--
type HttpStatus = Status

-- | The HTTP Protocol used.
--
data HttpProtocol = HTTP | HTTPS | FTP deriving (Show, Eq)

-- | Type alias for Network.HTTP.Types.Version, renamed
--   to be more explicit.
--
type HttpProtocolVersion = HttpVersion

-- | Url type.
--   TODO: Expand on this for better randomisation.
--
newtype Url = Url { getUrl :: Text }
  deriving (Show,Eq)

-- | UserId type.
--
newtype UserId = UserId { getUserId :: Text }
  deriving (Show,Eq)

-- | Requested resource size.
--
newtype ObjSize = ObjSize { getObjSize :: Text }
  deriving (Show,Eq)