{-# 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.DataExchange.SendApiAsset
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- This operation invokes an API Gateway API asset. The request is proxied
-- to the provider’s API Gateway API.
module Amazonka.DataExchange.SendApiAsset
  ( -- * Creating a Request
    SendApiAsset (..),
    newSendApiAsset,

    -- * Request Lenses
    sendApiAsset_body,
    sendApiAsset_method,
    sendApiAsset_path,
    sendApiAsset_queryStringParameters,
    sendApiAsset_requestHeaders,
    sendApiAsset_assetId,
    sendApiAsset_dataSetId,
    sendApiAsset_revisionId,

    -- * Destructuring the Response
    SendApiAssetResponse (..),
    newSendApiAssetResponse,

    -- * Response Lenses
    sendApiAssetResponse_body,
    sendApiAssetResponse_responseHeaders,
    sendApiAssetResponse_httpStatus,
  )
where

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

-- | /See:/ 'newSendApiAsset' smart constructor.
data SendApiAsset = SendApiAsset'
  { -- | The request body.
    SendApiAsset -> Maybe ByteString
body :: Prelude.Maybe Prelude.ByteString,
    -- | HTTP method value for the API request. Alternatively, you can use the
    -- appropriate verb in your request.
    SendApiAsset -> Maybe Text
method :: Prelude.Maybe Prelude.Text,
    -- | URI path value for the API request. Alternatively, you can set the URI
    -- path directly by invoking \/v1\/{pathValue}.
    SendApiAsset -> Maybe Text
path :: Prelude.Maybe Prelude.Text,
    -- | Attach query string parameters to the end of the URI (for example,
    -- \/v1\/examplePath?exampleParam=exampleValue).
    SendApiAsset -> Maybe (HashMap Text Text)
queryStringParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Any header value prefixed with x-amzn-dataexchange-header- will have
    -- that stripped before sending the Asset API request. Use this when you
    -- want to override a header that AWS Data Exchange uses. Alternatively,
    -- you can use the header without a prefix to the HTTP request.
    SendApiAsset -> HashMap Text Text
requestHeaders :: Prelude.HashMap Prelude.Text Prelude.Text,
    -- | Asset ID value for the API request.
    SendApiAsset -> Text
assetId :: Prelude.Text,
    -- | Data set ID value for the API request.
    SendApiAsset -> Text
dataSetId :: Prelude.Text,
    -- | Revision ID value for the API request.
    SendApiAsset -> Text
revisionId :: Prelude.Text
  }
  deriving (SendApiAsset -> SendApiAsset -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SendApiAsset -> SendApiAsset -> Bool
$c/= :: SendApiAsset -> SendApiAsset -> Bool
== :: SendApiAsset -> SendApiAsset -> Bool
$c== :: SendApiAsset -> SendApiAsset -> Bool
Prelude.Eq, ReadPrec [SendApiAsset]
ReadPrec SendApiAsset
Int -> ReadS SendApiAsset
ReadS [SendApiAsset]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SendApiAsset]
$creadListPrec :: ReadPrec [SendApiAsset]
readPrec :: ReadPrec SendApiAsset
$creadPrec :: ReadPrec SendApiAsset
readList :: ReadS [SendApiAsset]
$creadList :: ReadS [SendApiAsset]
readsPrec :: Int -> ReadS SendApiAsset
$creadsPrec :: Int -> ReadS SendApiAsset
Prelude.Read, Int -> SendApiAsset -> ShowS
[SendApiAsset] -> ShowS
SendApiAsset -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SendApiAsset] -> ShowS
$cshowList :: [SendApiAsset] -> ShowS
show :: SendApiAsset -> String
$cshow :: SendApiAsset -> String
showsPrec :: Int -> SendApiAsset -> ShowS
$cshowsPrec :: Int -> SendApiAsset -> ShowS
Prelude.Show, forall x. Rep SendApiAsset x -> SendApiAsset
forall x. SendApiAsset -> Rep SendApiAsset x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SendApiAsset x -> SendApiAsset
$cfrom :: forall x. SendApiAsset -> Rep SendApiAsset x
Prelude.Generic)

