{-# 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.CodeArtifact.GetPackageVersionAsset
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns an asset (or file) that is in a package. For example, for a
-- Maven package version, use @GetPackageVersionAsset@ to download a @JAR@
-- file, a @POM@ file, or any other assets in the package version.
module Amazonka.CodeArtifact.GetPackageVersionAsset
  ( -- * Creating a Request
    GetPackageVersionAsset (..),
    newGetPackageVersionAsset,

    -- * Request Lenses
    getPackageVersionAsset_domainOwner,
    getPackageVersionAsset_namespace,
    getPackageVersionAsset_packageVersionRevision,
    getPackageVersionAsset_domain,
    getPackageVersionAsset_repository,
    getPackageVersionAsset_format,
    getPackageVersionAsset_package,
    getPackageVersionAsset_packageVersion,
    getPackageVersionAsset_asset,

    -- * Destructuring the Response
    GetPackageVersionAssetResponse (..),
    newGetPackageVersionAssetResponse,

    -- * Response Lenses
    getPackageVersionAssetResponse_assetName,
    getPackageVersionAssetResponse_packageVersion,
    getPackageVersionAssetResponse_packageVersionRevision,
    getPackageVersionAssetResponse_httpStatus,
    getPackageVersionAssetResponse_asset,
  )
where

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

-- | /See:/ 'newGetPackageVersionAsset' smart constructor.
data GetPackageVersionAsset = GetPackageVersionAsset'
  { -- | The 12-digit account number of the Amazon Web Services account that owns
    -- the domain. It does not include dashes or spaces.
    GetPackageVersionAsset -> Maybe Text
domainOwner :: Prelude.Maybe Prelude.Text,
    -- | The namespace of the package version with the requested asset file. The
    -- package version component that specifies its namespace depends on its
    -- type. For example:
    --
    -- -   The namespace of a Maven package version is its @groupId@.
    --
    -- -   The namespace of an npm package version is its @scope@.
    --
    -- -   Python and NuGet package versions do not contain a corresponding
    --     component, package versions of those formats do not have a
    --     namespace.
    GetPackageVersionAsset -> Maybe Text
namespace :: Prelude.Maybe Prelude.Text,
    -- | The name of the package version revision that contains the requested
    -- asset.
    GetPackageVersionAsset -> Maybe Text
packageVersionRevision :: Prelude.Maybe Prelude.Text,
    -- | The name of the domain that contains the repository that contains the
    -- package version with the requested asset.
    GetPackageVersionAsset -> Text
domain :: Prelude.Text,
    -- | The repository that contains the package version with the requested
    -- asset.
    GetPackageVersionAsset -> Text
repository :: Prelude.Text,
    -- | A format that specifies the type of the package version with the
    -- requested asset file.
    GetPackageVersionAsset -> PackageFormat
format :: PackageFormat,
    -- | The name of the package that contains the requested asset.
    GetPackageVersionAsset -> Text
package :: Prelude.Text,
    -- | A string that contains the package version (for example, @3.5.2@).
    GetPackageVersionAsset -> Text
packageVersion :: Prelude.Text,
    -- | The name of the requested asset.
    GetPackageVersionAsset -> Text
asset :: Prelude.Text
  }
  deriving (GetPackageVersionAsset -> GetPackageVersionAsset -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPackageVersionAsset -> GetPackageVersionAsset -> Bool
$c/= :: GetPackageVersionAsset -> GetPackageVersionAsset -> Bool
== :: GetPackageVersionAsset -> GetPackageVersionAsset -> Bool
$c== :: GetPackageVersionAsset -> GetPackageVersionAsset -> Bool
Prelude.Eq, ReadPrec [GetPackageVersionAsset]
ReadPrec GetPackageVersionAsset
Int -> ReadS GetPackageVersionAsset
ReadS [GetPackageVersionAsset]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetPackageVersionAsset]
$creadListPrec :: ReadPrec [GetPackageVersionAsset]
readPrec :: ReadPrec GetPackageVersionAsset
$creadPrec :: ReadPrec GetPackageVersionAsset
readList :: ReadS [GetPackageVersionAsset]
$creadList :: ReadS [GetPackageVersionAsset]
readsPrec :: Int -> ReadS GetPackageVersionAsset
$creadsPrec :: Int -> ReadS GetPackageVersionAsset
Prelude.Read, Int -> GetPackageVersionAsset -> ShowS
[GetPackageVersionAsset] -> ShowS
GetPackageVersionAsset -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPackageVersionAsset] -> ShowS
$cshowList :: [GetPackageVersionAsset] -> ShowS
show :: GetPackageVersionAsset -> String
$cshow :: GetPackageVersionAsset -> String
showsPrec :: Int -> GetPackageVersionAsset -> ShowS
$cshowsPrec :: Int -> GetPackageVersionAsset -> ShowS
Prelude.Show, forall x. Rep GetPackageVersionAsset x -> GetPackageVersionAsset
forall x. GetPackageVersionAsset -> Rep GetPackageVersionAsset x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetPackageVersionAsset x -> GetPackageVersionAsset
$cfrom :: forall x. GetPackageVersionAsset -> Rep GetPackageVersionAsset x
Prelude.Generic)

