{-# LANGUAGE MultiWayIf #-} -- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator. {-# LANGUAGE OverloadedStrings #-} -- | Contains the types generated from the schema FileLink module StripeAPI.Types.FileLink where import qualified Control.Monad.Fail import qualified Data.Aeson import qualified Data.Aeson as Data.Aeson.Encoding.Internal import qualified Data.Aeson as Data.Aeson.Types import qualified Data.Aeson as Data.Aeson.Types.FromJSON import qualified Data.Aeson as Data.Aeson.Types.Internal import qualified Data.Aeson as Data.Aeson.Types.ToJSON import qualified Data.ByteString.Char8 import qualified Data.ByteString.Char8 as Data.ByteString.Internal import qualified Data.Foldable import qualified Data.Functor import qualified Data.Maybe import qualified Data.Scientific import qualified Data.Text import qualified Data.Text.Internal import qualified Data.Time.Calendar as Data.Time.Calendar.Days import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime import qualified GHC.Base import qualified GHC.Classes import qualified GHC.Int import qualified GHC.Show import qualified GHC.Types import qualified StripeAPI.Common import StripeAPI.TypeAlias import {-# SOURCE #-} StripeAPI.Types.File import qualified Prelude as GHC.Integer.Type import qualified Prelude as GHC.Maybe -- | Defines the object schema located at @components.schemas.file_link@ in the specification. -- -- To share the contents of a \`File\` object with non-Stripe users, you can -- create a \`FileLink\`. \`FileLink\`s contain a URL that can be used to -- retrieve the contents of the file without authentication. data FileLink = FileLink { -- | created: Time at which the object was created. Measured in seconds since the Unix epoch. fileLinkCreated :: GHC.Types.Int, -- | expired: Whether this link is already expired. fileLinkExpired :: GHC.Types.Bool, -- | expires_at: Time at which the link expires. fileLinkExpiresAt :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable GHC.Types.Int)), -- | file: The file object this link points to. fileLinkFile :: FileLinkFile'Variants, -- | id: Unique identifier for the object. -- -- Constraints: -- -- * Maximum length of 5000 fileLinkId :: Data.Text.Internal.Text, -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode. fileLinkLivemode :: GHC.Types.Bool, -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. fileLinkMetadata :: Data.Aeson.Types.Internal.Object, -- | url: The publicly accessible URL to download the file. -- -- Constraints: -- -- * Maximum length of 5000 fileLinkUrl :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable Data.Text.Internal.Text)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON FileLink where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (["created" Data.Aeson.Types.ToJSON..= fileLinkCreated obj] : ["expired" Data.Aeson.Types.ToJSON..= fileLinkExpired obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("expires_at" Data.Aeson.Types.ToJSON..=)) (fileLinkExpiresAt obj) : ["file" Data.Aeson.Types.ToJSON..= fileLinkFile obj] : ["id" Data.Aeson.Types.ToJSON..= fileLinkId obj] : ["livemode" Data.Aeson.Types.ToJSON..= fileLinkLivemode obj] : ["metadata" Data.Aeson.Types.ToJSON..= fileLinkMetadata obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("url" Data.Aeson.Types.ToJSON..=)) (fileLinkUrl obj) : ["object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "file_link"] : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (["created" Data.Aeson.Types.ToJSON..= fileLinkCreated obj] : ["expired" Data.Aeson.Types.ToJSON..= fileLinkExpired obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("expires_at" Data.Aeson.Types.ToJSON..=)) (fileLinkExpiresAt obj) : ["file" Data.Aeson.Types.ToJSON..= fileLinkFile obj] : ["id" Data.Aeson.Types.ToJSON..= fileLinkId obj] : ["livemode" Data.Aeson.Types.ToJSON..= fileLinkLivemode obj] : ["metadata" Data.Aeson.Types.ToJSON..= fileLinkMetadata obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("url" Data.Aeson.Types.ToJSON..=)) (fileLinkUrl obj) : ["object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "file_link"] : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON FileLink where parseJSON = Data.Aeson.Types.FromJSON.withObject "FileLink" (\obj -> (((((((GHC.Base.pure FileLink GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "expired")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "expires_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "file")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "url")) -- | Create a new 'FileLink' with all required fields. mkFileLink :: -- | 'fileLinkCreated' GHC.Types.Int -> -- | 'fileLinkExpired' GHC.Types.Bool -> -- | 'fileLinkFile' FileLinkFile'Variants -> -- | 'fileLinkId' Data.Text.Internal.Text -> -- | 'fileLinkLivemode' GHC.Types.Bool -> -- | 'fileLinkMetadata' Data.Aeson.Types.Internal.Object -> FileLink mkFileLink fileLinkCreated fileLinkExpired fileLinkFile fileLinkId fileLinkLivemode fileLinkMetadata = FileLink { fileLinkCreated = fileLinkCreated, fileLinkExpired = fileLinkExpired, fileLinkExpiresAt = GHC.Maybe.Nothing, fileLinkFile = fileLinkFile, fileLinkId = fileLinkId, fileLinkLivemode = fileLinkLivemode, fileLinkMetadata = fileLinkMetadata, fileLinkUrl = GHC.Maybe.Nothing } -- | Defines the oneOf schema located at @components.schemas.file_link.properties.file.anyOf@ in the specification. -- -- The file object this link points to. data FileLinkFile'Variants = FileLinkFile'Text Data.Text.Internal.Text | FileLinkFile'File File deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON FileLinkFile'Variants where toJSON (FileLinkFile'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (FileLinkFile'File a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON FileLinkFile'Variants where parseJSON val = case (FileLinkFile'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((FileLinkFile'File Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched") of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail a