{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.DeviceFarm.Types.NetworkProfile
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DeviceFarm.Types.NetworkProfile where

import qualified Amazonka.Core as Core
import Amazonka.DeviceFarm.Types.NetworkProfileType
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | An array of settings that describes characteristics of a network
-- profile.
--
-- /See:/ 'newNetworkProfile' smart constructor.
data NetworkProfile = NetworkProfile'
  { -- | Time variation in the delay of received packets in milliseconds as an
    -- integer from 0 to 2000.
    NetworkProfile -> Maybe Integer
uplinkJitterMs :: Prelude.Maybe Prelude.Integer,
    -- | The Amazon Resource Name (ARN) of the network profile.
    NetworkProfile -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | Proportion of transmitted packets that fail to arrive from 0 to 100
    -- percent.
    NetworkProfile -> Maybe Natural
uplinkLossPercent :: Prelude.Maybe Prelude.Natural,
    -- | Time variation in the delay of received packets in milliseconds as an
    -- integer from 0 to 2000.
    NetworkProfile -> Maybe Integer
downlinkJitterMs :: Prelude.Maybe Prelude.Integer,
    -- | The name of the network profile.
    NetworkProfile -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | Proportion of received packets that fail to arrive from 0 to 100
    -- percent.
    NetworkProfile -> Maybe Natural
downlinkLossPercent :: Prelude.Maybe Prelude.Natural,
    -- | The type of network profile. Valid values are listed here.
    NetworkProfile -> Maybe NetworkProfileType
type' :: Prelude.Maybe NetworkProfileType,
    -- | Delay time for all packets to destination in milliseconds as an integer
    -- from 0 to 2000.
    NetworkProfile -> Maybe Integer
uplinkDelayMs :: Prelude.Maybe Prelude.Integer,
    -- | The data throughput rate in bits per second, as an integer from 0 to
    -- 104857600.
    NetworkProfile -> Maybe Integer
uplinkBandwidthBits :: Prelude.Maybe Prelude.Integer,
    -- | The description of the network profile.
    NetworkProfile -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Delay time for all packets to destination in milliseconds as an integer
    -- from 0 to 2000.
    NetworkProfile -> Maybe Integer
downlinkDelayMs :: Prelude.Maybe Prelude.Integer,
    -- | The data throughput rate in bits per second, as an integer from 0 to
    -- 104857600.
    NetworkProfile -> Maybe Integer
downlinkBandwidthBits :: Prelude.Maybe Prelude.Integer
  }
  deriving (NetworkProfile -> NetworkProfile -> Bool
(NetworkProfile -> NetworkProfile -> Bool)
-> (NetworkProfile -> NetworkProfile -> Bool) -> Eq NetworkProfile
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NetworkProfile -> NetworkProfile -> Bool
$c/= :: NetworkProfile -> NetworkProfile -> Bool
== :: NetworkProfile -> NetworkProfile -> Bool
$c== :: NetworkProfile -> NetworkProfile -> Bool
Prelude.Eq, ReadPrec [NetworkProfile]
ReadPrec NetworkProfile
Int -> ReadS NetworkProfile
ReadS [NetworkProfile]
(Int -> ReadS NetworkProfile)
-> ReadS [NetworkProfile]
-> ReadPrec NetworkProfile
-> ReadPrec [NetworkProfile]
-> Read NetworkProfile
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NetworkProfile]
$creadListPrec :: ReadPrec [NetworkProfile]
readPrec :: ReadPrec NetworkProfile
$creadPrec :: ReadPrec NetworkProfile
readList :: ReadS [NetworkProfile]
$creadList :: ReadS [NetworkProfile]
readsPrec :: Int -> ReadS NetworkProfile
$creadsPrec :: Int -> ReadS NetworkProfile
Prelude.Read, Int -> NetworkProfile -> ShowS
[NetworkProfile] -> ShowS
NetworkProfile -> String
(Int -> NetworkProfile -> ShowS)
-> (NetworkProfile -> String)
-> ([NetworkProfile] -> ShowS)
-> Show NetworkProfile
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NetworkProfile] -> ShowS
$cshowList :: [NetworkProfile] -> ShowS
show :: NetworkProfile -> String
$cshow :: NetworkProfile -> String
showsPrec :: Int -> NetworkProfile -> ShowS
$cshowsPrec :: Int -> NetworkProfile -> ShowS
Prelude.Show, (forall x. NetworkProfile -> Rep NetworkProfile x)
-> (forall x. Rep NetworkProfile x -> NetworkProfile)
-> Generic NetworkProfile
forall x. Rep NetworkProfile x -> NetworkProfile
forall x. NetworkProfile -> Rep NetworkProfile x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NetworkProfile x -> NetworkProfile
$cfrom :: forall x. NetworkProfile -> Rep NetworkProfile x
Prelude.Generic)

