content: {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE DerivingStrategies #-}
  {-# LANGUAGE DuplicateRecordFields #-}
  {-# LANGUAGE ImportQualifiedPost #-}
  {-# LANGUAGE LambdaCase #-}
  {-# LANGUAGE OverloadedStrings #-}
  {-# LANGUAGE PatternSynonyms #-}
  {-# LANGUAGE RecordWildCards #-}
  {-# LANGUAGE StrictData #-}
  {-# LANGUAGE TypeFamilies #-}
  {-# LANGUAGE NoImplicitPrelude #-}
  {-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
  {-# OPTIONS_GHC -fno-warn-name-shadowing #-}
  {-# OPTIONS_GHC -fno-warn-unused-binds #-}
  {-# OPTIONS_GHC -fno-warn-unused-imports #-}
  {-# OPTIONS_GHC -fno-warn-unused-matches #-}
  
  -- |
  -- Module      : Gogol.CloudFunctions.Projects.Locations.Functions.Get
  -- Copyright   : (c) 2015-2025 Brendan Hay
  -- License     : Mozilla Public License, v. 2.0.
  -- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
  --               Toni Cebrián <toni@tonicebrian.com>
  -- Stability   : auto-generated
  -- Portability : non-portable (GHC extensions)
  --
  -- Returns a function with the given name from the requested project.
  --
  -- /See:/ <https://cloud.google.com/functions Cloud Functions API Reference> for @cloudfunctions.projects.locations.functions.get@.
  module Gogol.CloudFunctions.Projects.Locations.Functions.Get
    ( -- * Resource
      CloudFunctionsProjectsLocationsFunctionsGetResource,
  
      -- ** Constructing a Request
      CloudFunctionsProjectsLocationsFunctionsGet (..),
      newCloudFunctionsProjectsLocationsFunctionsGet,
    )
  where
  
  import Gogol.CloudFunctions.Types
  import Gogol.Prelude qualified as Core
  
  -- | A resource alias for @cloudfunctions.projects.locations.functions.get@ method which the
  -- 'CloudFunctionsProjectsLocationsFunctionsGet' request conforms to.
  type CloudFunctionsProjectsLocationsFunctionsGetResource =
    "v2"
      Core.:> Core.Capture "name" Core.Text
      Core.:> Core.QueryParam "$.xgafv" Xgafv
      Core.:> Core.QueryParam "access_token" Core.Text
      Core.:> Core.QueryParam "callback" Core.Text
      Core.:> Core.QueryParam "revision" Core.Text
      Core.:> Core.QueryParam "uploadType" Core.Text
      Core.:> Core.QueryParam "upload_protocol" Core.Text
      Core.:> Core.QueryParam "alt" Core.AltJSON
      Core.:> Core.Get '[Core.JSON] Function
  
  -- | Returns a function with the given name from the requested project.
  --
  -- /See:/ 'newCloudFunctionsProjectsLocationsFunctionsGet' smart constructor.
  data CloudFunctionsProjectsLocationsFunctionsGet = CloudFunctionsProjectsLocationsFunctionsGet
    { -- | V1 error format.
      xgafv :: (Core.Maybe Xgafv),
      -- | OAuth access token.
      accessToken :: (Core.Maybe Core.Text),
      -- | JSONP
      callback :: (Core.Maybe Core.Text),
      -- | Required. The name of the function which details should be obtained.
      name :: Core.Text,
      -- | Optional. The optional version of the 1st gen function whose details should be obtained. The version of a 1st gen function is an integer that starts from 1 and gets incremented on redeployments. GCF may keep historical configs for old versions of 1st gen function. This field can be specified to fetch the historical configs. This field is valid only for GCF 1st gen function.
      revision :: (Core.Maybe Core.Text),
      -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
      uploadType :: (Core.Maybe Core.Text),
      -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
      uploadProtocol :: (Core.Maybe Core.Text)
    }
    deriving (Core.Eq, Core.Show, Core.Generic)
  
  -- | Creates a value of 'CloudFunctionsProjectsLocationsFunctionsGet' with the minimum fields required to make a request.
  newCloudFunctionsProjectsLocationsFunctionsGet ::
    -- |  Required. The name of the function which details should be obtained. See 'name'.
    Core.Text ->
    CloudFunctionsProjectsLocationsFunctionsGet
  newCloudFunctionsProjectsLocationsFunctionsGet name =
    CloudFunctionsProjectsLocationsFunctionsGet
      { xgafv = Core.Nothing,
        accessToken = Core.Nothing,
        callback = Core.Nothing,
        name = name,
        revision = Core.Nothing,
        uploadType = Core.Nothing,
        uploadProtocol = Core.Nothing
      }
  
  instance
    Core.GoogleRequest
      CloudFunctionsProjectsLocationsFunctionsGet
    where
    type Rs CloudFunctionsProjectsLocationsFunctionsGet = Function
    type
      Scopes CloudFunctionsProjectsLocationsFunctionsGet =
        '[CloudPlatform'FullControl]
    requestClient CloudFunctionsProjectsLocationsFunctionsGet {..} =
      go
        name
        xgafv
        accessToken
        callback
        revision
        uploadType
        uploadProtocol
        (Core.Just Core.AltJSON)
        cloudFunctionsService
      where
        go =
          Core.buildClient
            ( Core.Proxy ::
                Core.Proxy CloudFunctionsProjectsLocationsFunctionsGetResource
            )
            Core.mempty
  