-- |
-- Create a value of 'GetPackageVersionAsset' 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:
--
-- 'domainOwner', 'getPackageVersionAsset_domainOwner' - The 12-digit account number of the Amazon Web Services account that owns
-- the domain. It does not include dashes or spaces.
--
-- 'namespace', 'getPackageVersionAsset_namespace' - The namespace of the package version with the requested asset file. The
-- package version component that specifies its namespace depends on its
-- type. For example:
--
-- -   The namespace of a Maven package version is its @groupId@.
--
-- -   The namespace of an npm package version is its @scope@.
--
-- -   Python and NuGet package versions do not contain a corresponding
--     component, package versions of those formats do not have a
--     namespace.
--
-- 'packageVersionRevision', 'getPackageVersionAsset_packageVersionRevision' - The name of the package version revision that contains the requested
-- asset.
--
-- 'domain', 'getPackageVersionAsset_domain' - The name of the domain that contains the repository that contains the
-- package version with the requested asset.
--
-- 'repository', 'getPackageVersionAsset_repository' - The repository that contains the package version with the requested
-- asset.
--
-- 'format', 'getPackageVersionAsset_format' - A format that specifies the type of the package version with the
-- requested asset file.
--
-- 'package', 'getPackageVersionAsset_package' - The name of the package that contains the requested asset.
--
-- 'packageVersion', 'getPackageVersionAsset_packageVersion' - A string that contains the package version (for example, @3.5.2@).
--
-- 'asset', 'getPackageVersionAsset_asset' - The name of the requested asset.
newGetPackageVersionAsset ::
  -- | 'domain'
  Prelude.Text ->
  -- | 'repository'
  Prelude.Text ->
  -- | 'format'
  PackageFormat ->
  -- | 'package'
  Prelude.Text ->
  -- | 'packageVersion'
  Prelude.Text ->
  -- | 'asset'
  Prelude.Text ->
  GetPackageVersionAsset
newGetPackageVersionAsset :: Text
-> Text
-> PackageFormat
-> Text
-> Text
-> Text
-> GetPackageVersionAsset
newGetPackageVersionAsset
  Text
pDomain_
  Text
pRepository_
  PackageFormat
pFormat_
  Text
pPackage_
  Text
pPackageVersion_
  Text
pAsset_ =
    GetPackageVersionAsset'
      { $sel:domainOwner:GetPackageVersionAsset' :: Maybe Text
domainOwner =
          forall a. Maybe a
Prelude.Nothing,
        $sel:namespace:GetPackageVersionAsset' :: Maybe Text
namespace = forall a. Maybe a
Prelude.Nothing,
        $sel:packageVersionRevision:GetPackageVersionAsset' :: Maybe Text
packageVersionRevision = forall a. Maybe a
Prelude.Nothing,
        $sel:domain:GetPackageVersionAsset' :: Text
domain = Text
pDomain_,
        $sel:repository:GetPackageVersionAsset' :: Text
repository = Text
pRepository_,
        $sel:format:GetPackageVersionAsset' :: PackageFormat
format = PackageFormat
pFormat_,
        $sel:package:GetPackageVersionAsset' :: Text
package = Text
pPackage_,
        $sel:packageVersion:GetPackageVersionAsset' :: Text
packageVersion = Text
pPackageVersion_,
        $sel:asset:GetPackageVersionAsset' :: Text
asset = Text
pAsset_
      }