-- |
-- Create a value of 'NetworkProfile' 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:
--
-- 'uplinkJitterMs', 'networkProfile_uplinkJitterMs' - Time variation in the delay of received packets in milliseconds as an
-- integer from 0 to 2000.
--
-- 'arn', 'networkProfile_arn' - The Amazon Resource Name (ARN) of the network profile.
--
-- 'uplinkLossPercent', 'networkProfile_uplinkLossPercent' - Proportion of transmitted packets that fail to arrive from 0 to 100
-- percent.
--
-- 'downlinkJitterMs', 'networkProfile_downlinkJitterMs' - Time variation in the delay of received packets in milliseconds as an
-- integer from 0 to 2000.
--
-- 'name', 'networkProfile_name' - The name of the network profile.
--
-- 'downlinkLossPercent', 'networkProfile_downlinkLossPercent' - Proportion of received packets that fail to arrive from 0 to 100
-- percent.
--
-- 'type'', 'networkProfile_type' - The type of network profile. Valid values are listed here.
--
-- 'uplinkDelayMs', 'networkProfile_uplinkDelayMs' - Delay time for all packets to destination in milliseconds as an integer
-- from 0 to 2000.
--
-- 'uplinkBandwidthBits', 'networkProfile_uplinkBandwidthBits' - The data throughput rate in bits per second, as an integer from 0 to
-- 104857600.
--
-- 'description', 'networkProfile_description' - The description of the network profile.
--
-- 'downlinkDelayMs', 'networkProfile_downlinkDelayMs' - Delay time for all packets to destination in milliseconds as an integer
-- from 0 to 2000.
--
-- 'downlinkBandwidthBits', 'networkProfile_downlinkBandwidthBits' - The data throughput rate in bits per second, as an integer from 0 to
-- 104857600.
newNetworkProfile ::
  NetworkProfile
newNetworkProfile :: NetworkProfile
newNetworkProfile =
  NetworkProfile' :: Maybe Integer
-> Maybe Text
-> Maybe Natural
-> Maybe Integer
-> Maybe Text
-> Maybe Natural
-> Maybe NetworkProfileType
-> Maybe Integer
-> Maybe Integer
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> NetworkProfile
NetworkProfile'
    { $sel:uplinkJitterMs:NetworkProfile' :: Maybe Integer
uplinkJitterMs = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:NetworkProfile' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:uplinkLossPercent:NetworkProfile' :: Maybe Natural
uplinkLossPercent = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:downlinkJitterMs:NetworkProfile' :: Maybe Integer
downlinkJitterMs = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:name:NetworkProfile' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:downlinkLossPercent:NetworkProfile' :: Maybe Natural
downlinkLossPercent = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:type':NetworkProfile' :: Maybe NetworkProfileType
type' = Maybe NetworkProfileType
forall a. Maybe a
Prelude.Nothing,
      $sel:uplinkDelayMs:NetworkProfile' :: Maybe Integer
uplinkDelayMs = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:uplinkBandwidthBits:NetworkProfile' :: Maybe Integer
uplinkBandwidthBits = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:description:NetworkProfile' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:downlinkDelayMs:NetworkProfile' :: Maybe Integer
downlinkDelayMs = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:downlinkBandwidthBits:NetworkProfile' :: Maybe Integer
downlinkBandwidthBits = Maybe Integer
forall a. Maybe a
Prelude.Nothing
    }

-- | Time variation in the delay of received packets in milliseconds as an
-- integer from 0 to 2000.
networkProfile_uplinkJitterMs :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Integer)
networkProfile_uplinkJitterMs :: (Maybe Integer -> f (Maybe Integer))
-> NetworkProfile -> f NetworkProfile
networkProfile_uplinkJitterMs = (NetworkProfile -> Maybe Integer)
-> (NetworkProfile -> Maybe Integer -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Integer
uplinkJitterMs :: Maybe Integer
$sel:uplinkJitterMs:NetworkProfile' :: NetworkProfile -> Maybe Integer
uplinkJitterMs} -> Maybe Integer
uplinkJitterMs) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Integer
a -> NetworkProfile
s {$sel:uplinkJitterMs:NetworkProfile' :: Maybe Integer
uplinkJitterMs = Maybe Integer
a} :: NetworkProfile)

