{-# 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.Location.UpdateRouteCalculator
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the specified properties for a given route calculator resource.
module Amazonka.Location.UpdateRouteCalculator
  ( -- * Creating a Request
    UpdateRouteCalculator (..),
    newUpdateRouteCalculator,

    -- * Request Lenses
    updateRouteCalculator_description,
    updateRouteCalculator_pricingPlan,
    updateRouteCalculator_calculatorName,

    -- * Destructuring the Response
    UpdateRouteCalculatorResponse (..),
    newUpdateRouteCalculatorResponse,

    -- * Response Lenses
    updateRouteCalculatorResponse_httpStatus,
    updateRouteCalculatorResponse_calculatorArn,
    updateRouteCalculatorResponse_calculatorName,
    updateRouteCalculatorResponse_updateTime,
  )
where

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

-- | /See:/ 'newUpdateRouteCalculator' smart constructor.
data UpdateRouteCalculator = UpdateRouteCalculator'
  { -- | Updates the description for the route calculator resource.
    UpdateRouteCalculator -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | No longer used. If included, the only allowed value is
    -- @RequestBasedUsage@.
    UpdateRouteCalculator -> Maybe PricingPlan
pricingPlan :: Prelude.Maybe PricingPlan,
    -- | The name of the route calculator resource to update.
    UpdateRouteCalculator -> Text
calculatorName :: Prelude.Text
  }
  deriving (UpdateRouteCalculator -> UpdateRouteCalculator -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateRouteCalculator -> UpdateRouteCalculator -> Bool
$c/= :: UpdateRouteCalculator -> UpdateRouteCalculator -> Bool
== :: UpdateRouteCalculator -> UpdateRouteCalculator -> Bool
$c== :: UpdateRouteCalculator -> UpdateRouteCalculator -> Bool
Prelude.Eq, ReadPrec [UpdateRouteCalculator]
ReadPrec UpdateRouteCalculator
Int -> ReadS UpdateRouteCalculator
ReadS [UpdateRouteCalculator]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateRouteCalculator]
$creadListPrec :: ReadPrec [UpdateRouteCalculator]
readPrec :: ReadPrec UpdateRouteCalculator
$creadPrec :: ReadPrec UpdateRouteCalculator
readList :: ReadS [UpdateRouteCalculator]
$creadList :: ReadS [UpdateRouteCalculator]
readsPrec :: Int -> ReadS UpdateRouteCalculator
$creadsPrec :: Int -> ReadS UpdateRouteCalculator
Prelude.Read, Int -> UpdateRouteCalculator -> ShowS
[UpdateRouteCalculator] -> ShowS
UpdateRouteCalculator -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateRouteCalculator] -> ShowS
$cshowList :: [UpdateRouteCalculator] -> ShowS
show :: UpdateRouteCalculator -> String
$cshow :: UpdateRouteCalculator -> String
showsPrec :: Int -> UpdateRouteCalculator -> ShowS
$cshowsPrec :: Int -> UpdateRouteCalculator -> ShowS
Prelude.Show, forall x. Rep UpdateRouteCalculator x -> UpdateRouteCalculator
forall x. UpdateRouteCalculator -> Rep UpdateRouteCalculator x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateRouteCalculator x -> UpdateRouteCalculator
$cfrom :: forall x. UpdateRouteCalculator -> Rep UpdateRouteCalculator x
Prelude.Generic)

-- |
-- Create a value of 'UpdateRouteCalculator' 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:
--
-- 'description', 'updateRouteCalculator_description' - Updates the description for the route calculator resource.
--
-- 'pricingPlan', 'updateRouteCalculator_pricingPlan' - No longer used. If included, the only allowed value is
-- @RequestBasedUsage@.
--
-- 'calculatorName', 'updateRouteCalculator_calculatorName' - The name of the route calculator resource to update.
newUpdateRouteCalculator ::
  -- | 'calculatorName'
  Prelude.Text ->
  UpdateRouteCalculator
newUpdateRouteCalculator :: Text -> UpdateRouteCalculator
newUpdateRouteCalculator Text
pCalculatorName_ =
  UpdateRouteCalculator'
    { $sel:description:UpdateRouteCalculator' :: Maybe Text
description =
        forall a. Maybe a
Prelude.Nothing,
      $sel:pricingPlan:UpdateRouteCalculator' :: Maybe PricingPlan
pricingPlan = forall a. Maybe a
Prelude.Nothing,
      $sel:calculatorName:UpdateRouteCalculator' :: Text
calculatorName = Text
pCalculatorName_
    }