-- |
-- Create a value of 'SendApiAsset' 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:
--
-- 'body', 'sendApiAsset_body' - The request body.
--
-- 'method', 'sendApiAsset_method' - HTTP method value for the API request. Alternatively, you can use the
-- appropriate verb in your request.
--
-- 'path', 'sendApiAsset_path' - URI path value for the API request. Alternatively, you can set the URI
-- path directly by invoking \/v1\/{pathValue}.
--
-- 'queryStringParameters', 'sendApiAsset_queryStringParameters' - Attach query string parameters to the end of the URI (for example,
-- \/v1\/examplePath?exampleParam=exampleValue).
--
-- 'requestHeaders', 'sendApiAsset_requestHeaders' - Any header value prefixed with x-amzn-dataexchange-header- will have
-- that stripped before sending the Asset API request. Use this when you
-- want to override a header that AWS Data Exchange uses. Alternatively,
-- you can use the header without a prefix to the HTTP request.
--
-- 'assetId', 'sendApiAsset_assetId' - Asset ID value for the API request.
--
-- 'dataSetId', 'sendApiAsset_dataSetId' - Data set ID value for the API request.
--
-- 'revisionId', 'sendApiAsset_revisionId' - Revision ID value for the API request.
newSendApiAsset ::
  -- | 'assetId'
  Prelude.Text ->
  -- | 'dataSetId'
  Prelude.Text ->
  -- | 'revisionId'
  Prelude.Text ->
  SendApiAsset
newSendApiAsset :: Text -> Text -> Text -> SendApiAsset
newSendApiAsset Text
pAssetId_ Text
pDataSetId_ Text
pRevisionId_ =
  SendApiAsset'
    { $sel:body:SendApiAsset' :: Maybe ByteString
body = forall a. Maybe a
Prelude.Nothing,
      $sel:method:SendApiAsset' :: Maybe Text
method = forall a. Maybe a
Prelude.Nothing,
      $sel:path:SendApiAsset' :: Maybe Text
path = forall a. Maybe a
Prelude.Nothing,
      $sel:queryStringParameters:SendApiAsset' :: Maybe (HashMap Text Text)
queryStringParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:requestHeaders:SendApiAsset' :: HashMap Text Text
requestHeaders = forall a. Monoid a => a
Prelude.mempty,
      $sel:assetId:SendApiAsset' :: Text
assetId = Text
pAssetId_,
      $sel:dataSetId:SendApiAsset' :: Text
dataSetId = Text
pDataSetId_,
      $sel:revisionId:SendApiAsset' :: Text
revisionId = Text
pRevisionId_
    }

-- | The request body.
sendApiAsset_body :: Lens.Lens' SendApiAsset (Prelude.Maybe Prelude.ByteString)
sendApiAsset_body :: Lens' SendApiAsset (Maybe ByteString)
sendApiAsset_body = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {Maybe ByteString
body :: Maybe ByteString
$sel:body:SendApiAsset' :: SendApiAsset -> Maybe ByteString
body} -> Maybe ByteString
body) (\s :: SendApiAsset
s@SendApiAsset' {} Maybe ByteString
a -> SendApiAsset
s {$sel:body:SendApiAsset' :: Maybe ByteString
body = Maybe ByteString
a} :: SendApiAsset)

-- | HTTP method value for the API request. Alternatively, you can use the
-- appropriate verb in your request.
sendApiAsset_method :: Lens.Lens' SendApiAsset (Prelude.Maybe Prelude.Text)
sendApiAsset_method :: Lens' SendApiAsset (Maybe Text)
sendApiAsset_method = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {Maybe Text
method :: Maybe Text
$sel:method:SendApiAsset' :: SendApiAsset -> Maybe Text
method} -> Maybe Text
method) (\s :: SendApiAsset
s@SendApiAsset' {} Maybe Text
a -> SendApiAsset
s {$sel:method:SendApiAsset' :: Maybe Text
method = Maybe Text
a} :: SendApiAsset)

-- | URI path value for the API request. Alternatively, you can set the URI
-- path directly by invoking \/v1\/{pathValue}.
sendApiAsset_path :: Lens.Lens' SendApiAsset (Prelude.Maybe Prelude.Text)
sendApiAsset_path :: Lens' SendApiAsset (Maybe Text)
sendApiAsset_path = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {Maybe Text
path :: Maybe Text
$sel:path:SendApiAsset' :: SendApiAsset -> Maybe Text
path} -> Maybe Text
path) (\s :: SendApiAsset
s@SendApiAsset' {} Maybe Text
a -> SendApiAsset
s {$sel:path:SendApiAsset' :: Maybe Text
path = Maybe Text
a} :: SendApiAsset)

