{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE DeriveGeneric #-} module Network.DigitalOcean.Services.Region where ----------------------------------------------------------------- import Data.Aeson import Data.Aeson.Casing import GHC.Generics ----------------------------------------------------------------- import Network.DigitalOcean.Types ----------------------------------------------------------------- data Region = Region { regionSlug :: String , regionName :: String , regionSizes :: [String] -- TODO: Make a type , regionAvailable :: Bool , regionFeatures :: [String] -- TODO: Make a type } deriving (Show, Generic) instance FromJSON (Response [Region]) where parseJSON (Object v) = fmap Response $ parseJSON =<< (v .: "regions") instance FromJSON Region where parseJSON = genericParseJSON $ aesonPrefix snakeCase instance ToJSON Region where toJSON = genericToJSON $ aesonPrefix snakeCase