-- | The 12-digit account number of the Amazon Web Services account that owns
-- the domain. It does not include dashes or spaces.
getPackageVersionAsset_domainOwner :: Lens.Lens' GetPackageVersionAsset (Prelude.Maybe Prelude.Text)
getPackageVersionAsset_domainOwner :: Lens' GetPackageVersionAsset (Maybe Text)
getPackageVersionAsset_domainOwner = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Maybe Text
domainOwner :: Maybe Text
$sel:domainOwner:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
domainOwner} -> Maybe Text
domainOwner) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Maybe Text
a -> GetPackageVersionAsset
s {$sel:domainOwner:GetPackageVersionAsset' :: Maybe Text
domainOwner = Maybe Text
a} :: GetPackageVersionAsset)

-- | The namespace of the package version with the requested asset file. The
-- package version component that specifies its namespace depends on its
-- type. For example:
--
-- -   The namespace of a Maven package version is its @groupId@.
--
-- -   The namespace of an npm package version is its @scope@.
--
-- -   Python and NuGet package versions do not contain a corresponding
--     component, package versions of those formats do not have a
--     namespace.
getPackageVersionAsset_namespace :: Lens.Lens' GetPackageVersionAsset (Prelude.Maybe Prelude.Text)
getPackageVersionAsset_namespace :: Lens' GetPackageVersionAsset (Maybe Text)
getPackageVersionAsset_namespace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Maybe Text
namespace :: Maybe Text
$sel:namespace:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
namespace} -> Maybe Text
namespace) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Maybe Text
a -> GetPackageVersionAsset
s {$sel:namespace:GetPackageVersionAsset' :: Maybe Text
namespace = Maybe Text
a} :: GetPackageVersionAsset)

-- | The name of the package version revision that contains the requested
-- asset.
getPackageVersionAsset_packageVersionRevision :: Lens.Lens' GetPackageVersionAsset (Prelude.Maybe Prelude.Text)
getPackageVersionAsset_packageVersionRevision :: Lens' GetPackageVersionAsset (Maybe Text)
getPackageVersionAsset_packageVersionRevision = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Maybe Text
packageVersionRevision :: Maybe Text
$sel:packageVersionRevision:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
packageVersionRevision} -> Maybe Text
packageVersionRevision) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Maybe Text
a -> GetPackageVersionAsset
s {$sel:packageVersionRevision:GetPackageVersionAsset' :: Maybe Text
packageVersionRevision = Maybe Text
a} :: GetPackageVersionAsset)

-- | The name of the domain that contains the repository that contains the
-- package version with the requested asset.
getPackageVersionAsset_domain :: Lens.Lens' GetPackageVersionAsset Prelude.Text
getPackageVersionAsset_domain :: Lens' GetPackageVersionAsset Text
getPackageVersionAsset_domain = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Text
domain :: Text
$sel:domain:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
domain} -> Text
domain) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Text
a -> GetPackageVersionAsset
s {$sel:domain:GetPackageVersionAsset' :: Text
domain = Text
a} :: GetPackageVersionAsset)

-- | The repository that contains the package version with the requested
-- asset.
getPackageVersionAsset_repository :: Lens.Lens' GetPackageVersionAsset Prelude.Text
getPackageVersionAsset_repository :: Lens' GetPackageVersionAsset Text
getPackageVersionAsset_repository = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Text
repository :: Text
$sel:repository:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
repository} -> Text
repository) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Text
a -> GetPackageVersionAsset
s {$sel:repository:GetPackageVersionAsset' :: Text
repository = Text
a} :: GetPackageVersionAsset)

-- | A format that specifies the type of the package version with the
-- requested asset file.
getPackageVersionAsset_format :: Lens.Lens' GetPackageVersionAsset PackageFormat
getPackageVersionAsset_format :: Lens' GetPackageVersionAsset PackageFormat
getPackageVersionAsset_format = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {PackageFormat
format :: PackageFormat
$sel:format:GetPackageVersionAsset' :: GetPackageVersionAsset -> PackageFormat
format} -> PackageFormat
format) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} PackageFormat
a -> GetPackageVersionAsset
s {$sel:format:GetPackageVersionAsset' :: PackageFormat
format = PackageFormat
a} :: GetPackageVersionAsset)

-- | The name of the package that contains the requested asset.
getPackageVersionAsset_package :: Lens.Lens' GetPackageVersionAsset Prelude.Text
getPackageVersionAsset_package :: Lens' GetPackageVersionAsset Text
getPackageVersionAsset_package = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Text
package :: Text
$sel:package:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
package} -> Text
package) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Text
a -> GetPackageVersionAsset
s {$sel:package:GetPackageVersionAsset' :: Text
package = Text
a} :: GetPackageVersionAsset)

