{-# LANGUAGE OverloadedStrings, TemplateHaskell #-}
module Web.Mackerel.Api.Role
( listRoles
, createRole
, deleteRole
) where
import Data.Aeson.TH (deriveJSON)
import qualified Data.ByteString.Char8 as BS
import Network.HTTP.Types (StdMethod(..))
import Web.Mackerel.Client
import Web.Mackerel.Internal.Api
import Web.Mackerel.Internal.TH
import Web.Mackerel.Types.Role
data ListRolesResponse = ListRolesResponse { responseRoles :: [Role] }
$(deriveJSON options ''ListRolesResponse)
listRoles :: Client -> String -> IO (Either ApiError [Role])
listRoles client serviceName'
= request client GET ("/api/v0/services/" <> BS.pack serviceName' <> "/roles") [] emptyBody (createHandler responseRoles)
createRole :: Client -> String -> Role -> IO (Either ApiError Role)
createRole client serviceName' role
= request client POST ("/api/v0/services/" <> BS.pack serviceName' <> "/roles") [] (Just role) (createHandler id)
deleteRole :: Client -> String -> String -> IO (Either ApiError Role)
deleteRole client serviceName' name
= request client DELETE ("/api/v0/services/" <> BS.pack serviceName' <> "/roles/" <> BS.pack name) [] emptyBody (createHandler id)