{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE DeriveGeneric #-}
module Network.DigitalOcean.Services.Size where
import Data.Aeson
import Data.Aeson.Casing
import GHC.Generics
import Network.DigitalOcean.Types
data Size = Size
{ sizeSlug :: String
, sizeAvailable :: Bool
, sizeTransfer :: Double
, sizePriceMonthly :: Double
, sizePriceHourly :: Double
, sizeMemory :: Int
, sizeVcpus :: Int
, sizeDisk :: Int
} deriving (Show, Generic)
instance FromJSON (Response [Size]) where
parseJSON (Object v) =
fmap Response $ parseJSON =<< (v .: "sizes")
instance FromJSON Size where
parseJSON = genericParseJSON $ aesonPrefix snakeCase