{-# 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.MacieV2.Types.UserIdentityType
-- 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.MacieV2.Types.UserIdentityType
  ( UserIdentityType
      ( ..,
        UserIdentityType_AWSAccount,
        UserIdentityType_AWSService,
        UserIdentityType_AssumedRole,
        UserIdentityType_FederatedUser,
        UserIdentityType_IAMUser,
        UserIdentityType_Root
      ),
  )
where

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

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

pattern UserIdentityType_AWSAccount :: UserIdentityType
pattern $bUserIdentityType_AWSAccount :: UserIdentityType
$mUserIdentityType_AWSAccount :: forall r. UserIdentityType -> (Void# -> r) -> (Void# -> r) -> r
UserIdentityType_AWSAccount = UserIdentityType' "AWSAccount"

pattern UserIdentityType_AWSService :: UserIdentityType
pattern $bUserIdentityType_AWSService :: UserIdentityType
$mUserIdentityType_AWSService :: forall r. UserIdentityType -> (Void# -> r) -> (Void# -> r) -> r
UserIdentityType_AWSService = UserIdentityType' "AWSService"

pattern UserIdentityType_AssumedRole :: UserIdentityType
pattern $bUserIdentityType_AssumedRole :: UserIdentityType
$mUserIdentityType_AssumedRole :: forall r. UserIdentityType -> (Void# -> r) -> (Void# -> r) -> r
UserIdentityType_AssumedRole = UserIdentityType' "AssumedRole"

pattern UserIdentityType_FederatedUser :: UserIdentityType
pattern $bUserIdentityType_FederatedUser :: UserIdentityType
$mUserIdentityType_FederatedUser :: forall r. UserIdentityType -> (Void# -> r) -> (Void# -> r) -> r
UserIdentityType_FederatedUser = UserIdentityType' "FederatedUser"

pattern UserIdentityType_IAMUser :: UserIdentityType
pattern $bUserIdentityType_IAMUser :: UserIdentityType
$mUserIdentityType_IAMUser :: forall r. UserIdentityType -> (Void# -> r) -> (Void# -> r) -> r
UserIdentityType_IAMUser = UserIdentityType' "IAMUser"

pattern UserIdentityType_Root :: UserIdentityType
pattern $bUserIdentityType_Root :: UserIdentityType
$mUserIdentityType_Root :: forall r. UserIdentityType -> (Void# -> r) -> (Void# -> r) -> r
UserIdentityType_Root = UserIdentityType' "Root"

{-# COMPLETE
  UserIdentityType_AWSAccount,
  UserIdentityType_AWSService,
  UserIdentityType_AssumedRole,
  UserIdentityType_FederatedUser,
  UserIdentityType_IAMUser,
  UserIdentityType_Root,
  UserIdentityType'
  #-}