{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.WorkMail.Types.MobileDeviceAccessRuleEffect
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.WorkMail.Types.MobileDeviceAccessRuleEffect
  ( MobileDeviceAccessRuleEffect
      ( ..,
        MobileDeviceAccessRuleEffect_ALLOW,
        MobileDeviceAccessRuleEffect_DENY
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype MobileDeviceAccessRuleEffect = MobileDeviceAccessRuleEffect'
  { MobileDeviceAccessRuleEffect -> Text
fromMobileDeviceAccessRuleEffect ::
      Core.Text
  }
  deriving stock
    ( Int -> MobileDeviceAccessRuleEffect -> ShowS
[MobileDeviceAccessRuleEffect] -> ShowS
MobileDeviceAccessRuleEffect -> String
(Int -> MobileDeviceAccessRuleEffect -> ShowS)
-> (MobileDeviceAccessRuleEffect -> String)
-> ([MobileDeviceAccessRuleEffect] -> ShowS)
-> Show MobileDeviceAccessRuleEffect
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MobileDeviceAccessRuleEffect] -> ShowS
$cshowList :: [MobileDeviceAccessRuleEffect] -> ShowS
show :: MobileDeviceAccessRuleEffect -> String
$cshow :: MobileDeviceAccessRuleEffect -> String
showsPrec :: Int -> MobileDeviceAccessRuleEffect -> ShowS
$cshowsPrec :: Int -> MobileDeviceAccessRuleEffect -> ShowS
Prelude.Show,
      ReadPrec [MobileDeviceAccessRuleEffect]
ReadPrec MobileDeviceAccessRuleEffect
Int -> ReadS MobileDeviceAccessRuleEffect
ReadS [MobileDeviceAccessRuleEffect]
(Int -> ReadS MobileDeviceAccessRuleEffect)
-> ReadS [MobileDeviceAccessRuleEffect]
-> ReadPrec MobileDeviceAccessRuleEffect
-> ReadPrec [MobileDeviceAccessRuleEffect]
-> Read MobileDeviceAccessRuleEffect
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MobileDeviceAccessRuleEffect]
$creadListPrec :: ReadPrec [MobileDeviceAccessRuleEffect]
readPrec :: ReadPrec MobileDeviceAccessRuleEffect
$creadPrec :: ReadPrec MobileDeviceAccessRuleEffect
readList :: ReadS [MobileDeviceAccessRuleEffect]
$creadList :: ReadS [MobileDeviceAccessRuleEffect]
readsPrec :: Int -> ReadS MobileDeviceAccessRuleEffect
$creadsPrec :: Int -> ReadS MobileDeviceAccessRuleEffect
Prelude.Read,
      MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
(MobileDeviceAccessRuleEffect
 -> MobileDeviceAccessRuleEffect -> Bool)
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> Bool)
-> Eq MobileDeviceAccessRuleEffect
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
$c/= :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
== :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
$c== :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
Prelude.Eq,
      Eq MobileDeviceAccessRuleEffect
Eq MobileDeviceAccessRuleEffect
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> Ordering)
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> Bool)
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> Bool)
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> Bool)
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> Bool)
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> MobileDeviceAccessRuleEffect)
-> (MobileDeviceAccessRuleEffect
    -> MobileDeviceAccessRuleEffect -> MobileDeviceAccessRuleEffect)
-> Ord MobileDeviceAccessRuleEffect
MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Ordering
MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> MobileDeviceAccessRuleEffect
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> MobileDeviceAccessRuleEffect
$cmin :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> MobileDeviceAccessRuleEffect
max :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> MobileDeviceAccessRuleEffect
$cmax :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> MobileDeviceAccessRuleEffect
>= :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
$c>= :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
> :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
$c> :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
<= :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
$c<= :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
< :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
$c< :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Bool
compare :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Ordering
$ccompare :: MobileDeviceAccessRuleEffect
-> MobileDeviceAccessRuleEffect -> Ordering
$cp1Ord :: Eq MobileDeviceAccessRuleEffect
Prelude.Ord,
      (forall x.
 MobileDeviceAccessRuleEffect -> Rep MobileDeviceAccessRuleEffect x)
-> (forall x.
    Rep MobileDeviceAccessRuleEffect x -> MobileDeviceAccessRuleEffect)
