gogol-appstate-1.0.0: gen/Gogol/AppState/Internal/Product.hs
{-# 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.AppState.Internal.Product
-- 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)
module Gogol.AppState.Internal.Product
( -- * GetResponse
GetResponse (..),
newGetResponse,
-- * ListResponse
ListResponse (..),
newListResponse,
-- * UpdateRequest
UpdateRequest (..),
newUpdateRequest,
-- * WriteResult
WriteResult (..),
newWriteResult,
)
where
import Gogol.AppState.Internal.Sum
import Gogol.Prelude qualified as Core
-- | This is a JSON template for an app state resource.
--
-- /See:/ 'newGetResponse' smart constructor.
data GetResponse = GetResponse
{ -- | The current app state version.
currentStateVersion :: (Core.Maybe Core.Text),
-- | The requested data.
data' :: (Core.Maybe Core.Text),
-- | Uniquely identifies the type of this resource. Value is always the fixed string appstate#getResponse.
kind :: Core.Text,
-- | The key for the data.
stateKey :: (Core.Maybe Core.Int32)
}
deriving (Core.Eq, Core.Show, Core.Generic)
-- | Creates a value of 'GetResponse' with the minimum fields required to make a request.
newGetResponse ::
GetResponse
newGetResponse =
GetResponse
{ currentStateVersion = Core.Nothing,
data' = Core.Nothing,
kind = "appstate#getResponse",
stateKey = Core.Nothing
}
instance Core.FromJSON GetResponse where
parseJSON =
Core.withObject
"GetResponse"
( \o ->
GetResponse
Core.<$> (o Core..:? "currentStateVersion")
Core.<*> (o Core..:? "data")
Core.<*> (o Core..:? "kind" Core..!= "appstate#getResponse")
Core.<*> (o Core..:? "stateKey")
)
instance Core.ToJSON GetResponse where
toJSON GetResponse {..} =
Core.object
( Core.catMaybes
[ ("currentStateVersion" Core..=) Core.<$> currentStateVersion,
("data" Core..=) Core.<$> data',
Core.Just ("kind" Core..= kind),
("stateKey" Core..=) Core.<$> stateKey
]
)
-- | This is a JSON template to convert a list-response for app state.
--
-- /See:/ 'newListResponse' smart constructor.
data ListResponse = ListResponse
{ -- | The app state data.
items :: (Core.Maybe [GetResponse]),
-- | Uniquely identifies the type of this resource. Value is always the fixed string appstate#listResponse.
kind :: Core.Text,
-- | The maximum number of keys allowed for this user.
maximumKeyCount :: (Core.Maybe Core.Int32)
}
deriving (Core.Eq, Core.Show, Core.Generic)
-- | Creates a value of 'ListResponse' with the minimum fields required to make a request.
newListResponse ::
ListResponse
newListResponse =
ListResponse
{ items = Core.Nothing,
kind = "appstate#listResponse",
maximumKeyCount = Core.Nothing
}
instance Core.FromJSON ListResponse where
parseJSON =
Core.withObject
"ListResponse"
( \o ->
ListResponse
Core.<$> (o Core..:? "items")
Core.<*> (o Core..:? "kind" Core..!= "appstate#listResponse")
Core.<*> (o Core..:? "maximumKeyCount")
)
instance Core.ToJSON ListResponse where
toJSON ListResponse {..} =
Core.object
( Core.catMaybes
[ ("items" Core..=) Core.<$> items,
Core.Just ("kind" Core..= kind),
("maximumKeyCount" Core..=) Core.<$> maximumKeyCount
]
)
-- | This is a JSON template for a requests which update app state
--
-- /See:/ 'newUpdateRequest' smart constructor.
data UpdateRequest = UpdateRequest
{ -- | The new app state data that your application is trying to update with.
data' :: (Core.Maybe Core.Text),
-- | Uniquely identifies the type of this resource. Value is always the fixed string appstate#updateRequest.
kind :: Core.Text
}
deriving (Core.Eq, Core.Show, Core.Generic)
-- | Creates a value of 'UpdateRequest' with the minimum fields required to make a request.
newUpdateRequest ::
UpdateRequest
newUpdateRequest =
UpdateRequest
{ data' = Core.Nothing,
kind = "appstate#updateRequest"
}
instance Core.FromJSON UpdateRequest where
parseJSON =
Core.withObject
"UpdateRequest"
( \o ->
UpdateRequest
Core.<$> (o Core..:? "data")
Core.<*> (o Core..:? "kind" Core..!= "appstate#updateRequest")
)
instance Core.ToJSON UpdateRequest where
toJSON UpdateRequest {..} =
Core.object
( Core.catMaybes
[("data" Core..=) Core.<$> data', Core.Just ("kind" Core..= kind)]
)
-- | This is a JSON template for an app state write result.
--
-- /See:/ 'newWriteResult' smart constructor.
data WriteResult = WriteResult
{ -- | The version of the data for this key on the server.
currentStateVersion :: (Core.Maybe Core.Text),
-- | Uniquely identifies the type of this resource. Value is always the fixed string appstate#writeResult.
kind :: Core.Text,
-- | The written key.
stateKey :: (Core.Maybe Core.Int32)
}
deriving (Core.Eq, Core.Show, Core.Generic)
-- | Creates a value of 'WriteResult' with the minimum fields required to make a request.
newWriteResult ::
WriteResult
newWriteResult =
WriteResult
{ currentStateVersion = Core.Nothing,
kind = "appstate#writeResult",
stateKey = Core.Nothing
}
instance Core.FromJSON WriteResult where
parseJSON =
Core.withObject
"WriteResult"
( \o ->
WriteResult
Core.<$> (o Core..:? "currentStateVersion")
Core.<*> (o Core..:? "kind" Core..!= "appstate#writeResult")
Core.<*> (o Core..:? "stateKey")
)
instance Core.ToJSON WriteResult where
toJSON WriteResult {..} =
Core.object
( Core.catMaybes
[ ("currentStateVersion" Core..=) Core.<$> currentStateVersion,
Core.Just ("kind" Core..= kind),
("stateKey" Core..=) Core.<$> stateKey
]
)