{-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} -- | Meta tags for The Open Graph protocol: https://ogp.me/ module Data.Structured.OpenGraph ( OpenGraph (..), OGType (..), Article (..), ) where import Data.Time (UTCTime) import Relude import qualified Text.URI as URI -- The OpenGraph metadata -- -- This type can be directly rendered to HTML using `toHTML`. data OpenGraph = OpenGraph { _openGraph_title :: Text, _openGraph_url :: Maybe URI.URI, _openGraph_author :: Maybe Text, _openGraph_description :: Maybe Text, _openGraph_siteName :: Text, _openGraph_type :: Maybe OGType, _openGraph_image :: Maybe URI.URI } deriving (Eq, Show) -- TODO: Remaining ADT values & sub-fields data OGType = OGType_Article Article | OGType_Website deriving (Eq, Show) -- TODO: _article_profile :: [Profile] data Article = Article { _article_section :: Maybe Text, _article_modifiedTime :: Maybe UTCTime, _article_publishedTime :: Maybe UTCTime, _article_expirationTime :: Maybe UTCTime, _article_tag :: [Text] } deriving (Eq, Show)