-> Generic MobileDeviceAccessRuleEffect
forall x.
Rep MobileDeviceAccessRuleEffect x -> MobileDeviceAccessRuleEffect
forall x.
MobileDeviceAccessRuleEffect -> Rep MobileDeviceAccessRuleEffect x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep MobileDeviceAccessRuleEffect x -> MobileDeviceAccessRuleEffect
$cfrom :: forall x.
MobileDeviceAccessRuleEffect -> Rep MobileDeviceAccessRuleEffect x
Prelude.Generic
    )
  deriving newtype
    ( Int -> MobileDeviceAccessRuleEffect -> Int
MobileDeviceAccessRuleEffect -> Int
(Int -> MobileDeviceAccessRuleEffect -> Int)
-> (MobileDeviceAccessRuleEffect -> Int)
-> Hashable MobileDeviceAccessRuleEffect
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: MobileDeviceAccessRuleEffect -> Int
$chash :: MobileDeviceAccessRuleEffect -> Int
hashWithSalt :: Int -> MobileDeviceAccessRuleEffect -> Int
$chashWithSalt :: Int -> MobileDeviceAccessRuleEffect -> Int
Prelude.Hashable,
      MobileDeviceAccessRuleEffect -> ()
(MobileDeviceAccessRuleEffect -> ())
-> NFData MobileDeviceAccessRuleEffect
forall a. (a -> ()) -> NFData a
rnf :: MobileDeviceAccessRuleEffect -> ()
$crnf :: MobileDeviceAccessRuleEffect -> ()
Prelude.NFData,
      Text -> Either String MobileDeviceAccessRuleEffect
(Text -> Either String MobileDeviceAccessRuleEffect)
-> FromText MobileDeviceAccessRuleEffect
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String MobileDeviceAccessRuleEffect
$cfromText :: Text -> Either String MobileDeviceAccessRuleEffect
Core.FromText,
      MobileDeviceAccessRuleEffect -> Text
(MobileDeviceAccessRuleEffect -> Text)
-> ToText MobileDeviceAccessRuleEffect
forall a. (a -> Text) -> ToText a
toText :: MobileDeviceAccessRuleEffect -> Text
$ctoText :: MobileDeviceAccessRuleEffect -> Text
Core.ToText,
      MobileDeviceAccessRuleEffect -> ByteString
(MobileDeviceAccessRuleEffect -> ByteString)
-> ToByteString MobileDeviceAccessRuleEffect
forall a. (a -> ByteString) -> ToByteString a
toBS :: MobileDeviceAccessRuleEffect -> ByteString
$ctoBS :: MobileDeviceAccessRuleEffect -> ByteString
Core.ToByteString,
      MobileDeviceAccessRuleEffect -> ByteStringBuilder
(MobileDeviceAccessRuleEffect -> ByteStringBuilder)
-> ToLog MobileDeviceAccessRuleEffect
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: MobileDeviceAccessRuleEffect -> ByteStringBuilder
$cbuild :: MobileDeviceAccessRuleEffect -> ByteStringBuilder
Core.ToLog,
      HeaderName -> MobileDeviceAccessRuleEffect -> [Header]
(HeaderName -> MobileDeviceAccessRuleEffect -> [Header])
-> ToHeader MobileDeviceAccessRuleEffect
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> MobileDeviceAccessRuleEffect -> [Header]
$ctoHeader :: HeaderName -> MobileDeviceAccessRuleEffect -> [Header]
Core.ToHeader,
      MobileDeviceAccessRuleEffect -> QueryString
(MobileDeviceAccessRuleEffect -> QueryString)
-> ToQuery MobileDeviceAccessRuleEffect
forall a. (a -> QueryString) -> ToQuery a
toQuery :: MobileDeviceAccessRuleEffect -> QueryString
$ctoQuery :: MobileDeviceAccessRuleEffect -> QueryString
Core.ToQuery,
      Value -> Parser [MobileDeviceAccessRuleEffect]
Value -> Parser MobileDeviceAccessRuleEffect
(Value -> Parser MobileDeviceAccessRuleEffect)
-> (Value -> Parser [MobileDeviceAccessRuleEffect])
-> FromJSON MobileDeviceAccessRuleEffect
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [MobileDeviceAccessRuleEffect]
$cparseJSONList :: Value -> Parser [MobileDeviceAccessRuleEffect]
parseJSON :: Value -> Parser MobileDeviceAccessRuleEffect
$cparseJSON :: Value -> Parser MobileDeviceAccessRuleEffect
Core.FromJSON,
      FromJSONKeyFunction [MobileDeviceAccessRuleEffect]
FromJSONKeyFunction MobileDeviceAccessRuleEffect
FromJSONKeyFunction MobileDeviceAccessRuleEffect
-> FromJSONKeyFunction [MobileDeviceAccessRuleEffect]
-> FromJSONKey MobileDeviceAccessRuleEffect
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [MobileDeviceAccessRuleEffect]
$cfromJSONKeyList :: FromJSONKeyFunction [MobileDeviceAccessRuleEffect]
fromJSONKey :: FromJSONKeyFunction MobileDeviceAccessRuleEffect
$cfromJSONKey :: FromJSONKeyFunction MobileDeviceAccessRuleEffect
Core.FromJSONKey,
      [MobileDeviceAccessRuleEffect] -> Encoding
[MobileDeviceAccessRuleEffect] -> Value
MobileDeviceAccessRuleEffect -> Encoding
MobileDeviceAccessRuleEffect -> Value
(MobileDeviceAccessRuleEffect -> Value)
-> (MobileDeviceAccessRuleEffect -> Encoding)
-> ([MobileDeviceAccessRuleEffect] -> Value)
-> ([MobileDeviceAccessRuleEffect] -> Encoding)
-> ToJSON MobileDeviceAccessRuleEffect
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [MobileDeviceAccessRuleEffect] -> Encoding
$ctoEncodingList :: [MobileDeviceAccessRuleEffect] -> Encoding
toJSONList :: [MobileDeviceAccessRuleEffect] -> Value
$ctoJSONList :: [MobileDeviceAccessRuleEffect] -> Value
toEncoding :: MobileDeviceAccessRuleEffect -> Encoding
$ctoEncoding :: MobileDeviceAccessRuleEffect -> Encoding
toJSON :: MobileDeviceAccessRuleEffect -> Value
$ctoJSON :: MobileDeviceAccessRuleEffect -> Value
Core.ToJSON,
      ToJSONKeyFunction [MobileDeviceAccessRuleEffect]
ToJSONKeyFunction MobileDeviceAccessRuleEffect
ToJSONKeyFunction MobileDeviceAccessRuleEffect
-> ToJSONKeyFunction [MobileDeviceAccessRuleEffect]
-> ToJSONKey MobileDeviceAccessRuleEffect
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [MobileDeviceAccessRuleEffect]
$ctoJSONKeyList :: ToJSONKeyFunction [MobileDeviceAccessRuleEffect]
toJSONKey :: ToJSONKeyFunction MobileDeviceAccessRuleEffect
$ctoJSONKey :: ToJSONKeyFunction MobileDeviceAccessRuleEffect
Core.ToJSONKey,
      [Node] -> Either String MobileDeviceAccessRuleEffect
([Node] -> Either String MobileDeviceAccessRuleEffect)
-> FromXML MobileDeviceAccessRuleEffect
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String MobileDeviceAccessRuleEffect
$cparseXML :: [Node] -> Either String MobileDeviceAccessRuleEffect
Core.FromXML,
      MobileDeviceAccessRuleEffect -> XML
(MobileDeviceAccessRuleEffect -> XML)
-> ToXML MobileDeviceAccessRuleEffect
forall a. (a -> XML) -> ToXML a
toXML :: MobileDeviceAccessRuleEffect -> XML
$ctoXML :: MobileDeviceAccessRuleEffect -> XML
Core.ToXML
    )

pattern MobileDeviceAccessRuleEffect_ALLOW :: MobileDeviceAccessRuleEffect
pattern $bMobileDeviceAccessRuleEffect_ALLOW :: MobileDeviceAccessRuleEffect
$mMobileDeviceAccessRuleEffect_ALLOW :: forall r.
MobileDeviceAccessRuleEffect -> (Void# -> r) -> (Void# -> r) -> r
MobileDeviceAccessRuleEffect_ALLOW = MobileDeviceAccessRuleEffect' "ALLOW"

pattern MobileDeviceAccessRuleEffect_DENY :: MobileDeviceAccessRuleEffect
pattern $bMobileDeviceAccessRuleEffect_DENY :: MobileDeviceAccessRuleEffect
$mMobileDeviceAccessRuleEffect_DENY :: forall r.
MobileDeviceAccessRuleEffect -> (Void# -> r) -> (Void# -> r) -> r
MobileDeviceAccessRuleEffect_DENY = MobileDeviceAccessRuleEffect' "DENY"

{-# COMPLETE
  MobileDeviceAccessRuleEffect_ALLOW,
  MobileDeviceAccessRuleEffect_DENY,
  MobileDeviceAccessRuleEffect'
  #-}