-- | Updates the description for the route calculator resource.
updateRouteCalculator_description :: Lens.Lens' UpdateRouteCalculator (Prelude.Maybe Prelude.Text)
updateRouteCalculator_description :: Lens' UpdateRouteCalculator (Maybe Text)
updateRouteCalculator_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteCalculator' {Maybe Text
description :: Maybe Text
$sel:description:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateRouteCalculator
s@UpdateRouteCalculator' {} Maybe Text
a -> UpdateRouteCalculator
s {$sel:description:UpdateRouteCalculator' :: Maybe Text
description = Maybe Text
a} :: UpdateRouteCalculator)

-- | No longer used. If included, the only allowed value is
-- @RequestBasedUsage@.
updateRouteCalculator_pricingPlan :: Lens.Lens' UpdateRouteCalculator (Prelude.Maybe PricingPlan)
updateRouteCalculator_pricingPlan :: Lens' UpdateRouteCalculator (Maybe PricingPlan)
updateRouteCalculator_pricingPlan = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteCalculator' {Maybe PricingPlan
pricingPlan :: Maybe PricingPlan
$sel:pricingPlan:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe PricingPlan
pricingPlan} -> Maybe PricingPlan
pricingPlan) (\s :: UpdateRouteCalculator
s@UpdateRouteCalculator' {} Maybe PricingPlan
a -> UpdateRouteCalculator
s {$sel:pricingPlan:UpdateRouteCalculator' :: Maybe PricingPlan
pricingPlan = Maybe PricingPlan
a} :: UpdateRouteCalculator)

-- | The name of the route calculator resource to update.
updateRouteCalculator_calculatorName :: Lens.Lens' UpdateRouteCalculator Prelude.Text
updateRouteCalculator_calculatorName :: Lens' UpdateRouteCalculator Text
updateRouteCalculator_calculatorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteCalculator' {Text
calculatorName :: Text
$sel:calculatorName:UpdateRouteCalculator' :: UpdateRouteCalculator -> Text
calculatorName} -> Text
calculatorName) (\s :: UpdateRouteCalculator
s@UpdateRouteCalculator' {} Text
a -> UpdateRouteCalculator
s {$sel:calculatorName:UpdateRouteCalculator' :: Text
calculatorName = Text
a} :: UpdateRouteCalculator)

instance Core.AWSRequest UpdateRouteCalculator where
  type
    AWSResponse UpdateRouteCalculator =
      UpdateRouteCalculatorResponse
  request :: (Service -> Service)
-> UpdateRouteCalculator -> Request UpdateRouteCalculator
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.patchJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateRouteCalculator
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateRouteCalculator)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Int -> Text -> Text -> ISO8601 -> UpdateRouteCalculatorResponse
UpdateRouteCalculatorResponse'
            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. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"CalculatorArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"CalculatorName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"UpdateTime")
      )

instance Prelude.Hashable UpdateRouteCalculator where
  hashWithSalt :: Int -> UpdateRouteCalculator -> Int
hashWithSalt Int
_salt UpdateRouteCalculator' {Maybe Text
Maybe PricingPlan
Text
calculatorName :: Text
pricingPlan :: Maybe PricingPlan
description :: Maybe Text
$sel:calculatorName:UpdateRouteCalculator' :: UpdateRouteCalculator -> Text
$sel:pricingPlan:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe PricingPlan
$sel:description:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PricingPlan
pricingPlan
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
calculatorName

instance Prelude.NFData UpdateRouteCalculator where
  rnf :: UpdateRouteCalculator -> ()
rnf UpdateRouteCalculator' {Maybe Text
Maybe PricingPlan
Text
calculatorName :: Text
pricingPlan :: Maybe PricingPlan
description :: Maybe Text
$sel:calculatorName:UpdateRouteCalculator' :: UpdateRouteCalculator -> Text
$sel:pricingPlan:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe PricingPlan
$sel:description:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PricingPlan
pricingPlan
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
calculatorName

instance Data.ToHeaders UpdateRouteCalculator where
  toHeaders :: UpdateRouteCalculator -> 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.ToJSON UpdateRouteCalculator where
  toJSON :: UpdateRouteCalculator -> Value
toJSON UpdateRouteCalculator' {Maybe Text
Maybe PricingPlan
Text
calculatorName :: Text
pricingPlan :: Maybe PricingPlan
description :: Maybe Text
$sel:calculatorName:UpdateRouteCalculator' :: UpdateRouteCalculator -> Text
$sel:pricingPlan:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe PricingPlan
$sel:description:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"PricingPlan" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe PricingPlan
pricingPlan
          ]
      )

instance Data.ToPath UpdateRouteCalculator where
  toPath :: UpdateRouteCalculator -> ByteString