-- | The Amazon Resource Name (ARN) of the network profile.
networkProfile_arn :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_arn :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_arn = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
arn :: Maybe Text
$sel:arn:NetworkProfile' :: NetworkProfile -> Maybe Text
arn} -> Maybe Text
arn) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:arn:NetworkProfile' :: Maybe Text
arn = Maybe Text
a} :: NetworkProfile)

-- | Proportion of transmitted packets that fail to arrive from 0 to 100
-- percent.
networkProfile_uplinkLossPercent :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Natural)
networkProfile_uplinkLossPercent :: (Maybe Natural -> f (Maybe Natural))
-> NetworkProfile -> f NetworkProfile
networkProfile_uplinkLossPercent = (NetworkProfile -> Maybe Natural)
-> (NetworkProfile -> Maybe Natural -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Natural
uplinkLossPercent :: Maybe Natural
$sel:uplinkLossPercent:NetworkProfile' :: NetworkProfile -> Maybe Natural
uplinkLossPercent} -> Maybe Natural
uplinkLossPercent) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Natural
a -> NetworkProfile
s {$sel:uplinkLossPercent:NetworkProfile' :: Maybe Natural
uplinkLossPercent = Maybe Natural
a} :: NetworkProfile)

-- | Time variation in the delay of received packets in milliseconds as an
-- integer from 0 to 2000.
networkProfile_downlinkJitterMs :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Integer)
networkProfile_downlinkJitterMs :: (Maybe Integer -> f (Maybe Integer))
-> NetworkProfile -> f NetworkProfile
networkProfile_downlinkJitterMs = (NetworkProfile -> Maybe Integer)
-> (NetworkProfile -> Maybe Integer -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Integer
downlinkJitterMs :: Maybe Integer
$sel:downlinkJitterMs:NetworkProfile' :: NetworkProfile -> Maybe Integer
downlinkJitterMs} -> Maybe Integer
downlinkJitterMs) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Integer
a -> NetworkProfile
s {$sel:downlinkJitterMs:NetworkProfile' :: Maybe Integer
downlinkJitterMs = Maybe Integer
a} :: NetworkProfile)

-- | The name of the network profile.
networkProfile_name :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_name :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_name = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
name :: Maybe Text
$sel:name:NetworkProfile' :: NetworkProfile -> Maybe Text
name} -> Maybe Text
name) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:name:NetworkProfile' :: Maybe Text
name = Maybe Text
a} :: NetworkProfile)

-- | Proportion of received packets that fail to arrive from 0 to 100
-- percent.
networkProfile_downlinkLossPercent :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Natural)
networkProfile_downlinkLossPercent :: (Maybe Natural -> f (Maybe Natural))
-> NetworkProfile -> f NetworkProfile
networkProfile_downlinkLossPercent = (NetworkProfile -> Maybe Natural)
-> (NetworkProfile -> Maybe Natural -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Natural
downlinkLossPercent :: Maybe Natural
$sel:downlinkLossPercent:NetworkProfile' :: NetworkProfile -> Maybe Natural
downlinkLossPercent} -> Maybe Natural
downlinkLossPercent) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Natural
a -> NetworkProfile
s {$sel:downlinkLossPercent:NetworkProfile' :: Maybe Natural
downlinkLossPercent = Maybe Natural
a} :: NetworkProfile)

-- | The type of network profile. Valid values are listed here.
networkProfile_type :: Lens.Lens' NetworkProfile (Prelude.Maybe NetworkProfileType)
networkProfile_type :: (Maybe NetworkProfileType -> f (Maybe NetworkProfileType))
-> NetworkProfile -> f NetworkProfile
networkProfile_type = (NetworkProfile -> Maybe NetworkProfileType)
-> (NetworkProfile -> Maybe NetworkProfileType -> NetworkProfile)
-> Lens
     NetworkProfile
     NetworkProfile
     (Maybe NetworkProfileType)
     (Maybe NetworkProfileType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe NetworkProfileType
type' :: Maybe NetworkProfileType
$sel:type':NetworkProfile' :: NetworkProfile -> Maybe NetworkProfileType
type'} -> Maybe NetworkProfileType
type') (\s :: NetworkProfile
s@NetworkProfile' {} Maybe NetworkProfileType
a -> NetworkProfile
s {$sel:type':NetworkProfile' :: Maybe NetworkProfileType
type' = Maybe NetworkProfileType
a} :: NetworkProfile)

-- | Delay time for all packets to destination in milliseconds as an integer
-- from 0 to 2000.
networkProfile_uplinkDelayMs :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Integer)
networkProfile_uplinkDelayMs :: (Maybe Integer -> f (Maybe Integer))
-> NetworkProfile -> f NetworkProfile
networkProfile_uplinkDelayMs = (NetworkProfile -> Maybe Integer)
-> (NetworkProfile -> Maybe Integer -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Integer
uplinkDelayMs :: Maybe Integer
$sel:uplinkDelayMs:NetworkProfile' :: NetworkProfile -> Maybe Integer
uplinkDelayMs} -> Maybe Integer
uplinkDelayMs) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Integer
a -> NetworkProfile
s {$sel:uplinkDelayMs:NetworkProfile' :: Maybe Integer
uplinkDelayMs = Maybe Integer
a} :: NetworkProfile)

-- | The data throughput rate in bits per second, as an integer from 0 to
-- 104857600.
networkProfile_uplinkBandwidthBits :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Integer)
networkProfile_uplinkBandwidthBits :: (Maybe Integer -> f (Maybe Integer))
-> NetworkProfile -> f NetworkProfile
networkProfile_uplinkBandwidthBits = (NetworkProfile -> Maybe Integer)
-> (NetworkProfile -> Maybe Integer -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Integer
uplinkBandwidthBits :: Maybe Integer
$sel:uplinkBandwidthBits:NetworkProfile' :: NetworkProfile -> Maybe Integer
uplinkBandwidthBits} -> Maybe Integer
uplinkBandwidthBits) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Integer
a -> NetworkProfile
s {$sel:uplinkBandwidthBits:NetworkProfile' :: Maybe Integer
uplinkBandwidthBits = Maybe Integer
a} :: NetworkProfile)

-- | The description of the network profile.
networkProfile_description :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Text)
networkProfile_description :: (Maybe Text -> f (Maybe Text))
-> NetworkProfile -> f NetworkProfile
networkProfile_description = (NetworkProfile -> Maybe Text)
-> (NetworkProfile -> Maybe Text -> NetworkProfile)
-> Lens NetworkProfile NetworkProfile (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Text
description :: Maybe Text
$sel:description:NetworkProfile' :: NetworkProfile -> Maybe Text
description} -> Maybe Text
description) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Text
a -> NetworkProfile
s {$sel:description:NetworkProfile' :: Maybe Text
description = Maybe Text
a} :: NetworkProfile)

-- | Delay time for all packets to destination in milliseconds as an integer
-- from 0 to 2000.
networkProfile_downlinkDelayMs :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Integer)
networkProfile_downlinkDelayMs :: (Maybe Integer -> f (Maybe Integer))
-> NetworkProfile -> f NetworkProfile
networkProfile_downlinkDelayMs = (NetworkProfile -> Maybe Integer)
-> (NetworkProfile -> Maybe Integer -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Integer
downlinkDelayMs :: Maybe Integer
$sel:downlinkDelayMs:NetworkProfile' :: NetworkProfile -> Maybe Integer
downlinkDelayMs} -> Maybe Integer
downlinkDelayMs) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Integer
a -> NetworkProfile
s {$sel:downlinkDelayMs:NetworkProfile' :: Maybe Integer
downlinkDelayMs = Maybe Integer
a} :: NetworkProfile)

-- | The data throughput rate in bits per second, as an integer from 0 to
-- 104857600.
networkProfile_downlinkBandwidthBits :: Lens.Lens' NetworkProfile (Prelude.Maybe Prelude.Integer)
networkProfile_downlinkBandwidthBits :: (Maybe Integer -> f (Maybe Integer))
-> NetworkProfile -> f NetworkProfile
networkProfile_downlinkBandwidthBits = (NetworkProfile -> Maybe Integer)
-> (NetworkProfile -> Maybe Integer -> NetworkProfile)
-> Lens
     NetworkProfile NetworkProfile (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NetworkProfile' {Maybe Integer
downlinkBandwidthBits :: Maybe Integer
$sel:downlinkBandwidthBits:NetworkProfile' :: NetworkProfile -> Maybe Integer
downlinkBandwidthBits} -> Maybe Integer
downlinkBandwidthBits) (\s :: NetworkProfile
s@NetworkProfile' {} Maybe Integer
a -> NetworkProfile
s {$sel:downlinkBandwidthBits:NetworkProfile' :: Maybe Integer
downlinkBandwidthBits = Maybe Integer
a} :: NetworkProfile)