-- | A string that contains the package version (for example, @3.5.2@).
getPackageVersionAsset_packageVersion :: Lens.Lens' GetPackageVersionAsset Prelude.Text
getPackageVersionAsset_packageVersion :: Lens' GetPackageVersionAsset Text
getPackageVersionAsset_packageVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Text
packageVersion :: Text
$sel:packageVersion:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
packageVersion} -> Text
packageVersion) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Text
a -> GetPackageVersionAsset
s {$sel:packageVersion:GetPackageVersionAsset' :: Text
packageVersion = Text
a} :: GetPackageVersionAsset)

-- | The name of the requested asset.
getPackageVersionAsset_asset :: Lens.Lens' GetPackageVersionAsset Prelude.Text
getPackageVersionAsset_asset :: Lens' GetPackageVersionAsset Text
getPackageVersionAsset_asset = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAsset' {Text
asset :: Text
$sel:asset:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
asset} -> Text
asset) (\s :: GetPackageVersionAsset
s@GetPackageVersionAsset' {} Text
a -> GetPackageVersionAsset
s {$sel:asset:GetPackageVersionAsset' :: Text
asset = Text
a} :: GetPackageVersionAsset)

instance Core.AWSRequest GetPackageVersionAsset where
  type
    AWSResponse GetPackageVersionAsset =
      GetPackageVersionAssetResponse
  request :: (Service -> Service)
-> GetPackageVersionAsset -> Request GetPackageVersionAsset
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetPackageVersionAsset
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetPackageVersionAsset)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int
 -> ResponseHeaders
 -> ResponseBody
 -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveBody
      ( \Int
s ResponseHeaders
h ResponseBody
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> ResponseBody
-> GetPackageVersionAssetResponse
GetPackageVersionAssetResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (ResponseHeaders
h forall a.
FromText a =>
ResponseHeaders -> HeaderName -> Either String (Maybe a)
Data..#? HeaderName
"X-AssetName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (ResponseHeaders
h forall a.
FromText a =>
ResponseHeaders -> HeaderName -> Either String (Maybe a)
Data..#? HeaderName
"X-PackageVersion")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (ResponseHeaders
h forall a.
FromText a =>
ResponseHeaders -> HeaderName -> Either String (Maybe a)
Data..#? HeaderName
"X-PackageVersionRevision")
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure ResponseBody
x)
      )

instance Prelude.Hashable GetPackageVersionAsset where
  hashWithSalt :: Int -> GetPackageVersionAsset -> Int