toPath UpdateRouteCalculator' {Maybe Text
Maybe PricingPlan
Text
calculatorName :: Text
pricingPlan :: Maybe PricingPlan
description :: Maybe Text
$sel:calculatorName:UpdateRouteCalculator' :: UpdateRouteCalculator -> Text
$sel:pricingPlan:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe PricingPlan
$sel:description:UpdateRouteCalculator' :: UpdateRouteCalculator -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/routes/v0/calculators/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
calculatorName]

instance Data.ToQuery UpdateRouteCalculator where
  toQuery :: UpdateRouteCalculator -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateRouteCalculatorResponse' smart constructor.
data UpdateRouteCalculatorResponse = UpdateRouteCalculatorResponse'
  { -- | The response's http status code.
    UpdateRouteCalculatorResponse -> Int
httpStatus :: Prelude.Int,
    -- | The Amazon Resource Name (ARN) of the updated route calculator resource.
    -- Used to specify a resource across AWS.
    --
    -- -   Format example:
    --     @arn:aws:geo:region:account-id:route- calculator\/ExampleCalculator@
    UpdateRouteCalculatorResponse -> Text
calculatorArn :: Prelude.Text,
    -- | The name of the updated route calculator resource.
    UpdateRouteCalculatorResponse -> Text
calculatorName :: Prelude.Text,
    -- | The timestamp for when the route calculator was last updated in
    -- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>
    -- format: @YYYY-MM-DDThh:mm:ss.sssZ@.
    UpdateRouteCalculatorResponse -> ISO8601
updateTime :: Data.ISO8601
  }
  deriving (UpdateRouteCalculatorResponse
-> UpdateRouteCalculatorResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateRouteCalculatorResponse
-> UpdateRouteCalculatorResponse -> Bool
$c/= :: UpdateRouteCalculatorResponse
-> UpdateRouteCalculatorResponse -> Bool
== :: UpdateRouteCalculatorResponse
-> UpdateRouteCalculatorResponse -> Bool
$c== :: UpdateRouteCalculatorResponse
-> UpdateRouteCalculatorResponse -> Bool
Prelude.Eq, ReadPrec [UpdateRouteCalculatorResponse]
ReadPrec UpdateRouteCalculatorResponse
Int -> ReadS UpdateRouteCalculatorResponse
ReadS [UpdateRouteCalculatorResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateRouteCalculatorResponse]
$creadListPrec :: ReadPrec [UpdateRouteCalculatorResponse]
readPrec :: ReadPrec UpdateRouteCalculatorResponse
$creadPrec :: ReadPrec UpdateRouteCalculatorResponse
readList :: ReadS [UpdateRouteCalculatorResponse]
$creadList :: ReadS [UpdateRouteCalculatorResponse]
readsPrec :: Int -> ReadS UpdateRouteCalculatorResponse
$creadsPrec :: Int -> ReadS UpdateRouteCalculatorResponse
Prelude.Read, Int -> UpdateRouteCalculatorResponse -> ShowS
[UpdateRouteCalculatorResponse] -> ShowS
UpdateRouteCalculatorResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateRouteCalculatorResponse] -> ShowS
$cshowList :: [UpdateRouteCalculatorResponse] -> ShowS
show :: UpdateRouteCalculatorResponse -> String
$cshow :: UpdateRouteCalculatorResponse -> String
showsPrec :: Int -> UpdateRouteCalculatorResponse -> ShowS
$cshowsPrec :: Int -> UpdateRouteCalculatorResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateRouteCalculatorResponse x
-> UpdateRouteCalculatorResponse
forall x.
UpdateRouteCalculatorResponse
-> Rep UpdateRouteCalculatorResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateRouteCalculatorResponse x
-> UpdateRouteCalculatorResponse
$cfrom :: forall x.
UpdateRouteCalculatorResponse
-> Rep UpdateRouteCalculatorResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateRouteCalculatorResponse' 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', 'updateRouteCalculatorResponse_httpStatus' - The response's http status code.
--
-- 'calculatorArn', 'updateRouteCalculatorResponse_calculatorArn' - The Amazon Resource Name (ARN) of the updated route calculator resource.
-- Used to specify a resource across AWS.
--
-- -   Format example:
--     @arn:aws:geo:region:account-id:route- calculator\/ExampleCalculator@
--
-- 'calculatorName', 'updateRouteCalculatorResponse_calculatorName' - The name of the updated route calculator resource.
--
-- 'updateTime', 'updateRouteCalculatorResponse_updateTime' - The timestamp for when the route calculator was last updated in
-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>
-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.
newUpdateRouteCalculatorResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'calculatorArn'
  Prelude.Text ->
  -- | 'calculatorName'
  Prelude.Text ->
  -- | 'updateTime'
  Prelude.UTCTime ->
  UpdateRouteCalculatorResponse