-- | Attach query string parameters to the end of the URI (for example,
-- \/v1\/examplePath?exampleParam=exampleValue).
sendApiAsset_queryStringParameters :: Lens.Lens' SendApiAsset (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
sendApiAsset_queryStringParameters :: Lens' SendApiAsset (Maybe (HashMap Text Text))
sendApiAsset_queryStringParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {Maybe (HashMap Text Text)
queryStringParameters :: Maybe (HashMap Text Text)
$sel:queryStringParameters:SendApiAsset' :: SendApiAsset -> Maybe (HashMap Text Text)
queryStringParameters} -> Maybe (HashMap Text Text)
queryStringParameters) (\s :: SendApiAsset
s@SendApiAsset' {} Maybe (HashMap Text Text)
a -> SendApiAsset
s {$sel:queryStringParameters:SendApiAsset' :: Maybe (HashMap Text Text)
queryStringParameters = Maybe (HashMap Text Text)
a} :: SendApiAsset) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Any header value prefixed with x-amzn-dataexchange-header- will have
-- that stripped before sending the Asset API request. Use this when you
-- want to override a header that AWS Data Exchange uses. Alternatively,
-- you can use the header without a prefix to the HTTP request.
sendApiAsset_requestHeaders :: Lens.Lens' SendApiAsset (Prelude.HashMap Prelude.Text Prelude.Text)
sendApiAsset_requestHeaders :: Lens' SendApiAsset (HashMap Text Text)
sendApiAsset_requestHeaders = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {HashMap Text Text
requestHeaders :: HashMap Text Text
$sel:requestHeaders:SendApiAsset' :: SendApiAsset -> HashMap Text Text
requestHeaders} -> HashMap Text Text
requestHeaders) (\s :: SendApiAsset
s@SendApiAsset' {} HashMap Text Text
a -> SendApiAsset
s {$sel:requestHeaders:SendApiAsset' :: HashMap Text Text
requestHeaders = HashMap Text Text
a} :: SendApiAsset) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Asset ID value for the API request.
sendApiAsset_assetId :: Lens.Lens' SendApiAsset Prelude.Text
sendApiAsset_assetId :: Lens' SendApiAsset Text
sendApiAsset_assetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {Text
assetId :: Text
$sel:assetId:SendApiAsset' :: SendApiAsset -> Text
assetId} -> Text
assetId) (\s :: SendApiAsset
s@SendApiAsset' {} Text
a -> SendApiAsset
s {$sel:assetId:SendApiAsset' :: Text
assetId = Text
a} :: SendApiAsset)

-- | Data set ID value for the API request.
sendApiAsset_dataSetId :: Lens.Lens' SendApiAsset Prelude.Text
sendApiAsset_dataSetId :: Lens' SendApiAsset Text
sendApiAsset_dataSetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {Text
dataSetId :: Text
$sel:dataSetId:SendApiAsset' :: SendApiAsset -> Text
dataSetId} -> Text
dataSetId) (\s :: SendApiAsset
s@SendApiAsset' {} Text
a -> SendApiAsset
s {$sel:dataSetId:SendApiAsset' :: Text
dataSetId = Text
a} :: SendApiAsset)

-- | Revision ID value for the API request.
sendApiAsset_revisionId :: Lens.Lens' SendApiAsset Prelude.Text
sendApiAsset_revisionId :: Lens' SendApiAsset Text
sendApiAsset_revisionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAsset' {Text
revisionId :: Text
$sel:revisionId:SendApiAsset' :: SendApiAsset -> Text
revisionId} -> Text
revisionId) (\s :: SendApiAsset
s@SendApiAsset' {} Text
a -> SendApiAsset
s {$sel:revisionId:SendApiAsset' :: Text
revisionId = Text
a} :: SendApiAsset)

instance Core.AWSRequest SendApiAsset where
  type AWSResponse SendApiAsset = SendApiAssetResponse
  request :: (Service -> Service) -> SendApiAsset -> Request SendApiAsset
request Service -> Service
overrides =
    forall a. (ToRequest a, ToBody a) => Service -> a -> Request a