hashWithSalt Int
_salt GetPackageVersionAsset' {Maybe Text
Text
PackageFormat
asset :: Text
packageVersion :: Text
package :: Text
format :: PackageFormat
repository :: Text
domain :: Text
packageVersionRevision :: Maybe Text
namespace :: Maybe Text
domainOwner :: Maybe Text
$sel:asset:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:packageVersion:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:package:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:format:GetPackageVersionAsset' :: GetPackageVersionAsset -> PackageFormat
$sel:repository:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:domain:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:packageVersionRevision:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
$sel:namespace:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
$sel:domainOwner:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
domainOwner
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
namespace
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
packageVersionRevision
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domain
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
repository
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` PackageFormat
format
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
package
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
packageVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
asset

instance Prelude.NFData GetPackageVersionAsset where
  rnf :: GetPackageVersionAsset -> ()
rnf GetPackageVersionAsset' {Maybe Text
Text
PackageFormat
asset :: Text
packageVersion :: Text
package :: Text
format :: PackageFormat
repository :: Text
domain :: Text
packageVersionRevision :: Maybe Text
namespace :: Maybe Text
domainOwner :: Maybe Text
$sel:asset:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:packageVersion:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:package:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:format:GetPackageVersionAsset' :: GetPackageVersionAsset -> PackageFormat
$sel:repository:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:domain:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:packageVersionRevision:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
$sel:namespace:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
$sel:domainOwner:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
domainOwner
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
namespace
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
packageVersionRevision
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domain
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
repository
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf PackageFormat
format
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
package
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
packageVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
asset

instance Data.ToHeaders GetPackageVersionAsset where
  toHeaders :: GetPackageVersionAsset -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath GetPackageVersionAsset where
  toPath :: GetPackageVersionAsset -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/v1/package/version/asset"

instance Data.ToQuery GetPackageVersionAsset where
  toQuery :: GetPackageVersionAsset -> QueryString
toQuery GetPackageVersionAsset' {Maybe Text
Text
PackageFormat
asset :: Text
packageVersion :: Text
package :: Text
format :: PackageFormat
repository :: Text
domain :: Text
packageVersionRevision :: Maybe Text
namespace :: Maybe Text
domainOwner :: Maybe Text
$sel:asset:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:packageVersion:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:package:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:format:GetPackageVersionAsset' :: GetPackageVersionAsset -> PackageFormat
$sel:repository:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:domain:GetPackageVersionAsset' :: GetPackageVersionAsset -> Text
$sel:packageVersionRevision:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
$sel:namespace:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
$sel:domainOwner:GetPackageVersionAsset' :: GetPackageVersionAsset -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"domain-owner" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
domainOwner,
        ByteString
"namespace" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
namespace,
        ByteString
"revision" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
packageVersionRevision,
        ByteString
"domain" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
domain,
        ByteString
"repository" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
repository,
        ByteString
"format" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: PackageFormat
format,
        ByteString
"package" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
package,
        ByteString
"version" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
packageVersion,
        ByteString
"asset" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
asset
      ]

-- | /See:/ 'newGetPackageVersionAssetResponse' smart constructor.
data GetPackageVersionAssetResponse = GetPackageVersionAssetResponse'
  { -- | The name of the asset that is downloaded.
    GetPackageVersionAssetResponse -> Maybe Text
assetName :: Prelude.Maybe Prelude.Text,
    -- | A string that contains the package version (for example, @3.5.2@).
    GetPackageVersionAssetResponse -> Maybe Text
packageVersion :: Prelude.Maybe Prelude.Text,
    -- | The name of the package version revision that contains the downloaded
    -- asset.
    GetPackageVersionAssetResponse -> Maybe Text
packageVersionRevision :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetPackageVersionAssetResponse -> Int
httpStatus :: Prelude.Int,
    -- | The binary file, or asset, that is downloaded.
    GetPackageVersionAssetResponse -> ResponseBody
asset :: Data.ResponseBody
  }
  deriving (Int -> GetPackageVersionAssetResponse -> ShowS
[GetPackageVersionAssetResponse] -> ShowS
GetPackageVersionAssetResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPackageVersionAssetResponse] -> ShowS
$cshowList :: [GetPackageVersionAssetResponse] -> ShowS
show :: GetPackageVersionAssetResponse -> String
$cshow :: GetPackageVersionAssetResponse -> String
showsPrec :: Int -> GetPackageVersionAssetResponse -> ShowS
$cshowsPrec :: Int -> GetPackageVersionAssetResponse -> ShowS
Prelude.Show, forall x.
Rep GetPackageVersionAssetResponse x
-> GetPackageVersionAssetResponse
forall x.
GetPackageVersionAssetResponse
-> Rep GetPackageVersionAssetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetPackageVersionAssetResponse x
-> GetPackageVersionAssetResponse
$cfrom :: forall x.
GetPackageVersionAssetResponse
-> Rep GetPackageVersionAssetResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetPackageVersionAssetResponse' 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:
--
-- 'assetName', 'getPackageVersionAssetResponse_assetName' - The name of the asset that is downloaded.
--
-- 'packageVersion', 'getPackageVersionAssetResponse_packageVersion' - A string that contains the package version (for example, @3.5.2@).
--
-- 'packageVersionRevision', 'getPackageVersionAssetResponse_packageVersionRevision' - The name of the package version revision that contains the downloaded
-- asset.
--
-- 'httpStatus', 'getPackageVersionAssetResponse_httpStatus' - The response's http status code.
--
-- 'asset', 'getPackageVersionAssetResponse_asset' - The binary file, or asset, that is downloaded.
newGetPackageVersionAssetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'asset'
  Data.ResponseBody ->
  GetPackageVersionAssetResponse
newGetPackageVersionAssetResponse :: Int -> ResponseBody -> GetPackageVersionAssetResponse
newGetPackageVersionAssetResponse
  Int
pHttpStatus_
  ResponseBody
pAsset_ =
    GetPackageVersionAssetResponse'
      { $sel:assetName:GetPackageVersionAssetResponse' :: Maybe Text
assetName =
          forall a. Maybe a
Prelude.Nothing,
        $sel:packageVersion:GetPackageVersionAssetResponse' :: Maybe Text
packageVersion = forall a. Maybe a
Prelude.Nothing,
        $sel:packageVersionRevision:GetPackageVersionAssetResponse' :: Maybe Text
packageVersionRevision = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetPackageVersionAssetResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:asset:GetPackageVersionAssetResponse' :: ResponseBody
asset = ResponseBody
pAsset_
      }

-- | The name of the asset that is downloaded.
getPackageVersionAssetResponse_assetName :: Lens.Lens' GetPackageVersionAssetResponse (Prelude.Maybe Prelude.Text)
getPackageVersionAssetResponse_assetName :: Lens' GetPackageVersionAssetResponse (Maybe Text)
getPackageVersionAssetResponse_assetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAssetResponse' {Maybe Text
assetName :: Maybe Text
$sel:assetName:GetPackageVersionAssetResponse' :: GetPackageVersionAssetResponse -> Maybe Text
assetName} -> Maybe Text
assetName) (\s :: GetPackageVersionAssetResponse
s@GetPackageVersionAssetResponse' {} Maybe Text
a -> GetPackageVersionAssetResponse
s {$sel:assetName:GetPackageVersionAssetResponse' :: Maybe Text
assetName = Maybe Text
a} :: GetPackageVersionAssetResponse)

-- | A string that contains the package version (for example, @3.5.2@).
getPackageVersionAssetResponse_packageVersion :: Lens.Lens' GetPackageVersionAssetResponse (Prelude.Maybe Prelude.Text)
getPackageVersionAssetResponse_packageVersion :: Lens' GetPackageVersionAssetResponse (Maybe Text)
getPackageVersionAssetResponse_packageVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAssetResponse' {Maybe Text
packageVersion :: Maybe Text
$sel:packageVersion:GetPackageVersionAssetResponse' :: GetPackageVersionAssetResponse -> Maybe Text
packageVersion} -> Maybe Text
packageVersion) (\s :: GetPackageVersionAssetResponse
s@GetPackageVersionAssetResponse' {} Maybe Text
a -> GetPackageVersionAssetResponse
s {$sel:packageVersion:GetPackageVersionAssetResponse' :: Maybe Text
packageVersion = Maybe Text
a} :: GetPackageVersionAssetResponse)

-- | The name of the package version revision that contains the downloaded
-- asset.
getPackageVersionAssetResponse_packageVersionRevision :: Lens.Lens' GetPackageVersionAssetResponse (Prelude.Maybe Prelude.Text)
getPackageVersionAssetResponse_packageVersionRevision :: Lens' GetPackageVersionAssetResponse (Maybe Text)
getPackageVersionAssetResponse_packageVersionRevision = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAssetResponse' {Maybe Text
packageVersionRevision :: Maybe Text
$sel:packageVersionRevision:GetPackageVersionAssetResponse' :: GetPackageVersionAssetResponse -> Maybe Text
packageVersionRevision} -> Maybe Text
packageVersionRevision) (\s :: GetPackageVersionAssetResponse
s@GetPackageVersionAssetResponse' {} Maybe Text
a -> GetPackageVersionAssetResponse
s {$sel:packageVersionRevision:GetPackageVersionAssetResponse' :: Maybe Text
packageVersionRevision = Maybe Text
a} :: GetPackageVersionAssetResponse)

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

-- | The binary file, or asset, that is downloaded.
getPackageVersionAssetResponse_asset :: Lens.Lens' GetPackageVersionAssetResponse Data.ResponseBody
getPackageVersionAssetResponse_asset :: Lens' GetPackageVersionAssetResponse ResponseBody
getPackageVersionAssetResponse_asset = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetPackageVersionAssetResponse' {ResponseBody
asset :: ResponseBody
$sel:asset:GetPackageVersionAssetResponse' :: GetPackageVersionAssetResponse -> ResponseBody
asset} -> ResponseBody
asset) (\s :: GetPackageVersionAssetResponse
s@GetPackageVersionAssetResponse' {} ResponseBody
a -> GetPackageVersionAssetResponse
s {$sel:asset:GetPackageVersionAssetResponse' :: ResponseBody
asset = ResponseBody
a} :: GetPackageVersionAssetResponse)