fedi/src/Fedi/UserDetails.hs

46 lines
1 KiB
Haskell

module Fedi.UserDetails (
module Fedi.UserDetails,
module Export,
) where
import Data.Aeson qualified as A
import Data.List as Export (find)
import Data.Maybe as Export (fromMaybe, listToMaybe, maybeToList)
import Data.String as Export (fromString)
import Data.Text as Export (Text)
import Data.Text qualified as T
import Data.Time as Export (UTCTime)
import GHC.Generics as Export (Generic)
type Url = String
type Domain = String
type Username = String
newtype Pem = Pem T.Text
deriving (Show)
deriving (A.FromJSON) via T.Text
instance A.ToJSON Pem where
toJSON (Pem pem) = A.String pem
data UserDetails
= UserDetails
{ domain :: Domain
, username :: String
, name :: String
, summary :: String
, icon :: Url
, image :: Url
, publicPem :: Pem
, privatePem :: FilePath
}
deriving (Show, Generic, A.FromJSON)
actorUrl :: UserDetails -> Url
actorUrl details =
"https://" <> details.domain <> "/" <> details.username
fullmention :: UserDetails -> String
fullmention details = "@" <> details.username <> "@" <> details.domain