Request.postBody (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy SendApiAsset
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse SendApiAsset)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int
 -> ResponseHeaders -> ByteString -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveBytes
      ( \Int
s ResponseHeaders
h ByteString
x ->
          Maybe ByteString
-> HashMap Text Text -> Int -> SendApiAssetResponse
SendApiAssetResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. a -> Maybe a
Prelude.Just (coerce :: forall a b. Coercible a b => a -> b
Prelude.coerce ByteString
x)))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall a.
FromText a =>
ByteString -> ResponseHeaders -> Either String (HashMap Text a)
Data.parseHeadersMap ByteString
"" ResponseHeaders
h)
            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 SendApiAsset where
  hashWithSalt :: Int -> SendApiAsset -> Int
hashWithSalt Int
_salt SendApiAsset' {Maybe ByteString
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
revisionId :: Text
dataSetId :: Text
assetId :: Text
requestHeaders :: HashMap Text Text
queryStringParameters :: Maybe (HashMap Text Text)
path :: Maybe Text
method :: Maybe Text
body :: Maybe ByteString
$sel:revisionId:SendApiAsset' :: SendApiAsset -> Text
$sel:dataSetId:SendApiAsset' :: SendApiAsset -> Text
$sel:assetId:SendApiAsset' :: SendApiAsset -> Text
$sel:requestHeaders:SendApiAsset' :: SendApiAsset -> HashMap Text Text
$sel:queryStringParameters:SendApiAsset' :: SendApiAsset -> Maybe (HashMap Text Text)
$sel:path:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:method:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:body:SendApiAsset' :: SendApiAsset -> Maybe ByteString
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ByteString
body
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
method
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
path
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
queryStringParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` HashMap Text Text
requestHeaders
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
assetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dataSetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
revisionId

instance Prelude.NFData SendApiAsset where
  rnf :: SendApiAsset -> ()
rnf SendApiAsset' {Maybe ByteString
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
revisionId :: Text
dataSetId :: Text
assetId :: Text
requestHeaders :: HashMap Text Text
queryStringParameters :: Maybe (HashMap Text Text)
path :: Maybe Text
method :: Maybe Text
body :: Maybe ByteString
$sel:revisionId:SendApiAsset' :: SendApiAsset -> Text
$sel:dataSetId:SendApiAsset' :: SendApiAsset -> Text
$sel:assetId:SendApiAsset' :: SendApiAsset -> Text
$sel:requestHeaders:SendApiAsset' :: SendApiAsset -> HashMap Text Text
$sel:queryStringParameters:SendApiAsset' :: SendApiAsset -> Maybe (HashMap Text Text)
$sel:path:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:method:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:body:SendApiAsset' :: SendApiAsset -> Maybe ByteString
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ByteString
body
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
method
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
path
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
queryStringParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HashMap Text Text
requestHeaders
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
assetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
dataSetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
revisionId

instance Data.ToBody SendApiAsset where
  toBody :: SendApiAsset -> RequestBody
toBody SendApiAsset' {Maybe ByteString
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
revisionId :: Text
dataSetId :: Text
assetId :: Text
requestHeaders :: HashMap Text Text
queryStringParameters :: Maybe (HashMap Text Text)
path :: Maybe Text
method :: Maybe Text
body :: Maybe ByteString
$sel:revisionId:SendApiAsset' :: SendApiAsset -> Text
$sel:dataSetId:SendApiAsset' :: SendApiAsset -> Text
$sel:assetId:SendApiAsset' :: SendApiAsset -> Text
$sel:requestHeaders:SendApiAsset' :: SendApiAsset -> HashMap Text Text
$sel:queryStringParameters:SendApiAsset' :: SendApiAsset -> Maybe (HashMap Text Text)
$sel:path:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:method:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:body:SendApiAsset' :: SendApiAsset -> Maybe ByteString
..} = forall a. ToBody a => a -> RequestBody
Data.toBody Maybe ByteString
body

instance Data.ToHeaders SendApiAsset where
  toHeaders :: SendApiAsset -> ResponseHeaders
toHeaders SendApiAsset' {Maybe ByteString
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
revisionId :: Text
dataSetId :: Text
assetId :: Text
requestHeaders :: HashMap Text Text
queryStringParameters :: Maybe (HashMap Text Text)
path :: Maybe Text
method :: Maybe Text
body :: Maybe ByteString
$sel:revisionId:SendApiAsset' :: SendApiAsset -> Text
$sel:dataSetId:SendApiAsset' :: SendApiAsset -> Text
$sel:assetId:SendApiAsset' :: SendApiAsset -> Text
$sel:requestHeaders:SendApiAsset' :: SendApiAsset -> HashMap Text Text
$sel:queryStringParameters:SendApiAsset' :: SendApiAsset -> Maybe (HashMap Text Text)
$sel:path:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:method:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:body:SendApiAsset' :: SendApiAsset -> Maybe ByteString
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"x-amzn-dataexchange-http-method" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe Text
method,
        HeaderName
"x-amzn-dataexchange-path" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe Text
path,
        HeaderName
"x-amzn-dataexchange-header-" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# HashMap Text Text
requestHeaders,
        HeaderName
"x-amzn-dataexchange-asset-id" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Text
assetId,
        HeaderName
"x-amzn-dataexchange-data-set-id" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Text
dataSetId,
        HeaderName
"x-amzn-dataexchange-revision-id" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Text
revisionId,
        HeaderName
"Content-Type"
          forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# (ByteString
"application/x-amz-json-1.1" :: Prelude.ByteString)
      ]

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

instance Data.ToQuery SendApiAsset where
  toQuery :: SendApiAsset -> QueryString
toQuery SendApiAsset' {Maybe ByteString
Maybe Text
Maybe (HashMap Text Text)
Text
HashMap Text Text
revisionId :: Text
dataSetId :: Text
assetId :: Text
requestHeaders :: HashMap Text Text
queryStringParameters :: Maybe (HashMap Text Text)
path :: Maybe Text
method :: Maybe Text
body :: Maybe ByteString
$sel:revisionId:SendApiAsset' :: SendApiAsset -> Text
$sel:dataSetId:SendApiAsset' :: SendApiAsset -> Text
$sel:assetId:SendApiAsset' :: SendApiAsset -> Text
$sel:requestHeaders:SendApiAsset' :: SendApiAsset -> HashMap Text Text
$sel:queryStringParameters:SendApiAsset' :: SendApiAsset -> Maybe (HashMap Text Text)
$sel:path:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:method:SendApiAsset' :: SendApiAsset -> Maybe Text
$sel:body:SendApiAsset' :: SendApiAsset -> Maybe ByteString
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"QueryStringParameters"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: forall a. ToQuery a => a -> QueryString
Data.toQuery
            ( forall k v.
(ToQuery k, ToQuery v) =>
ByteString
-> ByteString -> ByteString -> HashMap k v -> QueryString
Data.toQueryMap ByteString
"entry" ByteString
"key" ByteString
"value"
                forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
queryStringParameters
            )
      ]

-- | /See:/ 'newSendApiAssetResponse' smart constructor.
data SendApiAssetResponse = SendApiAssetResponse'
  { -- | The response body from the underlying API tracked by the API asset.
    SendApiAssetResponse -> Maybe ByteString
body :: Prelude.Maybe Prelude.ByteString,
    -- | The response headers from the underlying API tracked by the API asset.
    SendApiAssetResponse -> HashMap Text Text
responseHeaders :: Prelude.HashMap Prelude.Text Prelude.Text,
    -- | The response's http status code.
    SendApiAssetResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (SendApiAssetResponse -> SendApiAssetResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SendApiAssetResponse -> SendApiAssetResponse -> Bool
$c/= :: SendApiAssetResponse -> SendApiAssetResponse -> Bool
== :: SendApiAssetResponse -> SendApiAssetResponse -> Bool
$c== :: SendApiAssetResponse -> SendApiAssetResponse -> Bool
Prelude.Eq, ReadPrec [SendApiAssetResponse]
ReadPrec SendApiAssetResponse
Int -> ReadS SendApiAssetResponse
ReadS [SendApiAssetResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SendApiAssetResponse]
$creadListPrec :: ReadPrec [SendApiAssetResponse]
readPrec :: ReadPrec SendApiAssetResponse
$creadPrec :: ReadPrec SendApiAssetResponse
readList :: ReadS [SendApiAssetResponse]
$creadList :: ReadS [SendApiAssetResponse]
readsPrec :: Int -> ReadS SendApiAssetResponse
$creadsPrec :: Int -> ReadS SendApiAssetResponse
Prelude.Read, Int -> SendApiAssetResponse -> ShowS
[SendApiAssetResponse] -> ShowS
SendApiAssetResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SendApiAssetResponse] -> ShowS
$cshowList :: [SendApiAssetResponse] -> ShowS
show :: SendApiAssetResponse -> String
$cshow :: SendApiAssetResponse -> String
showsPrec :: Int -> SendApiAssetResponse -> ShowS
$cshowsPrec :: Int -> SendApiAssetResponse -> ShowS
Prelude.Show, forall x. Rep SendApiAssetResponse x -> SendApiAssetResponse
forall x. SendApiAssetResponse -> Rep SendApiAssetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SendApiAssetResponse x -> SendApiAssetResponse
$cfrom :: forall x. SendApiAssetResponse -> Rep SendApiAssetResponse x
Prelude.Generic)

-- |
-- Create a value of 'SendApiAssetResponse' 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:
--
-- 'body', 'sendApiAssetResponse_body' - The response body from the underlying API tracked by the API asset.
--
-- 'responseHeaders', 'sendApiAssetResponse_responseHeaders' - The response headers from the underlying API tracked by the API asset.
--
-- 'httpStatus', 'sendApiAssetResponse_httpStatus' - The response's http status code.
newSendApiAssetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  SendApiAssetResponse
newSendApiAssetResponse :: Int -> SendApiAssetResponse
newSendApiAssetResponse Int
pHttpStatus_ =
  SendApiAssetResponse'
    { $sel:body:SendApiAssetResponse' :: Maybe ByteString
body = forall a. Maybe a
Prelude.Nothing,
      $sel:responseHeaders:SendApiAssetResponse' :: HashMap Text Text
responseHeaders = forall a. Monoid a => a
Prelude.mempty,
      $sel:httpStatus:SendApiAssetResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The response body from the underlying API tracked by the API asset.
sendApiAssetResponse_body :: Lens.Lens' SendApiAssetResponse (Prelude.Maybe Prelude.ByteString)
sendApiAssetResponse_body :: Lens' SendApiAssetResponse (Maybe ByteString)
sendApiAssetResponse_body = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAssetResponse' {Maybe ByteString
body :: Maybe ByteString
$sel:body:SendApiAssetResponse' :: SendApiAssetResponse -> Maybe ByteString
body} -> Maybe ByteString
body) (\s :: SendApiAssetResponse
s@SendApiAssetResponse' {} Maybe ByteString
a -> SendApiAssetResponse
s {$sel:body:SendApiAssetResponse' :: Maybe ByteString
body = Maybe ByteString
a} :: SendApiAssetResponse)

-- | The response headers from the underlying API tracked by the API asset.
sendApiAssetResponse_responseHeaders :: Lens.Lens' SendApiAssetResponse (Prelude.HashMap Prelude.Text Prelude.Text)
sendApiAssetResponse_responseHeaders :: Lens' SendApiAssetResponse (HashMap Text Text)
sendApiAssetResponse_responseHeaders = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SendApiAssetResponse' {HashMap Text Text
responseHeaders :: HashMap Text Text
$sel:responseHeaders:SendApiAssetResponse' :: SendApiAssetResponse -> HashMap Text Text
responseHeaders} -> HashMap Text Text
responseHeaders) (\s :: SendApiAssetResponse
s@SendApiAssetResponse' {} HashMap Text Text
a -> SendApiAssetResponse
s {$sel:responseHeaders:SendApiAssetResponse' :: HashMap Text Text
responseHeaders = HashMap Text Text
a} :: SendApiAssetResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance Prelude.NFData SendApiAssetResponse where
  rnf :: SendApiAssetResponse -> ()
rnf SendApiAssetResponse' {Int
Maybe ByteString
HashMap Text Text
httpStatus :: Int
responseHeaders :: HashMap Text Text
body :: Maybe ByteString
$sel:httpStatus:SendApiAssetResponse' :: SendApiAssetResponse -> Int
$sel:responseHeaders:SendApiAssetResponse' :: SendApiAssetResponse -> HashMap Text Text
$sel:body:SendApiAssetResponse' :: SendApiAssetResponse -> Maybe ByteString
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ByteString
body
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf HashMap Text Text
responseHeaders
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus