packages feed

amazonka-omics-2.0: gen/Amazonka/Omics/GetReference.hs

{-# 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.Omics.GetReference
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets a reference file.
module Amazonka.Omics.GetReference
  ( -- * Creating a Request
    GetReference (..),
    newGetReference,

    -- * Request Lenses
    getReference_file,
    getReference_range,
    getReference_id,
    getReference_partNumber,
    getReference_referenceStoreId,

    -- * Destructuring the Response
    GetReferenceResponse (..),
    newGetReferenceResponse,

    -- * Response Lenses
    getReferenceResponse_httpStatus,
    getReferenceResponse_payload,
  )
where

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

-- | /See:/ 'newGetReference' smart constructor.
data GetReference = GetReference'
  { -- | The file to retrieve.
    file :: Prelude.Maybe ReferenceFile,
    -- | The range to retrieve.
    range :: Prelude.Maybe Prelude.Text,
    -- | The reference\'s ID.
    id :: Prelude.Text,
    -- | The part number to retrieve.
    partNumber :: Prelude.Natural,
    -- | The reference\'s store ID.
    referenceStoreId :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GetReference' 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:
--
-- 'file', 'getReference_file' - The file to retrieve.
--
-- 'range', 'getReference_range' - The range to retrieve.
--
-- 'id', 'getReference_id' - The reference\'s ID.
--
-- 'partNumber', 'getReference_partNumber' - The part number to retrieve.
--
-- 'referenceStoreId', 'getReference_referenceStoreId' - The reference\'s store ID.
newGetReference ::
  -- | 'id'
  Prelude.Text ->
  -- | 'partNumber'
  Prelude.Natural ->
  -- | 'referenceStoreId'
  Prelude.Text ->
  GetReference
newGetReference pId_ pPartNumber_ pReferenceStoreId_ =
  GetReference'
    { file = Prelude.Nothing,
      range = Prelude.Nothing,
      id = pId_,
      partNumber = pPartNumber_,
      referenceStoreId = pReferenceStoreId_
    }

-- | The file to retrieve.
getReference_file :: Lens.Lens' GetReference (Prelude.Maybe ReferenceFile)
getReference_file = Lens.lens (\GetReference' {file} -> file) (\s@GetReference' {} a -> s {file = a} :: GetReference)

-- | The range to retrieve.
getReference_range :: Lens.Lens' GetReference (Prelude.Maybe Prelude.Text)
getReference_range = Lens.lens (\GetReference' {range} -> range) (\s@GetReference' {} a -> s {range = a} :: GetReference)

-- | The reference\'s ID.
getReference_id :: Lens.Lens' GetReference Prelude.Text
getReference_id = Lens.lens (\GetReference' {id} -> id) (\s@GetReference' {} a -> s {id = a} :: GetReference)

-- | The part number to retrieve.
getReference_partNumber :: Lens.Lens' GetReference Prelude.Natural
getReference_partNumber = Lens.lens (\GetReference' {partNumber} -> partNumber) (\s@GetReference' {} a -> s {partNumber = a} :: GetReference)

-- | The reference\'s store ID.
getReference_referenceStoreId :: Lens.Lens' GetReference Prelude.Text
getReference_referenceStoreId = Lens.lens (\GetReference' {referenceStoreId} -> referenceStoreId) (\s@GetReference' {} a -> s {referenceStoreId = a} :: GetReference)

instance Core.AWSRequest GetReference where
  type AWSResponse GetReference = GetReferenceResponse
  request overrides =
    Request.get (overrides defaultService)
  response =
    Response.receiveBody
      ( \s h x ->
          GetReferenceResponse'
            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> (Prelude.pure x)
      )

instance Prelude.Hashable GetReference where
  hashWithSalt _salt GetReference' {..} =
    _salt
      `Prelude.hashWithSalt` file
      `Prelude.hashWithSalt` range
      `Prelude.hashWithSalt` id
      `Prelude.hashWithSalt` partNumber
      `Prelude.hashWithSalt` referenceStoreId

instance Prelude.NFData GetReference where
  rnf GetReference' {..} =
    Prelude.rnf file
      `Prelude.seq` Prelude.rnf range
      `Prelude.seq` Prelude.rnf id
      `Prelude.seq` Prelude.rnf partNumber
      `Prelude.seq` Prelude.rnf referenceStoreId

instance Data.ToHeaders GetReference where
  toHeaders GetReference' {..} =
    Prelude.mconcat
      [ "Range" Data.=# range,
        "Content-Type"
          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
      ]

instance Data.ToPath GetReference where
  toPath GetReference' {..} =
    Prelude.mconcat
      [ "/referencestore/",
        Data.toBS referenceStoreId,
        "/reference/",
        Data.toBS id
      ]

instance Data.ToQuery GetReference where
  toQuery GetReference' {..} =
    Prelude.mconcat
      [ "file" Data.=: file,
        "partNumber" Data.=: partNumber
      ]

-- | /See:/ 'newGetReferenceResponse' smart constructor.
data GetReferenceResponse = GetReferenceResponse'
  { -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | The reference file payload.
    payload :: Data.ResponseBody
  }
  deriving (Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'GetReferenceResponse' 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:
--
-- 'httpStatus', 'getReferenceResponse_httpStatus' - The response's http status code.
--
-- 'payload', 'getReferenceResponse_payload' - The reference file payload.
newGetReferenceResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'payload'
  Data.ResponseBody ->
  GetReferenceResponse
newGetReferenceResponse pHttpStatus_ pPayload_ =
  GetReferenceResponse'
    { httpStatus = pHttpStatus_,
      payload = pPayload_
    }

-- | The response's http status code.
getReferenceResponse_httpStatus :: Lens.Lens' GetReferenceResponse Prelude.Int
getReferenceResponse_httpStatus = Lens.lens (\GetReferenceResponse' {httpStatus} -> httpStatus) (\s@GetReferenceResponse' {} a -> s {httpStatus = a} :: GetReferenceResponse)

-- | The reference file payload.
getReferenceResponse_payload :: Lens.Lens' GetReferenceResponse Data.ResponseBody
getReferenceResponse_payload = Lens.lens (\GetReferenceResponse' {payload} -> payload) (\s@GetReferenceResponse' {} a -> s {payload = a} :: GetReferenceResponse)