instance Core.FromJSON NetworkProfile where
  parseJSON :: Value -> Parser NetworkProfile
parseJSON =
    String
-> (Object -> Parser NetworkProfile)
-> Value
-> Parser NetworkProfile
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"NetworkProfile"
      ( \Object
x ->
          Maybe Integer
-> Maybe Text
-> Maybe Natural
-> Maybe Integer
-> Maybe Text
-> Maybe Natural
-> Maybe NetworkProfileType
-> Maybe Integer
-> Maybe Integer
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> NetworkProfile
NetworkProfile'
            (Maybe Integer
 -> Maybe Text
 -> Maybe Natural
 -> Maybe Integer
 -> Maybe Text
 -> Maybe Natural
 -> Maybe NetworkProfileType
 -> Maybe Integer
 -> Maybe Integer
 -> Maybe Text
 -> Maybe Integer
 -> Maybe Integer
 -> NetworkProfile)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Text
      -> Maybe Natural
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Natural
      -> Maybe NetworkProfileType
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> NetworkProfile)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"uplinkJitterMs")
            Parser
  (Maybe Text
   -> Maybe Natural
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Natural
   -> Maybe NetworkProfileType
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> NetworkProfile)
-> Parser (Maybe Text)
-> Parser
     (Maybe Natural
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Natural
      -> Maybe NetworkProfileType
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"arn")
            Parser
  (Maybe Natural
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Natural
   -> Maybe NetworkProfileType
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> NetworkProfile)
-> Parser (Maybe Natural)
-> Parser
     (Maybe Integer
      -> Maybe Text
      -> Maybe Natural
      -> Maybe NetworkProfileType
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"uplinkLossPercent")
            Parser
  (Maybe Integer
   -> Maybe Text
   -> Maybe Natural
   -> Maybe NetworkProfileType
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> NetworkProfile)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Text
      -> Maybe Natural
      -> Maybe NetworkProfileType
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"downlinkJitterMs")
            Parser
  (Maybe Text
   -> Maybe Natural
   -> Maybe NetworkProfileType
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> NetworkProfile)
-> Parser (Maybe Text)
-> Parser
     (Maybe Natural
      -> Maybe NetworkProfileType
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"name")
            Parser
  (Maybe Natural
   -> Maybe NetworkProfileType
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> NetworkProfile)
-> Parser (Maybe Natural)
-> Parser
     (Maybe NetworkProfileType
      -> Maybe Integer
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"downlinkLossPercent")
            Parser
  (Maybe NetworkProfileType
   -> Maybe Integer
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> NetworkProfile)
-> Parser (Maybe NetworkProfileType)
-> Parser
     (Maybe Integer
      -> Maybe Integer
      -> Maybe Text
      -> Maybe Integer
      -> Maybe Integer
      -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NetworkProfileType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"type")
            Parser
  (Maybe Integer
   -> Maybe Integer
   -> Maybe Text
   -> Maybe Integer
   -> Maybe Integer
   -> NetworkProfile)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Integer
      -> Maybe Text -> Maybe Integer -> Maybe Integer -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"uplinkDelayMs")
            Parser
  (Maybe Integer
   -> Maybe Text -> Maybe Integer -> Maybe Integer -> NetworkProfile)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Text -> Maybe Integer -> Maybe Integer -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"uplinkBandwidthBits")
            Parser
  (Maybe Text -> Maybe Integer -> Maybe Integer -> NetworkProfile)
-> Parser (Maybe Text)
-> Parser (Maybe Integer -> Maybe Integer -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"description")
            Parser (Maybe Integer -> Maybe Integer -> NetworkProfile)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> NetworkProfile)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"downlinkDelayMs")
            Parser (Maybe Integer -> NetworkProfile)
-> Parser (Maybe Integer) -> Parser NetworkProfile
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"downlinkBandwidthBits")
      )

instance Prelude.Hashable NetworkProfile

instance Prelude.NFData NetworkProfile