{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

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

-- |
-- Module      : Amazonka.EC2.DescribeFpgaImageAttribute
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the specified attribute of the specified Amazon FPGA Image
-- (AFI).
module Amazonka.EC2.DescribeFpgaImageAttribute
  ( -- * Creating a Request
    DescribeFpgaImageAttribute (..),
    newDescribeFpgaImageAttribute,

    -- * Request Lenses
    describeFpgaImageAttribute_dryRun,
    describeFpgaImageAttribute_fpgaImageId,
    describeFpgaImageAttribute_attribute,

    -- * Destructuring the Response
    DescribeFpgaImageAttributeResponse (..),
    newDescribeFpgaImageAttributeResponse,

    -- * Response Lenses
    describeFpgaImageAttributeResponse_fpgaImageAttribute,
    describeFpgaImageAttributeResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeFpgaImageAttribute' smart constructor.
data DescribeFpgaImageAttribute = DescribeFpgaImageAttribute'
  { -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    DescribeFpgaImageAttribute -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The ID of the AFI.
    DescribeFpgaImageAttribute -> Text
fpgaImageId :: Prelude.Text,
    -- | The AFI attribute.
    DescribeFpgaImageAttribute -> FpgaImageAttributeName
attribute :: FpgaImageAttributeName
  }
  deriving (DescribeFpgaImageAttribute -> DescribeFpgaImageAttribute -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFpgaImageAttribute -> DescribeFpgaImageAttribute -> Bool
$c/= :: DescribeFpgaImageAttribute -> DescribeFpgaImageAttribute -> Bool
== :: DescribeFpgaImageAttribute -> DescribeFpgaImageAttribute -> Bool
$c== :: DescribeFpgaImageAttribute -> DescribeFpgaImageAttribute -> Bool
Prelude.Eq, ReadPrec [DescribeFpgaImageAttribute]
ReadPrec DescribeFpgaImageAttribute
Int -> ReadS DescribeFpgaImageAttribute
ReadS [DescribeFpgaImageAttribute]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeFpgaImageAttribute]
$creadListPrec :: ReadPrec [DescribeFpgaImageAttribute]
readPrec :: ReadPrec DescribeFpgaImageAttribute
$creadPrec :: ReadPrec DescribeFpgaImageAttribute
readList :: ReadS [DescribeFpgaImageAttribute]
$creadList :: ReadS [DescribeFpgaImageAttribute]
readsPrec :: Int -> ReadS DescribeFpgaImageAttribute
$creadsPrec :: Int -> ReadS DescribeFpgaImageAttribute
Prelude.Read, Int -> DescribeFpgaImageAttribute -> ShowS
[DescribeFpgaImageAttribute] -> ShowS
DescribeFpgaImageAttribute -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFpgaImageAttribute] -> ShowS
$cshowList :: [DescribeFpgaImageAttribute] -> ShowS
show :: DescribeFpgaImageAttribute -> String
$cshow :: DescribeFpgaImageAttribute -> String
showsPrec :: Int -> DescribeFpgaImageAttribute -> ShowS
$cshowsPrec :: Int -> DescribeFpgaImageAttribute -> ShowS
Prelude.Show, forall x.
Rep DescribeFpgaImageAttribute x -> DescribeFpgaImageAttribute
forall x.
DescribeFpgaImageAttribute -> Rep DescribeFpgaImageAttribute x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeFpgaImageAttribute x -> DescribeFpgaImageAttribute
$cfrom :: forall x.
DescribeFpgaImageAttribute -> Rep DescribeFpgaImageAttribute x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFpgaImageAttribute' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'dryRun', 'describeFpgaImageAttribute_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'fpgaImageId', 'describeFpgaImageAttribute_fpgaImageId' - The ID of the AFI.
--
-- 'attribute', 'describeFpgaImageAttribute_attribute' - The AFI attribute.
newDescribeFpgaImageAttribute ::
  -- | 'fpgaImageId'
  Prelude.Text ->
  -- | 'attribute'
  FpgaImageAttributeName ->
  DescribeFpgaImageAttribute
newDescribeFpgaImageAttribute :: Text -> FpgaImageAttributeName -> DescribeFpgaImageAttribute
newDescribeFpgaImageAttribute
  Text
pFpgaImageId_
  FpgaImageAttributeName
pAttribute_ =
    DescribeFpgaImageAttribute'
      { $sel:dryRun:DescribeFpgaImageAttribute' :: Maybe Bool
dryRun =
          forall a. Maybe a
Prelude.Nothing,
        $sel:fpgaImageId:DescribeFpgaImageAttribute' :: Text
fpgaImageId = Text
pFpgaImageId_,
        $sel:attribute:DescribeFpgaImageAttribute' :: FpgaImageAttributeName
attribute = FpgaImageAttributeName
pAttribute_
      }

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
describeFpgaImageAttribute_dryRun :: Lens.Lens' DescribeFpgaImageAttribute (Prelude.Maybe Prelude.Bool)
describeFpgaImageAttribute_dryRun :: Lens' DescribeFpgaImageAttribute (Maybe Bool)
describeFpgaImageAttribute_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFpgaImageAttribute' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: DescribeFpgaImageAttribute
s@DescribeFpgaImageAttribute' {} Maybe Bool
a -> DescribeFpgaImageAttribute
s {$sel:dryRun:DescribeFpgaImageAttribute' :: Maybe Bool
dryRun = Maybe Bool
a} :: DescribeFpgaImageAttribute)

