{-# 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.Fonts.Internal.Product -- Copyright : (c) 2015-2025 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Toni Cebrián -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Gogol.Fonts.Internal.Product ( -- * Axis Axis (..), newAxis, -- * Webfont Webfont (..), newWebfont, -- * Webfont_Files Webfont_Files (..), newWebfont_Files, -- * WebfontList WebfontList (..), newWebfontList, ) where import Gogol.Fonts.Internal.Sum import Gogol.Prelude qualified as Core -- | Metadata for a variable font axis. -- -- /See:/ 'newAxis' smart constructor. data Axis = Axis { -- | maximum value end :: (Core.Maybe Core.Double), -- | minimum value start :: (Core.Maybe Core.Double), -- | tag name. tag :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Axis' with the minimum fields required to make a request. newAxis :: Axis newAxis = Axis { end = Core.Nothing, start = Core.Nothing, tag = Core.Nothing } instance Core.FromJSON Axis where parseJSON = Core.withObject "Axis" ( \o -> Axis Core.<$> (o Core..:? "end") Core.<*> (o Core..:? "start") Core.<*> (o Core..:? "tag") ) instance Core.ToJSON Axis where toJSON Axis {..} = Core.object ( Core.catMaybes [ ("end" Core..=) Core.<$> end, ("start" Core..=) Core.<$> start, ("tag" Core..=) Core.<$> tag ] ) -- | Metadata describing a family of fonts. -- -- /See:/ 'newWebfont' smart constructor. data Webfont = Webfont { -- | Axis for variable fonts. axes :: (Core.Maybe [Axis]), -- | The category of the font. category :: (Core.Maybe Core.Text), -- | The color format(s) available for this family. colorCapabilities :: (Core.Maybe [Core.Text]), -- | The name of the font. family :: (Core.Maybe Core.Text), -- | The font files (with all supported scripts) for each one of the available variants, as a key : value map. files :: (Core.Maybe Webfont_Files), -- | This kind represents a webfont object in the webfonts service. kind :: (Core.Maybe Core.Text), -- | The date (format \"yyyy-MM-dd\") the font was modified for the last time. lastModified :: (Core.Maybe Core.Text), -- | Font URL for menu subset, a subset of the font that is enough to display the font name menu :: (Core.Maybe Core.Text), -- | The scripts supported by the font. subsets :: (Core.Maybe [Core.Text]), -- | The available variants for the font. variants :: (Core.Maybe [Core.Text]), -- | The font version. version :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Webfont' with the minimum fields required to make a request. newWebfont :: Webfont newWebfont = Webfont { axes = Core.Nothing, category = Core.Nothing, colorCapabilities = Core.Nothing, family = Core.Nothing, files = Core.Nothing, kind = Core.Nothing, lastModified = Core.Nothing, menu = Core.Nothing, subsets = Core.Nothing, variants = Core.Nothing, version = Core.Nothing } instance Core.FromJSON Webfont where parseJSON = Core.withObject "Webfont" ( \o -> Webfont Core.<$> (o Core..:? "axes") Core.<*> (o Core..:? "category") Core.<*> (o Core..:? "colorCapabilities") Core.<*> (o Core..:? "family") Core.<*> (o Core..:? "files") Core.<*> (o Core..:? "kind") Core.<*> (o Core..:? "lastModified") Core.<*> (o Core..:? "menu") Core.<*> (o Core..:? "subsets") Core.<*> (o Core..:? "variants") Core.<*> (o Core..:? "version") ) instance Core.ToJSON Webfont where toJSON Webfont {..} = Core.object ( Core.catMaybes [ ("axes" Core..=) Core.<$> axes, ("category" Core..=) Core.<$> category, ("colorCapabilities" Core..=) Core.<$> colorCapabilities, ("family" Core..=) Core.<$> family, ("files" Core..=) Core.<$> files, ("kind" Core..=) Core.<$> kind, ("lastModified" Core..=) Core.<$> lastModified, ("menu" Core..=) Core.<$> menu, ("subsets" Core..=) Core.<$> subsets, ("variants" Core..=) Core.<$> variants, ("version" Core..=) Core.<$> version ] ) -- | The font files (with all supported scripts) for each one of the available variants, as a key : value map. -- -- /See:/ 'newWebfont_Files' smart constructor. newtype Webfont_Files = Webfont_Files { additional :: (Core.HashMap Core.Text Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'Webfont_Files' with the minimum fields required to make a request. newWebfont_Files :: -- | See 'additional'. Core.HashMap Core.Text Core.Text -> Webfont_Files newWebfont_Files additional = Webfont_Files {additional = additional} instance Core.FromJSON Webfont_Files where parseJSON = Core.withObject "Webfont_Files" (\o -> Webfont_Files Core.<$> (Core.parseJSONObject o)) instance Core.ToJSON Webfont_Files where toJSON Webfont_Files {..} = Core.toJSON additional -- | Response containing the list of fonts currently served by the Google Fonts API. -- -- /See:/ 'newWebfontList' smart constructor. data WebfontList = WebfontList { -- | The list of fonts currently served by the Google Fonts API. items :: (Core.Maybe [Webfont]), -- | This kind represents a list of webfont objects in the webfonts service. kind :: (Core.Maybe Core.Text) } deriving (Core.Eq, Core.Show, Core.Generic) -- | Creates a value of 'WebfontList' with the minimum fields required to make a request. newWebfontList :: WebfontList newWebfontList = WebfontList {items = Core.Nothing, kind = Core.Nothing} instance Core.FromJSON WebfontList where parseJSON = Core.withObject "WebfontList" ( \o -> WebfontList Core.<$> (o Core..:? "items") Core.<*> (o Core..:? "kind") ) instance Core.ToJSON WebfontList where toJSON WebfontList {..} = Core.object ( Core.catMaybes [("items" Core..=) Core.<$> items, ("kind" Core..=) Core.<$> kind] )