newUpdateRouteCalculatorResponse :: Int -> Text -> Text -> UTCTime -> UpdateRouteCalculatorResponse
newUpdateRouteCalculatorResponse
  Int
pHttpStatus_
  Text
pCalculatorArn_
  Text
pCalculatorName_
  UTCTime
pUpdateTime_ =
    UpdateRouteCalculatorResponse'
      { $sel:httpStatus:UpdateRouteCalculatorResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:calculatorArn:UpdateRouteCalculatorResponse' :: Text
calculatorArn = Text
pCalculatorArn_,
        $sel:calculatorName:UpdateRouteCalculatorResponse' :: Text
calculatorName = Text
pCalculatorName_,
        $sel:updateTime:UpdateRouteCalculatorResponse' :: ISO8601
updateTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pUpdateTime_
      }

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

-- | The Amazon Resource Name (ARN) of the updated route calculator resource.
-- Used to specify a resource across AWS.
--
-- -   Format example:
--     @arn:aws:geo:region:account-id:route- calculator\/ExampleCalculator@
updateRouteCalculatorResponse_calculatorArn :: Lens.Lens' UpdateRouteCalculatorResponse Prelude.Text
updateRouteCalculatorResponse_calculatorArn :: Lens' UpdateRouteCalculatorResponse Text
updateRouteCalculatorResponse_calculatorArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteCalculatorResponse' {Text
calculatorArn :: Text
$sel:calculatorArn:UpdateRouteCalculatorResponse' :: UpdateRouteCalculatorResponse -> Text
calculatorArn} -> Text
calculatorArn) (\s :: UpdateRouteCalculatorResponse
s@UpdateRouteCalculatorResponse' {} Text
a -> UpdateRouteCalculatorResponse
s {$sel:calculatorArn:UpdateRouteCalculatorResponse' :: Text
calculatorArn = Text
a} :: UpdateRouteCalculatorResponse)

-- | The name of the updated route calculator resource.
updateRouteCalculatorResponse_calculatorName :: Lens.Lens' UpdateRouteCalculatorResponse Prelude.Text
updateRouteCalculatorResponse_calculatorName :: Lens' UpdateRouteCalculatorResponse Text
updateRouteCalculatorResponse_calculatorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteCalculatorResponse' {Text
calculatorName :: Text
$sel:calculatorName:UpdateRouteCalculatorResponse' :: UpdateRouteCalculatorResponse -> Text
calculatorName} -> Text
calculatorName) (\s :: UpdateRouteCalculatorResponse
s@UpdateRouteCalculatorResponse' {} Text
a -> UpdateRouteCalculatorResponse
s {$sel:calculatorName:UpdateRouteCalculatorResponse' :: Text
calculatorName = Text
a} :: UpdateRouteCalculatorResponse)

-- | The timestamp for when the route calculator was last updated in
-- <https://www.iso.org/iso-8601-date-and-time-format.html ISO 8601>
-- format: @YYYY-MM-DDThh:mm:ss.sssZ@.
updateRouteCalculatorResponse_updateTime :: Lens.Lens' UpdateRouteCalculatorResponse Prelude.UTCTime
updateRouteCalculatorResponse_updateTime :: Lens' UpdateRouteCalculatorResponse UTCTime
updateRouteCalculatorResponse_updateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateRouteCalculatorResponse' {ISO8601
updateTime :: ISO8601
$sel:updateTime:UpdateRouteCalculatorResponse' :: UpdateRouteCalculatorResponse -> ISO8601
updateTime} -> ISO8601
updateTime) (\s :: UpdateRouteCalculatorResponse
s@UpdateRouteCalculatorResponse' {} ISO8601
a -> UpdateRouteCalculatorResponse
s {$sel:updateTime:UpdateRouteCalculatorResponse' :: ISO8601
updateTime = ISO8601
a} :: UpdateRouteCalculatorResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance Prelude.NFData UpdateRouteCalculatorResponse where
  rnf :: UpdateRouteCalculatorResponse -> ()
rnf UpdateRouteCalculatorResponse' {Int
Text
ISO8601
updateTime :: ISO8601
calculatorName :: Text
calculatorArn :: Text
httpStatus :: Int
$sel:updateTime:UpdateRouteCalculatorResponse' :: UpdateRouteCalculatorResponse -> ISO8601
$sel:calculatorName:UpdateRouteCalculatorResponse' :: UpdateRouteCalculatorResponse -> Text
$sel:calculatorArn:UpdateRouteCalculatorResponse' :: UpdateRouteCalculatorResponse -> Text
$sel:httpStatus:UpdateRouteCalculatorResponse' :: UpdateRouteCalculatorResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
calculatorArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
calculatorName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ISO8601
updateTime