-- | The ID of the AFI.
describeFpgaImageAttribute_fpgaImageId :: Lens.Lens' DescribeFpgaImageAttribute Prelude.Text
describeFpgaImageAttribute_fpgaImageId :: Lens' DescribeFpgaImageAttribute Text
describeFpgaImageAttribute_fpgaImageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFpgaImageAttribute' {Text
fpgaImageId :: Text
$sel:fpgaImageId:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Text
fpgaImageId} -> Text
fpgaImageId) (\s :: DescribeFpgaImageAttribute
s@DescribeFpgaImageAttribute' {} Text
a -> DescribeFpgaImageAttribute
s {$sel:fpgaImageId:DescribeFpgaImageAttribute' :: Text
fpgaImageId = Text
a} :: DescribeFpgaImageAttribute)

-- | The AFI attribute.
describeFpgaImageAttribute_attribute :: Lens.Lens' DescribeFpgaImageAttribute FpgaImageAttributeName
describeFpgaImageAttribute_attribute :: Lens' DescribeFpgaImageAttribute FpgaImageAttributeName
describeFpgaImageAttribute_attribute = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFpgaImageAttribute' {FpgaImageAttributeName
attribute :: FpgaImageAttributeName
$sel:attribute:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> FpgaImageAttributeName
attribute} -> FpgaImageAttributeName
attribute) (\s :: DescribeFpgaImageAttribute
s@DescribeFpgaImageAttribute' {} FpgaImageAttributeName
a -> DescribeFpgaImageAttribute
s {$sel:attribute:DescribeFpgaImageAttribute' :: FpgaImageAttributeName
attribute = FpgaImageAttributeName
a} :: DescribeFpgaImageAttribute)

instance Core.AWSRequest DescribeFpgaImageAttribute where
  type
    AWSResponse DescribeFpgaImageAttribute =
      DescribeFpgaImageAttributeResponse
  request :: (Service -> Service)
-> DescribeFpgaImageAttribute -> Request DescribeFpgaImageAttribute
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeFpgaImageAttribute
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeFpgaImageAttribute)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe FpgaImageAttribute
-> Int -> DescribeFpgaImageAttributeResponse
DescribeFpgaImageAttributeResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"fpgaImageAttribute")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeFpgaImageAttribute where
  hashWithSalt :: Int -> DescribeFpgaImageAttribute -> Int
hashWithSalt Int
_salt DescribeFpgaImageAttribute' {Maybe Bool
Text
FpgaImageAttributeName
attribute :: FpgaImageAttributeName
fpgaImageId :: Text
dryRun :: Maybe Bool
$sel:attribute:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> FpgaImageAttributeName
$sel:fpgaImageId:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Text
$sel:dryRun:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
fpgaImageId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` FpgaImageAttributeName
attribute

instance Prelude.NFData DescribeFpgaImageAttribute where
  rnf :: DescribeFpgaImageAttribute -> ()
rnf DescribeFpgaImageAttribute' {Maybe Bool
Text
FpgaImageAttributeName
attribute :: FpgaImageAttributeName
fpgaImageId :: Text
dryRun :: Maybe Bool
$sel:attribute:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> FpgaImageAttributeName
$sel:fpgaImageId:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Text
$sel:dryRun:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
fpgaImageId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf FpgaImageAttributeName
attribute

instance Data.ToHeaders DescribeFpgaImageAttribute where
  toHeaders :: DescribeFpgaImageAttribute -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DescribeFpgaImageAttribute where
  toPath :: DescribeFpgaImageAttribute -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeFpgaImageAttribute where
  toQuery :: DescribeFpgaImageAttribute -> QueryString
toQuery DescribeFpgaImageAttribute' {Maybe Bool
Text
FpgaImageAttributeName
attribute :: FpgaImageAttributeName
fpgaImageId :: Text
dryRun :: Maybe Bool
$sel:attribute:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> FpgaImageAttributeName
$sel:fpgaImageId:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Text
$sel:dryRun:DescribeFpgaImageAttribute' :: DescribeFpgaImageAttribute -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"DescribeFpgaImageAttribute" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"FpgaImageId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
fpgaImageId,
        ByteString
"Attribute" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: FpgaImageAttributeName
attribute
      ]

-- | /See:/ 'newDescribeFpgaImageAttributeResponse' smart constructor.
data DescribeFpgaImageAttributeResponse = DescribeFpgaImageAttributeResponse'
  { -- | Information about the attribute.
    DescribeFpgaImageAttributeResponse -> Maybe FpgaImageAttribute
fpgaImageAttribute :: Prelude.Maybe FpgaImageAttribute,
    -- | The response's http status code.
    DescribeFpgaImageAttributeResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeFpgaImageAttributeResponse
-> DescribeFpgaImageAttributeResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeFpgaImageAttributeResponse
-> DescribeFpgaImageAttributeResponse -> Bool
$c/= :: DescribeFpgaImageAttributeResponse
-> DescribeFpgaImageAttributeResponse -> Bool
== :: DescribeFpgaImageAttributeResponse
-> DescribeFpgaImageAttributeResponse -> Bool
$c== :: DescribeFpgaImageAttributeResponse
-> DescribeFpgaImageAttributeResponse -> Bool
Prelude.Eq, ReadPrec [DescribeFpgaImageAttributeResponse]
ReadPrec DescribeFpgaImageAttributeResponse
Int -> ReadS DescribeFpgaImageAttributeResponse
ReadS [DescribeFpgaImageAttributeResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeFpgaImageAttributeResponse]
$creadListPrec :: ReadPrec [DescribeFpgaImageAttributeResponse]
readPrec :: ReadPrec DescribeFpgaImageAttributeResponse
$creadPrec :: ReadPrec DescribeFpgaImageAttributeResponse
readList :: ReadS [DescribeFpgaImageAttributeResponse]
$creadList :: ReadS [DescribeFpgaImageAttributeResponse]
readsPrec :: Int -> ReadS DescribeFpgaImageAttributeResponse
$creadsPrec :: Int -> ReadS DescribeFpgaImageAttributeResponse
Prelude.Read, Int -> DescribeFpgaImageAttributeResponse -> ShowS
[DescribeFpgaImageAttributeResponse] -> ShowS
DescribeFpgaImageAttributeResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeFpgaImageAttributeResponse] -> ShowS
$cshowList :: [DescribeFpgaImageAttributeResponse] -> ShowS
show :: DescribeFpgaImageAttributeResponse -> String
$cshow :: DescribeFpgaImageAttributeResponse -> String
showsPrec :: Int -> DescribeFpgaImageAttributeResponse -> ShowS
$cshowsPrec :: Int -> DescribeFpgaImageAttributeResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeFpgaImageAttributeResponse x
-> DescribeFpgaImageAttributeResponse
forall x.
DescribeFpgaImageAttributeResponse
-> Rep DescribeFpgaImageAttributeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeFpgaImageAttributeResponse x
-> DescribeFpgaImageAttributeResponse
$cfrom :: forall x.
DescribeFpgaImageAttributeResponse
-> Rep DescribeFpgaImageAttributeResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeFpgaImageAttributeResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'fpgaImageAttribute', 'describeFpgaImageAttributeResponse_fpgaImageAttribute' - Information about the attribute.
--
-- 'httpStatus', 'describeFpgaImageAttributeResponse_httpStatus' - The response's http status code.
newDescribeFpgaImageAttributeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeFpgaImageAttributeResponse
newDescribeFpgaImageAttributeResponse :: Int -> DescribeFpgaImageAttributeResponse
newDescribeFpgaImageAttributeResponse Int
pHttpStatus_ =
  DescribeFpgaImageAttributeResponse'
    { $sel:fpgaImageAttribute:DescribeFpgaImageAttributeResponse' :: Maybe FpgaImageAttribute
fpgaImageAttribute =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeFpgaImageAttributeResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the attribute.
describeFpgaImageAttributeResponse_fpgaImageAttribute :: Lens.Lens' DescribeFpgaImageAttributeResponse (Prelude.Maybe FpgaImageAttribute)
describeFpgaImageAttributeResponse_fpgaImageAttribute :: Lens' DescribeFpgaImageAttributeResponse (Maybe FpgaImageAttribute)
describeFpgaImageAttributeResponse_fpgaImageAttribute = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFpgaImageAttributeResponse' {Maybe FpgaImageAttribute
fpgaImageAttribute :: Maybe FpgaImageAttribute
$sel:fpgaImageAttribute:DescribeFpgaImageAttributeResponse' :: DescribeFpgaImageAttributeResponse -> Maybe FpgaImageAttribute
fpgaImageAttribute} -> Maybe FpgaImageAttribute
fpgaImageAttribute) (\s :: DescribeFpgaImageAttributeResponse
s@DescribeFpgaImageAttributeResponse' {} Maybe FpgaImageAttribute
a -> DescribeFpgaImageAttributeResponse
s {$sel:fpgaImageAttribute:DescribeFpgaImageAttributeResponse' :: Maybe FpgaImageAttribute
fpgaImageAttribute = Maybe FpgaImageAttribute
a} :: DescribeFpgaImageAttributeResponse)

-- | The response's http status code.
describeFpgaImageAttributeResponse_httpStatus :: Lens.Lens' DescribeFpgaImageAttributeResponse Prelude.Int
describeFpgaImageAttributeResponse_httpStatus :: Lens' DescribeFpgaImageAttributeResponse Int
describeFpgaImageAttributeResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeFpgaImageAttributeResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeFpgaImageAttributeResponse' :: DescribeFpgaImageAttributeResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeFpgaImageAttributeResponse
s@DescribeFpgaImageAttributeResponse' {} Int
a -> DescribeFpgaImageAttributeResponse
s {$sel:httpStatus:DescribeFpgaImageAttributeResponse' :: Int
httpStatus = Int
a} :: DescribeFpgaImageAttributeResponse)

instance
  Prelude.NFData
    DescribeFpgaImageAttributeResponse
  where
  rnf :: DescribeFpgaImageAttributeResponse -> ()
rnf DescribeFpgaImageAttributeResponse' {Int
Maybe FpgaImageAttribute
httpStatus :: Int
fpgaImageAttribute :: Maybe FpgaImageAttribute
$sel:httpStatus:DescribeFpgaImageAttributeResponse' :: DescribeFpgaImageAttributeResponse -> Int
$sel:fpgaImageAttribute:DescribeFpgaImageAttributeResponse' :: DescribeFpgaImageAttributeResponse -> Maybe FpgaImageAttribute
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe FpgaImageAttribute
fpgaImageAttribute
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus